Compare commits
998 Commits
photos-v0.
...
auth-v4.2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a527a15f5 | ||
|
|
ab3589a2b1 | ||
|
|
6df88cda36 | ||
|
|
d2b16bd84b | ||
|
|
d08bb5ea11 | ||
|
|
a1779af68d | ||
|
|
0c690efc38 | ||
|
|
975eabab60 | ||
|
|
82225a0f2a | ||
|
|
36afb54925 | ||
|
|
61e8a86ca5 | ||
|
|
cdff3b8099 | ||
|
|
1e792e392e | ||
|
|
379622a986 | ||
|
|
cf9711580c | ||
|
|
2661a99dae | ||
|
|
8afb88d7dc | ||
|
|
6ed24b413b | ||
|
|
c912776273 | ||
|
|
fee24b331e | ||
|
|
3ab14e106c | ||
|
|
95010eb8c8 | ||
|
|
e33394129f | ||
|
|
c2803fd7c0 | ||
|
|
72b78aa3ab | ||
|
|
46f2d33281 | ||
|
|
ef159540db | ||
|
|
b9f519d4ad | ||
|
|
c79400c6d5 | ||
|
|
d99d6eedc5 | ||
|
|
d691dff28c | ||
|
|
f7ee2512aa | ||
|
|
6ca447f730 | ||
|
|
08e05d513f | ||
|
|
3999115b3a | ||
|
|
cc1037afa8 | ||
|
|
1190b570ac | ||
|
|
d8a5fbce22 | ||
|
|
e1316b443e | ||
|
|
f64edf088a | ||
|
|
ebdccfad14 | ||
|
|
8fa18e9993 | ||
|
|
50245fd6ea | ||
|
|
fe16c0128e | ||
|
|
ff787fde99 | ||
|
|
0251144b11 | ||
|
|
2f673be3b3 | ||
|
|
51e8cba473 | ||
|
|
a8f5281e93 | ||
|
|
3d999b3fcb | ||
|
|
d249346f28 | ||
|
|
c718ecee10 | ||
|
|
8385ae40e2 | ||
|
|
9fc544d4b1 | ||
|
|
3c169ec452 | ||
|
|
787a4c9684 | ||
|
|
73674259f2 | ||
|
|
eb635bc3b3 | ||
|
|
025982c149 | ||
|
|
f2b5a39ca9 | ||
|
|
eec79447dc | ||
|
|
7ffdcb4f13 | ||
|
|
da79d1fad3 | ||
|
|
018d91d5d1 | ||
|
|
49d5be35c2 | ||
|
|
81bf43e269 | ||
|
|
6dc59e35e6 | ||
|
|
023c5185ce | ||
|
|
54f9908eff | ||
|
|
d8118d10dc | ||
|
|
5bd0d3369d | ||
|
|
8263eb3912 | ||
|
|
a5fc5a75a8 | ||
|
|
9306a4df57 | ||
|
|
df30a3e768 | ||
|
|
4056787721 | ||
|
|
18f398f6c2 | ||
|
|
69911f6c02 | ||
|
|
b94f9c9616 | ||
|
|
c18dec516a | ||
|
|
1c4581d56d | ||
|
|
63ad770f39 | ||
|
|
a483a20112 | ||
|
|
b23f9a1a88 | ||
|
|
41e90ce3b6 | ||
|
|
719f548185 | ||
|
|
ee4cf8885d | ||
|
|
3436cfc266 | ||
|
|
2c5d5f8d35 | ||
|
|
d8e7415c36 | ||
|
|
b97c2ccedb | ||
|
|
cbf221500a | ||
|
|
4e9e50fc4b | ||
|
|
8db5efd5aa | ||
|
|
d51d8f190a | ||
|
|
21c6e1eae2 | ||
|
|
c9c36f7419 | ||
|
|
efcc7b6342 | ||
|
|
ea2e9f1fd4 | ||
|
|
b78efd441d | ||
|
|
d87f8e04ee | ||
|
|
d2a787acbe | ||
|
|
b781e5a536 | ||
|
|
2b72cd718e | ||
|
|
9618cd64c1 | ||
|
|
874a7121b2 | ||
|
|
1ea632d3e7 | ||
|
|
c322bc7b04 | ||
|
|
705a93e6d6 | ||
|
|
6967fa4caf | ||
|
|
54d3e8f7f5 | ||
|
|
46d0a6f1c8 | ||
|
|
96f3c7dd45 | ||
|
|
86c6836dc6 | ||
|
|
0168e1d851 | ||
|
|
563df12262 | ||
|
|
625be594d6 | ||
|
|
c0ce7a97b1 | ||
|
|
563834a8fd | ||
|
|
bb0294ef64 | ||
|
|
2368225578 | ||
|
|
6a263e2176 | ||
|
|
642c9e611b | ||
|
|
fdded49bda | ||
|
|
17dd67afc0 | ||
|
|
ad5cad8e97 | ||
|
|
5d7ca1ac44 | ||
|
|
c8b64f585c | ||
|
|
6db59247cd | ||
|
|
96305adedc | ||
|
|
6bef1d2e20 | ||
|
|
0a8f7a995b | ||
|
|
d8c68ed0ee | ||
|
|
683506a54e | ||
|
|
50350c6cc7 | ||
|
|
43bc1b1374 | ||
|
|
a859386edb | ||
|
|
fa9ba408a3 | ||
|
|
f3efad60f3 | ||
|
|
287add7bb7 | ||
|
|
f00bc2ca5b | ||
|
|
5e28110fc9 | ||
|
|
b921ca7493 | ||
|
|
c9b0b1ceea | ||
|
|
bfaae99aaf | ||
|
|
cce6562a4d | ||
|
|
2c56f7e8c8 | ||
|
|
39103e6937 | ||
|
|
ea417bd46a | ||
|
|
5f33fe9215 | ||
|
|
fe9cccd3ab | ||
|
|
623bb66fa7 | ||
|
|
efb15e3866 | ||
|
|
f46a0befdf | ||
|
|
1d5af6f3bc | ||
|
|
784073df7f | ||
|
|
f3852948c8 | ||
|
|
02a1679255 | ||
|
|
1570cf9745 | ||
|
|
df8108f027 | ||
|
|
15dbd9ee3e | ||
|
|
a453668138 | ||
|
|
60c136d9a9 | ||
|
|
ef5856abe4 | ||
|
|
6123d00361 | ||
|
|
e4990d1fd5 | ||
|
|
485f0e25a7 | ||
|
|
107cfe53bf | ||
|
|
2c2b8c1522 | ||
|
|
fb9f99bc1c | ||
|
|
35a47828e9 | ||
|
|
940f91e4e1 | ||
|
|
a6e16092f9 | ||
|
|
6db07c30e2 | ||
|
|
dd41b1fb29 | ||
|
|
3302a8a6ca | ||
|
|
830185a089 | ||
|
|
e9153635ea | ||
|
|
5da89e0e65 | ||
|
|
a52a159691 | ||
|
|
e47accb866 | ||
|
|
bd7e300959 | ||
|
|
5456a17e04 | ||
|
|
f0d7343a69 | ||
|
|
81d031d03e | ||
|
|
1a3b51eb0e | ||
|
|
baa44d98d1 | ||
|
|
307a8bba88 | ||
|
|
404706f1ef | ||
|
|
c49aeb0be8 | ||
|
|
feb9414636 | ||
|
|
54be847f80 | ||
|
|
0a6121e1fa | ||
|
|
fec2de85ad | ||
|
|
719c7bb636 | ||
|
|
a1c6e559d4 | ||
|
|
d2c1255a1c | ||
|
|
b37a08ad1e | ||
|
|
1c43ca4123 | ||
|
|
c0a3abb0ed | ||
|
|
71dab9b5ac | ||
|
|
7aa476b19d | ||
|
|
5c42d797c7 | ||
|
|
cfa8054091 | ||
|
|
2d34e9e97c | ||
|
|
8fed95f3dc | ||
|
|
0b4e225ccc | ||
|
|
6730953958 | ||
|
|
0db5370dea | ||
|
|
065bc85cad | ||
|
|
132c270136 | ||
|
|
74373037fc | ||
|
|
921b8881ce | ||
|
|
9152960be0 | ||
|
|
c9685c97b5 | ||
|
|
188bb4a9f4 | ||
|
|
5655b0e55b | ||
|
|
ae0654fce4 | ||
|
|
8ab6109a77 | ||
|
|
acc8f6974a | ||
|
|
e2f62a390d | ||
|
|
60fcba38cc | ||
|
|
7d12141199 | ||
|
|
228e1b17e4 | ||
|
|
4e6ff712a2 | ||
|
|
0c344baf14 | ||
|
|
72e39a23da | ||
|
|
762f6d6f1d | ||
|
|
e4bbac174a | ||
|
|
0724a26986 | ||
|
|
55a3eddb34 | ||
|
|
5754e77b20 | ||
|
|
4004ceb8b1 | ||
|
|
8692b22da1 | ||
|
|
106acba45d | ||
|
|
1b97fc24d8 | ||
|
|
52450de36a | ||
|
|
71038a7e28 | ||
|
|
61b42a0f1a | ||
|
|
8656f698c0 | ||
|
|
db4b560a3c | ||
|
|
ac3fbf8cb1 | ||
|
|
af56da987e | ||
|
|
a33f5b83d5 | ||
|
|
3fb60c17c9 | ||
|
|
645023a76d | ||
|
|
8d804940b3 | ||
|
|
7c4fe3c61b | ||
|
|
60fadbb465 | ||
|
|
50aff81d18 | ||
|
|
a692a7b70c | ||
|
|
fb7a441efe | ||
|
|
50c65125a7 | ||
|
|
0488e5013d | ||
|
|
5cd0a654bb | ||
|
|
ac92f564fa | ||
|
|
ff7763934e | ||
|
|
f6ca19babc | ||
|
|
38d7438dc4 | ||
|
|
2cee052f3f | ||
|
|
af42576e45 | ||
|
|
6f63158699 | ||
|
|
2c41efb672 | ||
|
|
aac9c73d05 | ||
|
|
92eab74917 | ||
|
|
ead2b3d3d6 | ||
|
|
c24bb97762 | ||
|
|
c7a59eb880 | ||
|
|
16e1ab2049 | ||
|
|
e5d2b21a97 | ||
|
|
0f1a6a29fe | ||
|
|
e0af77181d | ||
|
|
fe0d7417af | ||
|
|
a6d420bbaa | ||
|
|
456c52c175 | ||
|
|
b374ee1e99 | ||
|
|
7c44a160a0 | ||
|
|
15283cbc73 | ||
|
|
b5c7e9d6ac | ||
|
|
ec5a1d9359 | ||
|
|
e13797e02e | ||
|
|
c608550534 | ||
|
|
2083632c20 | ||
|
|
6898f0dbcb | ||
|
|
48a0bce211 | ||
|
|
d262503b75 | ||
|
|
af533ebc1d | ||
|
|
65d144be77 | ||
|
|
44ffb99b0b | ||
|
|
93cc5cc8a2 | ||
|
|
7062aacf35 | ||
|
|
d24555314d | ||
|
|
e2d72c71b4 | ||
|
|
5a593c27b0 | ||
|
|
ebe35c285b | ||
|
|
99405ebc2e | ||
|
|
9e901c78ef | ||
|
|
167d2c5d29 | ||
|
|
9b9112ba4a | ||
|
|
c16289fca9 | ||
|
|
ca0deb60e7 | ||
|
|
e8cebdc2c7 | ||
|
|
9bd78de4cd | ||
|
|
55744a9be3 | ||
|
|
6325e3f886 | ||
|
|
ad0de74721 | ||
|
|
1058dd89fb | ||
|
|
f60ea405a6 | ||
|
|
86c8b4d6b6 | ||
|
|
fddc7961ad | ||
|
|
5bf9b63bc9 | ||
|
|
d0d1578b1a | ||
|
|
291d62ca0e | ||
|
|
e9dfb77109 | ||
|
|
34caf1f56e | ||
|
|
fb3cb54c93 | ||
|
|
b36faca264 | ||
|
|
1d803552da | ||
|
|
645171ae9d | ||
|
|
161c2c1df6 | ||
|
|
7adb64f0f5 | ||
|
|
f7596c6cca | ||
|
|
b5cc2ed9d8 | ||
|
|
de885e45ef | ||
|
|
8f5cb7681e | ||
|
|
d24c46610d | ||
|
|
cbe46c4def | ||
|
|
1ea6b7fc8e | ||
|
|
ada7550035 | ||
|
|
ba83c66ba6 | ||
|
|
fc10e46a0b | ||
|
|
928a7237a7 | ||
|
|
64762b8810 | ||
|
|
742645fff4 | ||
|
|
8589fbe97c | ||
|
|
5abbcd4228 | ||
|
|
43c464120f | ||
|
|
61d89e01b8 | ||
|
|
0eb01f9cf4 | ||
|
|
5e3323275d | ||
|
|
1ca478af84 | ||
|
|
61ec736df8 | ||
|
|
fa9663dbf7 | ||
|
|
32a47b4020 | ||
|
|
9544ffee9a | ||
|
|
79c2ad89c5 | ||
|
|
7b45d0aa9e | ||
|
|
8c3fff8015 | ||
|
|
79e059ccc2 | ||
|
|
4a47305a54 | ||
|
|
9c6f0b7ee6 | ||
|
|
670a75048e | ||
|
|
180f7d842b | ||
|
|
2b97899562 | ||
|
|
af4229d551 | ||
|
|
ac10ce7bff | ||
|
|
7c21f9ddb2 | ||
|
|
1999ce4aaa | ||
|
|
d17dbe4115 | ||
|
|
c38947c14c | ||
|
|
6a01cda379 | ||
|
|
f1d8b022f7 | ||
|
|
859bf63685 | ||
|
|
5752463360 | ||
|
|
2b14f9150f | ||
|
|
3aa3ab37c2 | ||
|
|
f34624e0d2 | ||
|
|
e569a25f87 | ||
|
|
be7f4b7107 | ||
|
|
e4b7089d5e | ||
|
|
3172bc613c | ||
|
|
4d5b44a4c1 | ||
|
|
afe7705355 | ||
|
|
52c0bcb6cf | ||
|
|
d4b36cb698 | ||
|
|
e74d705446 | ||
|
|
f13b80be1d | ||
|
|
b94332aaa7 | ||
|
|
220d4eb4a6 | ||
|
|
f8b17f52d5 | ||
|
|
4d6d5a0037 | ||
|
|
4ce934a0f9 | ||
|
|
69d0893c43 | ||
|
|
e210b22efd | ||
|
|
084fb5bbed | ||
|
|
7510be7453 | ||
|
|
9790148ba9 | ||
|
|
cf93f80c0c | ||
|
|
b5418ea2e4 | ||
|
|
c65a34e180 | ||
|
|
d427374e99 | ||
|
|
72ddc812bd | ||
|
|
d0ab487f31 | ||
|
|
a5156db967 | ||
|
|
a44a3183d3 | ||
|
|
5af93fbbcb | ||
|
|
438f4e6f50 | ||
|
|
53ff75bff6 | ||
|
|
83432f2a7c | ||
|
|
c1d0f9445d | ||
|
|
b43b2410e9 | ||
|
|
3e4ca320c9 | ||
|
|
ef482c4b49 | ||
|
|
3bea29f83b | ||
|
|
9295b15cd8 | ||
|
|
3ba62669df | ||
|
|
b59e97cb6c | ||
|
|
b6fa5c5b44 | ||
|
|
c52a62d944 | ||
|
|
8d1a800cf4 | ||
|
|
83cfd470d0 | ||
|
|
4e46d8da42 | ||
|
|
7e298b8d1d | ||
|
|
35fb4e8d58 | ||
|
|
637eabaae2 | ||
|
|
7a39b6c75c | ||
|
|
d07f6f8ee1 | ||
|
|
b5d4b848fd | ||
|
|
44f7872707 | ||
|
|
b33e4ea977 | ||
|
|
a11ea3b41b | ||
|
|
f967b6b00e | ||
|
|
6a3ef27408 | ||
|
|
446556967d | ||
|
|
cf56776245 | ||
|
|
ec3213040c | ||
|
|
a0d2573a04 | ||
|
|
afd8d4caac | ||
|
|
dc494c02c4 | ||
|
|
333a71a4a1 | ||
|
|
05f80f2bdd | ||
|
|
f82e48e754 | ||
|
|
cbf2947b0f | ||
|
|
a052342ec4 | ||
|
|
913baf994a | ||
|
|
e6171dbec4 | ||
|
|
1952e5278d | ||
|
|
c5019da4bd | ||
|
|
acb898ecf9 | ||
|
|
aea531ee21 | ||
|
|
22c4a50c2b | ||
|
|
4609d395c7 | ||
|
|
8296c81742 | ||
|
|
290716e8ca | ||
|
|
a1afd8155c | ||
|
|
f96a336b4b | ||
|
|
a6600b4718 | ||
|
|
232f793fb0 | ||
|
|
ce0798fbec | ||
|
|
7cbc5ffb2d | ||
|
|
88ac10d96c | ||
|
|
0a7fd03df7 | ||
|
|
9b47595f2c | ||
|
|
af5e072ea5 | ||
|
|
2bc9251a09 | ||
|
|
12a19a484c | ||
|
|
8906cb2a1d | ||
|
|
6f936a42c4 | ||
|
|
497e546129 | ||
|
|
2736ab5334 | ||
|
|
f04b8ffce6 | ||
|
|
b7f33233d9 | ||
|
|
6dffb1f289 | ||
|
|
5a131e7f83 | ||
|
|
2138ef602a | ||
|
|
6adadcaf93 | ||
|
|
0ce4ed494d | ||
|
|
77257aa6ab | ||
|
|
184bb6ec6c | ||
|
|
2e7e9c1ca8 | ||
|
|
7ef3a7a726 | ||
|
|
fbf27b4544 | ||
|
|
67ba7614db | ||
|
|
b05e675820 | ||
|
|
ff3033f1ae | ||
|
|
4dda92219a | ||
|
|
53618d0e1f | ||
|
|
0642e41a2e | ||
|
|
0be4aed185 | ||
|
|
ef93482523 | ||
|
|
bb161ad3a9 | ||
|
|
bf7be69c3d | ||
|
|
82358812bd | ||
|
|
e52e61c0af | ||
|
|
17ea9dfaaa | ||
|
|
6e045affa4 | ||
|
|
1232b956c9 | ||
|
|
9a284f916f | ||
|
|
df321f9dea | ||
|
|
543411254b | ||
|
|
a3b9b6bb90 | ||
|
|
5b9e1abec3 | ||
|
|
a1e97239c3 | ||
|
|
2f372cdbe1 | ||
|
|
9910049d1d | ||
|
|
fe2771f2e0 | ||
|
|
2e517535b3 | ||
|
|
e459fb5686 | ||
|
|
9498571c10 | ||
|
|
f2a9675911 | ||
|
|
ede505d939 | ||
|
|
65a92f1a77 | ||
|
|
56cdb9064d | ||
|
|
7ddf70eb86 | ||
|
|
6592ddedfd | ||
|
|
1b74049eb5 | ||
|
|
568377d4e7 | ||
|
|
4bd416fd10 | ||
|
|
634ae71a5d | ||
|
|
0ae1557508 | ||
|
|
93071af19a | ||
|
|
ab15263a17 | ||
|
|
d2d02f3591 | ||
|
|
1e79409f73 | ||
|
|
866d2bb00a | ||
|
|
1832005d72 | ||
|
|
b054c070ad | ||
|
|
64a47694d0 | ||
|
|
8af02aa4c8 | ||
|
|
a4e09a40e8 | ||
|
|
82fc1a1434 | ||
|
|
b511aeb401 | ||
|
|
6812527607 | ||
|
|
2263eb684c | ||
|
|
8df68cf529 | ||
|
|
ba11a5a755 | ||
|
|
e31b55499b | ||
|
|
89f917220d | ||
|
|
fad26a960d | ||
|
|
6e3d285428 | ||
|
|
2198eeb372 | ||
|
|
184c044377 | ||
|
|
63d41434a9 | ||
|
|
310f180c5a | ||
|
|
5da05467d6 | ||
|
|
a2decb5030 | ||
|
|
6f891a45de | ||
|
|
4e7d764722 | ||
|
|
9aae713207 | ||
|
|
17aa1b67c1 | ||
|
|
5e22c95bfb | ||
|
|
182fd89356 | ||
|
|
6516b457cb | ||
|
|
bf78b2e671 | ||
|
|
58afaa9405 | ||
|
|
1bffbdad03 | ||
|
|
267d5cef65 | ||
|
|
d391db2dd5 | ||
|
|
8a222d9dc4 | ||
|
|
cf4c20f2d3 | ||
|
|
28c29a0c3a | ||
|
|
3de1c8011a | ||
|
|
7adb166fad | ||
|
|
6447ba6ec0 | ||
|
|
258cdca69b | ||
|
|
2a19c30d0e | ||
|
|
d23c22762b | ||
|
|
bf9d0e3d6b | ||
|
|
a818f062b1 | ||
|
|
f57f1a8636 | ||
|
|
da78c45b1d | ||
|
|
3429a9f3d6 | ||
|
|
cdbd86d63c | ||
|
|
69e1aa18e6 | ||
|
|
6f2079c7c6 | ||
|
|
a14358416a | ||
|
|
57c353a443 | ||
|
|
dd7cea1f96 | ||
|
|
6d2a223acf | ||
|
|
eca0137426 | ||
|
|
e1e2c528c4 | ||
|
|
28ab3c321c | ||
|
|
5c2c6b2a84 | ||
|
|
4ae0683c62 | ||
|
|
0a6740bb2e | ||
|
|
b026020485 | ||
|
|
b71fa478b9 | ||
|
|
b9c992cae0 | ||
|
|
2845d7bfeb | ||
|
|
b09d6ab2a6 | ||
|
|
94ce77c07b | ||
|
|
a292f01187 | ||
|
|
aae2632b19 | ||
|
|
746c85bc9f | ||
|
|
adeab53d3b | ||
|
|
3e23ff9c9b | ||
|
|
dca6e02286 | ||
|
|
daf3fd2a75 | ||
|
|
f5a3b8a3fb | ||
|
|
7cd1ce0a99 | ||
|
|
1b863005ea | ||
|
|
b580756e6b | ||
|
|
26fb47c165 | ||
|
|
3f21011392 | ||
|
|
7348170a36 | ||
|
|
3919fb0db2 | ||
|
|
ad6a0e9c31 | ||
|
|
be3896826d | ||
|
|
268550f292 | ||
|
|
68e557124c | ||
|
|
96863923d1 | ||
|
|
a22b0aec58 | ||
|
|
93e26c6caf | ||
|
|
8a8f5c20c6 | ||
|
|
3c7b6694e9 | ||
|
|
c37d85f6c5 | ||
|
|
e0abb2de9c | ||
|
|
b73ba4a22f | ||
|
|
912279e3cf | ||
|
|
5a0bab9304 | ||
|
|
a9cd56c4ce | ||
|
|
5b4028378b | ||
|
|
57bd5b9d17 | ||
|
|
2bd074bd79 | ||
|
|
a8d831364d | ||
|
|
21f0602161 | ||
|
|
1ac2d60c7b | ||
|
|
a098481b98 | ||
|
|
472339cafb | ||
|
|
d24f5bcee7 | ||
|
|
bd0e8e6fe6 | ||
|
|
c9d2a0a4ca | ||
|
|
1a6eb26f2b | ||
|
|
7c2fce2ebe | ||
|
|
e90871ea6b | ||
|
|
3ca78cac35 | ||
|
|
49ddfdfde5 | ||
|
|
bc76864587 | ||
|
|
4f1d3c23f5 | ||
|
|
cc674183cd | ||
|
|
86bd098406 | ||
|
|
e5fe3a7255 | ||
|
|
df68d3f005 | ||
|
|
9a6a46fd0d | ||
|
|
14c9929451 | ||
|
|
54f9bd880a | ||
|
|
aaa636345c | ||
|
|
6f3e02888e | ||
|
|
42a8b5c826 | ||
|
|
24674f6da6 | ||
|
|
90b45665f5 | ||
|
|
8a217a292b | ||
|
|
047fede844 | ||
|
|
e77b557990 | ||
|
|
c2bfcf23c0 | ||
|
|
646a012734 | ||
|
|
21332c6b92 | ||
|
|
f9c101241e | ||
|
|
bc6f147f5e | ||
|
|
fbaa360741 | ||
|
|
4029398351 | ||
|
|
7602d48bd9 | ||
|
|
f28d50ace6 | ||
|
|
b026b30172 | ||
|
|
977f5c21a6 | ||
|
|
dafbf23d67 | ||
|
|
d9bc6597c0 | ||
|
|
913a80591b | ||
|
|
26c0a8e1d5 | ||
|
|
2e2c972a84 | ||
|
|
748dd2b0e2 | ||
|
|
dbb376056d | ||
|
|
b31fc5cbe9 | ||
|
|
cb76ba7560 | ||
|
|
e915ded2de | ||
|
|
eedc538283 | ||
|
|
294b333d0e | ||
|
|
8f705f2f72 | ||
|
|
c5c0ee5ddf | ||
|
|
5f43f03a65 | ||
|
|
aa62f4003c | ||
|
|
6c5dbc3696 | ||
|
|
1bef409552 | ||
|
|
62155040da | ||
|
|
592dc26d8b | ||
|
|
1af1c3f196 | ||
|
|
6f077310c1 | ||
|
|
905fc2ad78 | ||
|
|
e6e4f313de | ||
|
|
1ae8caa917 | ||
|
|
209228326d | ||
|
|
0533f99313 | ||
|
|
545cf40710 | ||
|
|
8ae8ed20fe | ||
|
|
0df0126af4 | ||
|
|
60ad6ef713 | ||
|
|
fc626c1287 | ||
|
|
4035e364df | ||
|
|
791ec10a0f | ||
|
|
87ab805cf7 | ||
|
|
447bb72556 | ||
|
|
c07e2f1387 | ||
|
|
151a0b3ab7 | ||
|
|
cf15d68bd2 | ||
|
|
e4a05edc12 | ||
|
|
879d6571bc | ||
|
|
2496350fad | ||
|
|
653a7f22ef | ||
|
|
6071df2083 | ||
|
|
f6e93ab060 | ||
|
|
ddc9dfe552 | ||
|
|
b9b87c1570 | ||
|
|
3a413524f8 | ||
|
|
4830451d4e | ||
|
|
4cb11f4b06 | ||
|
|
150faa5d84 | ||
|
|
9b15102058 | ||
|
|
548b4e7a08 | ||
|
|
25bb175ff7 | ||
|
|
37cbef01fe | ||
|
|
ec7b61c36a | ||
|
|
85735b4ff0 | ||
|
|
8029829d9b | ||
|
|
87c5f05f84 | ||
|
|
356b2542c9 | ||
|
|
dc3329368e | ||
|
|
92868dccb4 | ||
|
|
49942909b0 | ||
|
|
b36c8de417 | ||
|
|
a0335b82c6 | ||
|
|
01cbf29217 | ||
|
|
7c464a0d60 | ||
|
|
8c20f5f660 | ||
|
|
671199e286 | ||
|
|
6805ee1a2a | ||
|
|
fd8246705c | ||
|
|
65e1745aa0 | ||
|
|
c6c3b1f9bd | ||
|
|
175467267a | ||
|
|
9756c178bf | ||
|
|
af420a8fc3 | ||
|
|
9a5d977419 | ||
|
|
d4ae5c118b | ||
|
|
605fda2710 | ||
|
|
0181693736 | ||
|
|
5c92d093ca | ||
|
|
a6c9a153e7 | ||
|
|
613f7294e1 | ||
|
|
facd05bd89 | ||
|
|
4bbe71e135 | ||
|
|
5583902433 | ||
|
|
664c723c78 | ||
|
|
9b35fe04b9 | ||
|
|
34068d09ba | ||
|
|
c23b22cc5b | ||
|
|
065382ddd2 | ||
|
|
5a72686e53 | ||
|
|
8c5b77cd52 | ||
|
|
d30dce0896 | ||
|
|
c453827cc8 | ||
|
|
1068b6811f | ||
|
|
09fe2c6f7e | ||
|
|
a31803e3f5 | ||
|
|
2ec8ae34b8 | ||
|
|
3263542f5e | ||
|
|
a302f986d7 | ||
|
|
69ccf7d3c9 | ||
|
|
76308cc9d0 | ||
|
|
1d02732719 | ||
|
|
55fa86a6c8 | ||
|
|
39fad29bc8 | ||
|
|
2ebe8712e8 | ||
|
|
1f7176cea2 | ||
|
|
bede7559be | ||
|
|
77563a7483 | ||
|
|
37df79314a | ||
|
|
fc5d1f931c | ||
|
|
243948f182 | ||
|
|
ddc953045b | ||
|
|
f74f285b7f | ||
|
|
2a4a886fca | ||
|
|
43e3e44e5c | ||
|
|
09cc226511 | ||
|
|
d9f62b8956 | ||
|
|
a691745ef7 | ||
|
|
108e984f29 | ||
|
|
fbbb8edce1 | ||
|
|
72dd4949ce | ||
|
|
948b869bea | ||
|
|
3cde395f42 | ||
|
|
05165728f1 | ||
|
|
42f2bb819b | ||
|
|
6b28aa1652 | ||
|
|
d167da02d5 | ||
|
|
34fe3bee7f | ||
|
|
4bfa398312 | ||
|
|
5920999bf4 | ||
|
|
7559ab4236 | ||
|
|
44d2f66260 | ||
|
|
ae3b4604e9 | ||
|
|
7b32ace2d9 | ||
|
|
29052e2888 | ||
|
|
b18d8bb5e6 | ||
|
|
91aea808f5 | ||
|
|
a6590c29d5 | ||
|
|
b139dea7ff | ||
|
|
80857d5441 | ||
|
|
1fb9a7e6c4 | ||
|
|
2bc1c90637 | ||
|
|
23a33610ee | ||
|
|
a6cd937347 | ||
|
|
7f3d0a5328 | ||
|
|
40d938b6a3 | ||
|
|
423a669cff | ||
|
|
4546d60e61 | ||
|
|
735f5e3d3c | ||
|
|
7cf7443177 | ||
|
|
d66aa25ee7 | ||
|
|
0d920a35e7 | ||
|
|
38860d91d3 | ||
|
|
941b326328 | ||
|
|
6851d0fae5 | ||
|
|
42dc8a451b | ||
|
|
8e2f052ac3 | ||
|
|
087f34304b | ||
|
|
427c5b4d7d | ||
|
|
bf3a47826b | ||
|
|
423ebc6588 | ||
|
|
9a89153563 | ||
|
|
606e3013f7 | ||
|
|
653ae485a9 | ||
|
|
f681c956ea | ||
|
|
4422b4a7b0 | ||
|
|
926b5de6cd | ||
|
|
41de48c454 | ||
|
|
2f3f48f4db | ||
|
|
71ea266f9a | ||
|
|
af187a3c0c | ||
|
|
11d32752d4 | ||
|
|
8a3b0d956e | ||
|
|
183321fa18 | ||
|
|
96d9c6d5ee | ||
|
|
728cd31210 | ||
|
|
9491310bfd | ||
|
|
1978226fce | ||
|
|
956e74533e | ||
|
|
1b5e6174f1 | ||
|
|
8fc9ff0d9f | ||
|
|
8e6330dfdb | ||
|
|
eec4bbde98 | ||
|
|
b12371437f | ||
|
|
8219177c1c | ||
|
|
56be41c38f | ||
|
|
5b371380fd | ||
|
|
eec060ae71 | ||
|
|
70ec18462b | ||
|
|
b3cf07f232 | ||
|
|
2f3639fbbc | ||
|
|
c1ac9d22ba | ||
|
|
3fdfa10402 | ||
|
|
6b49a889da | ||
|
|
431ad61ca2 | ||
|
|
75456c1b34 | ||
|
|
45b490cb43 | ||
|
|
1f4aebf20f | ||
|
|
e639aa9306 | ||
|
|
5ce96fde3e | ||
|
|
a91027c335 | ||
|
|
1ad7ba82c2 | ||
|
|
b5d274f7ae | ||
|
|
35f710439f | ||
|
|
bb2072aafe | ||
|
|
479f172e4d | ||
|
|
4383841ef1 | ||
|
|
57a00c1703 | ||
|
|
9b292bbd80 | ||
|
|
8ffb52dd7e | ||
|
|
a9545c3bef | ||
|
|
b0f1cea9ef | ||
|
|
2c9cff040d | ||
|
|
9aaee77004 | ||
|
|
9ac61d063a | ||
|
|
3e205ac275 | ||
|
|
277d7fa0cd | ||
|
|
51734d96d5 | ||
|
|
c4880fd07e | ||
|
|
75ae277334 | ||
|
|
726cfc8bf2 | ||
|
|
6b6db069b0 | ||
|
|
1459678d70 | ||
|
|
ce3e8bf315 | ||
|
|
adaf70695b | ||
|
|
f1e17948c4 | ||
|
|
abeac7aa49 | ||
|
|
d46b7a8189 | ||
|
|
d312761166 | ||
|
|
c29d857b83 | ||
|
|
7e79c9d847 | ||
|
|
55d0a1a0b5 | ||
|
|
6e14a3af09 | ||
|
|
7ce5306f53 | ||
|
|
34e6e71b34 | ||
|
|
3fd4717ec4 | ||
|
|
20acf7c0bf | ||
|
|
46e764d3db | ||
|
|
c6faaf8aa9 | ||
|
|
f5e77d8b23 | ||
|
|
449c966342 | ||
|
|
ca02c20d09 | ||
|
|
8870a8ec4a | ||
|
|
4150e607eb | ||
|
|
0a5d31da18 | ||
|
|
e3d3f3b1f4 | ||
|
|
062a7fe257 | ||
|
|
442cf6583b | ||
|
|
7bc38a061d | ||
|
|
fd04cd0a98 | ||
|
|
1a80c40f78 | ||
|
|
19441d9fee | ||
|
|
826b2f997e | ||
|
|
747bf88515 | ||
|
|
5175f24402 | ||
|
|
32ed84f48d | ||
|
|
ca40492d99 | ||
|
|
c220e0385a | ||
|
|
df9c08cd7f | ||
|
|
a7cd7030f1 | ||
|
|
113fbef0d9 | ||
|
|
af23fd37b2 | ||
|
|
6dc2f6139a | ||
|
|
665ba9e634 | ||
|
|
acd2f63a87 | ||
|
|
58ae5eee32 | ||
|
|
eaee515e17 | ||
|
|
3be7c4a60f | ||
|
|
84e39c43d6 | ||
|
|
7f0d07db3f | ||
|
|
0fd6eceda6 | ||
|
|
f439d805fc | ||
|
|
0e98ef43df | ||
|
|
38d679f574 | ||
|
|
be92c30bb1 | ||
|
|
c648127ff8 | ||
|
|
209bdf3f0b | ||
|
|
257344f2e5 | ||
|
|
cbe105020b | ||
|
|
0e33013cec | ||
|
|
9c0426d716 | ||
|
|
35de887624 | ||
|
|
d81c545423 | ||
|
|
e81986a27c | ||
|
|
27c66ce2f7 | ||
|
|
c80f64943d | ||
|
|
5326c7452b | ||
|
|
38023d0ab1 | ||
|
|
401ed5bf9c | ||
|
|
e5743fceed | ||
|
|
b6d9527f1d | ||
|
|
64594c5077 | ||
|
|
12927b6f82 | ||
|
|
92208b7d21 | ||
|
|
e4c35b404e | ||
|
|
e9a8449a64 | ||
|
|
22e4f6bc94 | ||
|
|
ca95ea8de2 | ||
|
|
61e1ea4f42 | ||
|
|
9658cde381 | ||
|
|
dec2ee7202 | ||
|
|
0cb79102fd | ||
|
|
2e2e381100 | ||
|
|
5893c927c2 | ||
|
|
25a3ce2909 | ||
|
|
5d474350c2 | ||
|
|
62469dec0b | ||
|
|
ff41f1c7f8 | ||
|
|
2fc2107bca | ||
|
|
0e80508f62 | ||
|
|
ee7c7a447d | ||
|
|
16e8aa3803 | ||
|
|
9650eb3ff6 | ||
|
|
32f8075acf | ||
|
|
9fb1dbf67e | ||
|
|
f68f0a5ea8 | ||
|
|
c5996ffc9c | ||
|
|
06cad1b996 | ||
|
|
2a4b15ea48 | ||
|
|
c0bbad8f88 | ||
|
|
b5c2991575 | ||
|
|
f439f2fcec | ||
|
|
8b01129cc9 | ||
|
|
58486744e1 | ||
|
|
a0d46ac60e | ||
|
|
2430473a10 | ||
|
|
4f963f250f | ||
|
|
ca70c36ae0 | ||
|
|
1bf8f2749e | ||
|
|
56b8728e79 | ||
|
|
df28a8bf50 | ||
|
|
0a446a6629 | ||
|
|
b8f1bce341 | ||
|
|
be615197fd | ||
|
|
d4a68069ba | ||
|
|
8fc14c72e2 | ||
|
|
69d75644d0 | ||
|
|
1fabaf9aaa | ||
|
|
aa482ea227 | ||
|
|
41c242a0ee | ||
|
|
c2e53c6ec9 |
12
.github/workflows/auth-lint.yml
vendored
@@ -30,6 +30,18 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
- name: Verify all icons are less than 20KB
|
||||
run: |
|
||||
find assets/custom-icons -type f -name "*.svg" | while read -r file; do
|
||||
if [[ "$file" == "assets/custom-icons/icons/bbs_nga.svg" ]]; then
|
||||
continue
|
||||
fi
|
||||
if [[ "$(stat --printf="%s" "$file")" -gt 20480 ]]; then
|
||||
echo "File size is greater than 20KB: $file ($file_size bytes)"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
- name: Verify custom icon JSON
|
||||
run: cat assets/custom-icons/_data/custom-icons.json | jq empty
|
||||
|
||||
2
.github/workflows/auth-release.yml
vendored
@@ -151,7 +151,7 @@ jobs:
|
||||
- name: Install dependencies for desktop build
|
||||
run: |
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y libsecret-1-dev libsodium-dev libfuse2 ninja-build libgtk-3-dev dpkg-dev pkg-config rpm patchelf libsqlite3-dev locate libayatana-appindicator3-dev libffi-dev libtiff5 xz-utils libarchive-tools
|
||||
sudo apt-get install -y libsecret-1-dev libsodium-dev libfuse2 ninja-build libgtk-3-dev dpkg-dev pkg-config rpm patchelf libsqlite3-dev locate libayatana-appindicator3-dev libffi-dev libtiff6 xz-utils libarchive-tools libcurl4-openssl-dev
|
||||
sudo updatedb --localpaths='/usr/lib/x86_64-linux-gnu'
|
||||
|
||||
- name: Install appimagetool
|
||||
|
||||
2
.github/workflows/cli-release.yml
vendored
@@ -45,7 +45,7 @@ jobs:
|
||||
goarch: ${{ matrix.goarch }}
|
||||
asset_name: ente-${{ github.ref_name }}-${{ matrix.goos }}-${{ matrix.goarch }}
|
||||
release_name: ${{ github.ref_name }}
|
||||
goversion: "1.20"
|
||||
goversion: "1.23"
|
||||
project_path: "./cli"
|
||||
pre_command: export CGO_ENABLED=0
|
||||
build_flags: "-trimpath"
|
||||
|
||||
7
.github/workflows/server-publish.yml
vendored
@@ -1,4 +1,4 @@
|
||||
name: "Publish (server)"
|
||||
name: "Publish ghcr (server)"
|
||||
|
||||
on:
|
||||
# Run manually, providing it the commit.
|
||||
@@ -39,7 +39,6 @@ jobs:
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Tag as server/ghcr
|
||||
- name: Update branch server/ghcr to point to source commit
|
||||
run: |
|
||||
git tag -f server/ghcr
|
||||
git push -f origin server/ghcr
|
||||
git push -f origin HEAD:refs/heads/server/ghcr
|
||||
|
||||
@@ -30,10 +30,10 @@ Learn more at [ente.io](https://ente.io).
|
||||
|
||||

|
||||
|
||||
Our flagship product. 3x data replication. On device machine learning. Cross
|
||||
platform. Private sharing. Collaborative albums. Family plans. Easy import,
|
||||
easier export. Background uploads. The list goes on. And of course, all of this,
|
||||
while being fully end-to-end encrypted.
|
||||
Our flagship product. 3x data replication. Face detection. Semantic search.
|
||||
Private sharing. Collaborative albums. Family plans. Easy import, easier export.
|
||||
Background uploads. The list goes on. And of course, all of this, while being
|
||||
fully end-to-end encrypted across platforms.
|
||||
|
||||
Ente Photos is a paid service, but we offer 5GB of free storage.
|
||||
You can also clone this repository and choose to self-host.
|
||||
|
||||
1
auth/.gitignore
vendored
@@ -32,6 +32,7 @@
|
||||
.pub-cache/
|
||||
.pub/
|
||||
/build/
|
||||
macos/build/
|
||||
|
||||
# Web related
|
||||
lib/generated_plugin_registrant.dart
|
||||
|
||||
@@ -100,6 +100,16 @@ Photos](../mobile/README.md) or spreading the word.
|
||||
|
||||
For more ways to contribute, see [../CONTRIBUTING.md](../CONTRIBUTING.md).
|
||||
|
||||
## Certificate Fingerprints
|
||||
|
||||
- **SHA1**: 57:E8:C6:59:C3:AA:C9:38:B0:10:70:5E:90:85:BC:20:67:E6:8F:4B
|
||||
- **SHA256**: BA:8B:F0:32:98:62:70:05:ED:DF:F6:B1:D6:0B:3B:FA:A1:4E:E8:BD:C7:61:4F:FB:3B:B1:1C:58:8D:9E:3A:D7
|
||||
|
||||
To verify these fingerprints, use the following command:
|
||||
```bash
|
||||
apksigner verify --print-certs <path_to_apk>
|
||||
```
|
||||
|
||||
## ⭐️ About
|
||||
|
||||
To know more about Ente and the ways to get in touch or seek help, see [our main
|
||||
|
||||
@@ -44,6 +44,17 @@
|
||||
],
|
||||
"hex": "fd4b2d"
|
||||
},
|
||||
{
|
||||
"title": "AzurHosts",
|
||||
"slug": "azurhosts",
|
||||
"altNames": [
|
||||
"minenode"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "AzurWare",
|
||||
"slug": "azuware"
|
||||
},
|
||||
{
|
||||
"title": "BaiduCloud",
|
||||
"slug": "baidu_cloud",
|
||||
@@ -72,6 +83,9 @@
|
||||
"NGA社区"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Belo"
|
||||
},
|
||||
{
|
||||
"title": "Bethesda",
|
||||
"altNames": [
|
||||
@@ -175,6 +189,9 @@
|
||||
{
|
||||
"title": "Bybit"
|
||||
},
|
||||
{
|
||||
"title": "Caixa"
|
||||
},
|
||||
{
|
||||
"title": "Canva"
|
||||
},
|
||||
@@ -269,6 +286,10 @@
|
||||
{
|
||||
"title": "Dropbox"
|
||||
},
|
||||
{
|
||||
"title": "DreamHost Panel",
|
||||
"slug": "dreamhost_panel"
|
||||
},
|
||||
{
|
||||
"title": "dus.net",
|
||||
"slug": "dusnet"
|
||||
@@ -295,7 +316,7 @@
|
||||
},
|
||||
{
|
||||
"title": "enom",
|
||||
"slug": "enom_v1"
|
||||
"slug": "enom"
|
||||
},
|
||||
{
|
||||
"title": "Epic Games",
|
||||
@@ -308,6 +329,10 @@
|
||||
{
|
||||
"title": "Estateguru"
|
||||
},
|
||||
{
|
||||
"title": "Fastmail",
|
||||
"hex": "0067B9"
|
||||
},
|
||||
{
|
||||
"title": "Fidelity",
|
||||
"slug": "fidelity",
|
||||
@@ -529,7 +554,9 @@
|
||||
},
|
||||
{
|
||||
"title": "matlab",
|
||||
"altNames": ["mathworks"]
|
||||
"altNames": [
|
||||
"mathworks"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Mercado Livre",
|
||||
@@ -606,6 +633,10 @@
|
||||
{
|
||||
"title": "NextDNS"
|
||||
},
|
||||
{
|
||||
"title": "Newgrounds",
|
||||
"slug": "newgrounds"
|
||||
},
|
||||
{
|
||||
"title": "Newton",
|
||||
"altNames": [
|
||||
@@ -616,6 +647,9 @@
|
||||
"title": "ngrok",
|
||||
"hex": "858585"
|
||||
},
|
||||
{
|
||||
"title": "Nelnet"
|
||||
},
|
||||
{
|
||||
"title": "nintendo",
|
||||
"altNames": [
|
||||
@@ -628,8 +662,10 @@
|
||||
{
|
||||
"title": "nordvpn",
|
||||
"slug": "nordaccount",
|
||||
"hex": "#4687FF",
|
||||
"altNames": "Nord Account"
|
||||
"hex": "4687FF",
|
||||
"altNames": [
|
||||
"Nord Account"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Notesnook"
|
||||
@@ -702,6 +738,14 @@
|
||||
{
|
||||
"title": "PostNL"
|
||||
},
|
||||
{
|
||||
"title": "PostScan Mail",
|
||||
"slug": "postscanmail",
|
||||
"altNames": [
|
||||
"Post Scan Mail",
|
||||
"PostScanMail"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Privacy Guides",
|
||||
"slug": "privacyguides"
|
||||
@@ -735,7 +779,8 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "randstad"
|
||||
"title": "randstad",
|
||||
"hex": "2175D9"
|
||||
},
|
||||
{
|
||||
"title": "Real-Debrid",
|
||||
@@ -967,6 +1012,10 @@
|
||||
{
|
||||
"title": "Upstox"
|
||||
},
|
||||
{
|
||||
"title": "US Mobile",
|
||||
"slug": "us_mobile"
|
||||
},
|
||||
{
|
||||
"title": "Vikunja"
|
||||
},
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
<svg width="500" height="500" viewBox="0 0 500 500" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M442.375 441.562C390.672 479.687 315.75 500 251.25 500C160.625 500 79.344 466.562 17.7346 410.89C13.0471 406.515 17.2346 400.547 23.0471 403.953C89.5315 442.656 171.875 465.937 256.656 465.937C317.884 465.655 378.451 453.272 434.875 429.5C443.625 425.781 450.969 435.218 442.375 441.562ZM463.875 416.968C457.313 408.531 420.188 412.984 403.563 414.937C398.485 415.562 397.719 411.14 402.281 407.968C431.969 387.187 480.313 393.172 485.969 400.156C491.625 407.14 484.5 455.781 456.75 478.968C452.485 482.531 448.422 480.64 450.5 475.906C456.75 460.343 470.719 425.437 464.094 416.968" fill="#FF9900"/>
|
||||
<g style="mix-blend-mode:difference">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M287.969 216.625C287.969 243.063 288.641 265.109 275.281 288.578C264.344 307.641 247.156 319.406 228.328 319.406C202.281 319.406 187.016 299.563 187.016 270.266C187.016 212.453 238.828 201.938 287.984 201.938L287.969 216.625ZM356.422 382C351.938 386.016 345.453 386.297 340.391 383.625C317.891 364.922 313.766 356.234 301.453 338.391C264.234 376.359 237.797 387.719 189.609 387.719C132.453 387.719 88.0781 352.5 88.0781 281.984C88.0781 226.922 117.844 189.422 160.422 171.094C197.25 154.875 248.703 152.031 288 147.656V139.062C288 122.938 289.25 103.844 279.719 89.9219C271.516 77.4219 255.656 72.2656 241.641 72.2656C215.781 72.2656 192.781 85.5469 187.156 113.016C186.016 119.266 181.531 125.141 175.328 125.422L109.375 118.047C103.844 116.797 97.6563 112.328 99.2656 103.984C114.5 24.0625 186.641 0 251.156 0C284.172 0 327.313 8.78125 353.344 33.7812C386.359 64.6094 383.219 105.734 383.219 150.5V256.25C383.219 288.031 396.391 301.953 408.797 319.141C413.094 325.391 414.047 332.578 408.516 337.172C391.003 351.98 373.669 366.997 356.516 382.219L356.422 382.031" fill="white"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg width="500" height="500" viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M16.05 385.03C13.89 386.74 13.44 389.58 14.69 393.56C15.83 397.09 18.5 401.47 22.71 406.7C39.65 427.63 59.84 445.03 83.27 458.9C106.7 472.78 131.78 483.01 158.51 489.61C185.35 496.32 212.76 499.68 240.73 499.68C276.56 499.68 310.68 494.44 343.09 483.98C375.51 473.63 402.58 459.07 424.3 440.31C431.92 433.6 435.73 428.25 435.73 424.27C435.73 422.79 435.1 421.31 433.85 419.83C432.15 418.13 430.1 417.56 427.71 418.13C425.32 418.7 421.97 420.12 417.65 422.39C396.83 433.31 371.47 442.01 341.56 448.49C311.76 455.09 280.65 458.39 248.24 458.39C208.09 458.39 169.31 452.93 131.89 442.01C94.47 431.09 61.32 414.03 32.43 390.83C28.22 387.53 24.81 385.43 22.19 384.52C19.69 383.61 17.65 383.78 16.05 385.03Z"
|
||||
fill="#FF6200"/>
|
||||
<path d="M395.12 393.57C392.73 395.85 392.11 398.24 393.24 400.74C394.04 402.56 395.58 403.58 397.85 403.81C400.12 404.15 403.37 403.92 407.57 403.13C414.4 401.65 421.51 400.62 428.9 400.06C436.29 399.6 442.72 399.71 448.18 400.4C453.64 401.19 457.05 402.56 458.41 404.49C460.46 407.56 459.72 414.04 456.2 423.94C452.78 433.83 448.12 443.44 442.21 452.77C439.93 456.52 438.57 459.48 438.11 461.64C437.66 463.8 438.23 465.62 439.82 467.1C440.84 468.12 441.98 468.64 443.23 468.64C446.53 468.64 451.31 465.74 457.56 459.94C468.82 450.16 476.72 438.55 481.27 425.13C483.78 418.2 485.31 410.92 485.88 403.3C486.45 395.68 485.6 390.22 483.32 386.92C481.16 383.73 476.38 381.12 468.99 379.07C461.71 377.02 454.38 376 446.98 376C432.54 376 418.83 379.41 405.87 386.24C401.09 388.85 397.51 391.3 395.12 393.57Z"
|
||||
fill="#FF6200"/>
|
||||
<g style="mix-blend-mode:difference">
|
||||
<path d="M209.76 387.72C188.61 387.72 170 383.1 153.92 373.87C137.84 364.34 125.33 351.24 116.4 334.56C107.47 317.59 103 298.09 103 276.05C103 249.55 109.55 226.32 122.65 206.37C136.05 186.42 154.96 171.08 179.38 160.36C204.1 149.64 232.98 144.28 266.04 144.28C281.23 144.28 293.58 145.32 303.11 147.41V138.03C303.11 115.39 298.94 98.57 290.61 87.55C282.27 76.23 269.61 70.58 252.64 70.58C225.24 70.58 207.67 85.02 199.93 113.9C197.55 122.24 192.63 125.82 185.19 124.62L124.44 113.9C119.97 113.01 116.85 111.08 115.06 108.1C113.57 105.12 113.42 101.1 114.61 96.04C122.36 65.66 138.74 42.14 163.75 25.46C189.06 8.49 220.78 0 258.89 0C304.16 0 338.55 12.21 362.08 36.63C385.9 61.05 397.81 96.63 397.81 143.39V368.07C397.81 371.34 396.62 374.17 394.24 376.55C392.15 378.64 389.47 379.68 386.2 379.68H328.13C320.98 379.68 316.51 375.81 314.73 368.07L305.79 326.08H302.22C294.18 345.73 282.12 360.92 266.04 371.64C250.26 382.36 231.49 387.72 209.76 387.72ZM200.38 265.33C200.38 281.11 204.4 293.77 212.44 303.3C220.78 312.53 231.94 317.14 245.94 317.14C264.4 317.14 278.55 308.95 288.37 292.58C298.2 275.9 303.11 252.08 303.11 221.11V197.43C294.78 195.94 286.88 195.2 279.44 195.2C255.02 195.2 235.66 201.6 221.37 214.41C207.37 226.91 200.38 243.89 200.38 265.33Z"
|
||||
fill="white"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 2.9 KiB |
7
auth/assets/custom-icons/icons/azurhosts.svg
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
42
auth/assets/custom-icons/icons/azurware.svg
Normal file
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="537.000000pt" height="537.000000pt" viewBox="0 0 537.000000 537.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
|
||||
<g transform="translate(0.000000,537.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M2490 5364 c-19 -2 -78 -9 -130 -15 -219 -25 -457 -86 -675 -174
|
||||
-349 -140 -623 -322 -896 -594 -432 -433 -683 -945 -770 -1571 -18 -125 -18
|
||||
-525 0 -650 34 -245 91 -463 176 -675 140 -349 322 -623 594 -896 433 -432
|
||||
945 -683 1571 -770 125 -18 525 -18 650 0 245 34 463 91 675 176 349 140 623
|
||||
322 896 594 432 433 683 945 770 1571 8 56 14 189 14 325 0 297 -25 479 -102
|
||||
745 -127 442 -351 819 -682 1151 -425 424 -928 675 -1535 765 -96 14 -481 27
|
||||
-556 18z m-833 -1136 c25 -10 11 -13 -111 -24 -217 -20 -348 -69 -449 -169
|
||||
-267 -262 -169 -752 266 -1335 81 -108 527 -564 658 -674 611 -507 1296 -850
|
||||
1859 -932 157 -22 384 -15 490 16 207 60 338 192 380 380 21 95 21 96 32 76
|
||||
16 -29 -10 -150 -50 -229 -50 -101 -125 -174 -235 -226 -541 -262 -1639 130
|
||||
-2578 922 l-68 57 -189 0 -189 0 -38 -105 c-29 -82 -42 -106 -59 -110 -11 -3
|
||||
-106 -4 -211 -3 l-190 3 1 25 c1 14 70 192 154 395 84 204 154 377 157 386 2
|
||||
8 -33 71 -79 140 -151 226 -263 473 -303 666 -31 149 -18 312 36 431 73 167
|
||||
253 280 492 311 95 13 193 12 224 -1z m278 -122 c378 -81 818 -271 1210 -524
|
||||
229 -148 231 -173 3 -36 -378 227 -745 379 -1033 429 -132 23 -338 24 -422 2
|
||||
-132 -35 -225 -105 -271 -205 -38 -82 -42 -209 -12 -335 24 -105 72 -233 85
|
||||
-230 4 1 22 37 38 80 16 43 34 84 40 91 7 9 58 12 192 12 161 0 184 -2 197
|
||||
-17 8 -10 115 -271 239 -580 123 -310 225 -556 227 -548 2 9 -37 183 -87 388
|
||||
-50 204 -111 453 -135 552 -30 125 -41 184 -34 193 15 18 331 17 347 -1 6 -8
|
||||
17 -45 25 -83 8 -38 44 -195 80 -349 35 -155 70 -311 76 -348 14 -77 30 -84
|
||||
43 -16 5 24 51 202 103 396 52 193 94 358 94 366 0 39 26 47 163 47 73 0 138
|
||||
-4 145 -8 10 -7 195 -680 226 -824 9 -39 23 -35 30 10 16 93 180 798 189 810
|
||||
12 15 342 18 352 2 8 -12 -343 -1480 -357 -1498 -17 -20 -338 -13 -349 8 -6
|
||||
12 -189 671 -217 783 -4 16 -11 28 -16 28 -6 0 -22 -46 -36 -103 -57 -223
|
||||
-193 -704 -203 -716 -6 -8 -21 -10 -42 -6 -68 12 -40 -16 93 -94 384 -224 696
|
||||
-354 995 -414 149 -30 391 -32 482 -4 171 52 254 145 274 310 3 28 11 50 16
|
||||
49 17 -5 17 -147 0 -215 -98 -380 -560 -467 -1235 -233 -318 111 -643 280
|
||||
-1012 527 -311 208 -551 413 -807 691 -184 200 -208 230 -311 392 -157 246
|
||||
-241 427 -281 605 -65 293 43 516 295 607 141 51 387 54 601 9z"/>
|
||||
<path d="M1750 2835 c-9 -24 -7 -33 16 -66 56 -81 69 -73 33 21 -27 72 -36 80
|
||||
-49 45z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 23 KiB |
1
auth/assets/custom-icons/icons/belo.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="87" height="87" fill="none"><rect width="86.1667" height="86.2257" fill="#5717D4" rx="14.7344"/><path fill="#00FFB2" fill-rule="evenodd" d="M24.448 35.976c.461-.504 1.242-.536 1.767-.098a26.25 26.25 0 0 0 16.867 6.09 26.25 26.25 0 0 0 16.867-6.09c.525-.438 1.306-.406 1.767.098l4.178 4.562a1.204 1.204 0 0 1-.092 1.732 34.9 34.9 0 0 1-22.72 8.36 34.9 34.9 0 0 1-22.72-8.36 1.204 1.204 0 0 1-.092-1.732z" clip-rule="evenodd"/></svg>
|
||||
|
After Width: | Height: | Size: 478 B |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
9
auth/assets/custom-icons/icons/caixa.svg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="500px" height="500px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g><path style="opacity:0.99" fill="#0170ae" d="M 268.5,114.5 C 268.343,115.873 268.51,117.207 269,118.5C 291.11,156.392 312.943,194.392 334.5,232.5C 281.008,234.166 227.341,235.166 173.5,235.5C 135.941,171.393 98.6076,107.06 61.5,42.5C 116.5,41.1667 171.5,41.1667 226.5,42.5C 240.022,66.8911 254.022,90.8911 268.5,114.5 Z"/></g>
|
||||
<g><path style="opacity:0.982" fill="#f5812a" d="M 499.5,43.5 C 499.5,44.5 499.5,45.5 499.5,46.5C 449.174,108.835 399.174,171.502 349.5,234.5C 345.217,235.492 340.884,235.826 336.5,235.5C 336.573,233.973 335.906,232.973 334.5,232.5C 312.943,194.392 291.11,156.392 269,118.5C 268.51,117.207 268.343,115.873 268.5,114.5C 286.953,90.8749 305.619,67.3749 324.5,44C 382.832,43.5 441.166,43.3333 499.5,43.5 Z"/></g>
|
||||
<g><path style="opacity:0.561" fill="#337394" d="M 334.5,232.5 C 335.906,232.973 336.573,233.973 336.5,235.5C 282.167,235.5 227.833,235.5 173.5,235.5C 227.341,235.166 281.008,234.166 334.5,232.5 Z"/></g>
|
||||
<g><path style="opacity:0.988" fill="#f5812a" d="M 325.5,264.5 C 322.22,267.043 319.387,270.043 317,273.5C 289.381,309.454 261.381,345.12 233,380.5C 231.121,382.527 229.954,384.86 229.5,387.5C 211.307,410.688 192.973,433.855 174.5,457C 116.168,457.5 57.8343,457.667 -0.5,457.5C -0.5,456.5 -0.5,455.5 -0.5,454.5C 50.0174,391.474 100.017,327.974 149.5,264C 208.335,263.168 267.001,263.335 325.5,264.5 Z"/></g>
|
||||
<g><path style="opacity:0.99" fill="#0170ae" d="M 325.5,264.5 C 364.664,327.999 402.998,391.999 440.5,456.5C 383.829,456.833 327.163,456.5 270.5,455.5C 256.822,432.806 243.155,410.139 229.5,387.5C 229.954,384.86 231.121,382.527 233,380.5C 261.381,345.12 289.381,309.454 317,273.5C 319.387,270.043 322.22,267.043 325.5,264.5 Z"/></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
14
auth/assets/custom-icons/icons/dreamhost_panel.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<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"
|
||||
width="160.5px" height="160.5px" viewBox="0 0 160.5 160.5" enable-background="new 0 0 160.5 160.5" xml:space="preserve">
|
||||
<g>
|
||||
<path d="M145.794,113.854c-11.111,5.932-23.811,9.227-37.417,9.008c-40.366-0.879-72.114-32.293-71.434-70.515
|
||||
c0.227-12.961,4.309-25.042,11.112-35.148C26.512,28.841,11.771,50.589,11.318,75.851c-0.907,38.002,31.068,69.636,71.208,70.515
|
||||
C109.284,146.805,132.642,133.844,145.794,113.854z"/>
|
||||
<path fill="#0073EC" d="M86.833,14.123c-10.885,0-21.09,2.636-30.161,7.469c-5.669,9.007-8.844,19.331-9.297,29.875
|
||||
c-0.68,33.171,27.212,60.63,61.909,61.289c10.432,0,22.224-2.417,31.294-7.249c5.443-9.007,8.617-19.551,8.617-30.754
|
||||
C149.648,41.362,121.53,14.123,86.833,14.123z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
70
auth/assets/custom-icons/icons/fastmail.svg
Normal file
@@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
viewBox="0 0 203.55556 203.55501"
|
||||
version="1.1"
|
||||
id="svg14"
|
||||
sodipodi:docname="Fastmail_logo_2019.svg"
|
||||
width="203.55556"
|
||||
height="203.55501"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||
<metadata
|
||||
id="metadata20">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs18" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1136"
|
||||
id="namedview16"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.55887135"
|
||||
inkscape:cx="495.8288"
|
||||
inkscape:cy="103.69084"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg14"
|
||||
inkscape:document-rotation="0" />
|
||||
<desc
|
||||
id="desc2">Fastmail</desc>
|
||||
<path
|
||||
d="M 168.6788,57.190848 A 80.391313,80.391313 0 0 1 34.908803,146.39084 l -17.81,11.86 A 101.78194,101.78194 0 0 0 186.4788,45.340848 Z"
|
||||
fill="#69b3e7"
|
||||
id="path6" />
|
||||
<path
|
||||
d="M 21.158803,101.42084 A 80.39,80.39 0 0 1 168.6788,57.190848 l 17.8,-11.86 A 101.78471,101.78471 0 1 0 17.098803,158.25084 l 17.81,-11.86 a 80,80 0 0 1 -13.75,-44.97 z"
|
||||
fill="#0067b9"
|
||||
id="path8" />
|
||||
<path
|
||||
d="M 53.158803,133.68084 H 146.5288 a 3.41,3.41 0 0 0 3.41,-3.41 V 69.190848 Z"
|
||||
fill="#333e48"
|
||||
id="path10" />
|
||||
<path
|
||||
class="opacity"
|
||||
d="M 101.5488,101.42084 53.158803,69.190848 v 64.519992 z"
|
||||
fill="#ffc107"
|
||||
id="path12" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 14 KiB |
33
auth/assets/custom-icons/icons/nelnet.svg
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<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"
|
||||
width="167.5px" height="167.5px" viewBox="0 0 167.5 167.5" enable-background="new 0 0 167.5 167.5" xml:space="preserve">
|
||||
<g>
|
||||
<defs>
|
||||
<rect id="SVGID_1_" x="3.75" y="3.75" width="160" height="160"/>
|
||||
</defs>
|
||||
<clipPath id="SVGID_2_">
|
||||
<use xlink:href="#SVGID_1_" overflow="visible"/>
|
||||
</clipPath>
|
||||
<g id="icon-circle-n" clip-path="url(#SVGID_2_)">
|
||||
<rect x="3.75" y="3.75" fill="#FFFFFF" width="160" height="160"/>
|
||||
<g id="Group_1" transform="translate(-283.001 134)">
|
||||
<path id="Path_926" fill="#A2AAAD" d="M371.633-89.707c-8.596,0-14.667,3.859-19.81,8.422l-0.283-5.307
|
||||
c-0.027-0.655-0.562-1.173-1.217-1.178h-16.4c-0.68,0.004-1.229,0.56-1.224,1.24c0,0.001,0,0.003,0,0.004v74.489
|
||||
c-0.003,0.678,0.542,1.23,1.221,1.236h18.258c0.68-0.004,1.228-0.557,1.225-1.236v-51.36c6.662-7.678,9.619-8.926,14.025-8.926
|
||||
c6.132,0,12.679,4.229,12.679,16.1v44.186c-0.004,0.678,0.543,1.231,1.221,1.236c0,0,0,0,0.001,0h18.259
|
||||
c0.678-0.006,1.225-0.559,1.221-1.236v-47.985C400.81-79.507,386.134-89.707,371.633-89.707"/>
|
||||
|
||||
<linearGradient id="Path_929_1_" gradientUnits="userSpaceOnUse" x1="59.4341" y1="340.5049" x2="59.4341" y2="339.5049" gradientTransform="matrix(160 0 0 -160 -9142.6602 54350.5)">
|
||||
<stop offset="0" style="stop-color:#AFD135"/>
|
||||
<stop offset="1" style="stop-color:#70BA44"/>
|
||||
</linearGradient>
|
||||
<path id="Path_929" fill="url(#Path_929_1_)" d="M366.751-130.25c-44.162,0.05-79.95,35.838-80,80l0,0
|
||||
c0.051,44.162,35.838,79.949,80,80l0,0c44.162-0.051,79.949-35.838,80-80l0,0C446.701-94.412,410.913-130.2,366.751-130.25z
|
||||
M303.223-50.25c0.04-35.069,28.459-63.487,63.528-63.527l0,0c35.065,0.043,63.479,28.459,63.521,63.525l0,0
|
||||
c-0.042,35.065-28.456,63.481-63.521,63.525l0,0c-35.066-0.043-63.483-28.459-63.524-63.525"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
1
auth/assets/custom-icons/icons/newgrounds.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 90 90" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="153.355%" id="a"><stop stop-color="#FF9D00" offset="0%"/><stop stop-color="#FF0B33" offset="100%"/></linearGradient></defs><path d="M31.81 8a9.088 9.088 0 0 1 9.088 9.088v62.125A3.787 3.787 0 0 1 37.11 83h-8.33a3.787 3.787 0 0 1-3.787-3.787V27.537a3.787 3.787 0 0 0-3.787-3.787h-1.515a3.787 3.787 0 0 0-3.786 3.787v51.676A3.787 3.787 0 0 1 12.118 83H3.787A3.787 3.787 0 0 1 0 79.213V11.787A3.787 3.787 0 0 1 3.787 8h28.022Zm49.102 0A9.088 9.088 0 0 1 90 17.088v15.633a3.03 3.03 0 0 1-3.03 3.029H76.368a3.03 3.03 0 0 1-3.029-3.03v-6.698a2.272 2.272 0 0 0-2.272-2.272H67.28a2.272 2.272 0 0 0-2.272 2.272v38.963c0 .837.678 1.515 1.515 1.515h6.059c.836 0 1.514-.678 1.514-1.515V57.5h-1.514a3.03 3.03 0 0 1-3.03-3.03v-9.69a3.03 3.03 0 0 1 3.03-3.03h14.39A3.03 3.03 0 0 1 90 44.78v29.132A9.088 9.088 0 0 1 80.912 83H58.19a9.088 9.088 0 0 1-9.089-9.088V17.088A9.088 9.088 0 0 1 58.191 8h22.72Z" fill="url(#a)" fill-rule="evenodd"/><style xmlns="" data-source="base" class="dblt-ykjmwcnxmi"/><style xmlns="" data-source="stylesheet-processor" class="dblt-ykjmwcnxmi"/></svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
1
auth/assets/custom-icons/icons/postscanmail.svg
Normal file
|
After Width: | Height: | Size: 11 KiB |
@@ -1,19 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="990.35431" height="207.28346" id="svg2">
|
||||
<defs id="defs4"/>
|
||||
<g transform="translate(116.92129,-338.61963)" id="layer1">
|
||||
<g transform="translate(35.40372,35.392161)" id="g31225">
|
||||
<path d="M -28.795615,415.09001 C -28.795615,415.09001 -59.115451,384.77025 -59.125465,384.77025 C -60.927824,382.91774 -63.370971,381.90646 -66.024482,381.90646 L -116.92129,381.90646 L -116.92129,401.27187 L -61.19811,401.27187 C -56.952604,401.27187 -52.957357,402.92402 -49.953371,405.92801 C -46.949465,408.93191 -45.297309,412.91715 -45.297309,417.17275 L -45.297309,472.88583 L -25.941913,472.88583 L -25.941913,421.98902 C -25.941913,419.34561 -26.953202,416.89237 -28.795615,415.09001" style="fill:#007cc5;fill-rule:nonzero;stroke:none" id="path38"/>
|
||||
<path d="M 25.195234,381.90646 C 22.551768,381.90646 20.09856,382.91774 18.296201,384.77025 L -12.023635,415.09001 C -13.866049,416.89237 -14.877338,419.34561 -14.877338,421.98902 L -14.877338,472.88583 L 4.4780586,472.88583 L 4.4780586,417.17275 C 4.4780586,408.40119 11.607388,401.27187 20.378939,401.27187 L 76.09204,401.27187 L 76.09204,381.90646 L 25.195234,381.90646" style="fill:#007cc5;fill-rule:nonzero;stroke:none" id="path42"/>
|
||||
<path d="M 209.20675,379.69354 C 199.83445,379.69354 190.17176,386.31226 185.7059,395.80471 L 185.5557,396.11513 L 184.29404,396.11513 L 184.29404,381.90646 L 169.60477,381.90646 L 169.60477,472.88583 L 185.36545,472.88583 L 185.36545,431.53162 C 185.36545,408.36114 195.43867,393.39152 211.00911,393.39152 C 214.37352,393.39152 217.30737,393.91222 219.85071,394.8434 L 219.85071,380.85511 C 216.47628,380.17419 213.99302,379.69354 209.20675,379.69354" style="fill:#007cc5;fill-rule:nonzero;stroke:none" id="path46"/>
|
||||
<path d="M 694.79406,388.47511 C 688.87629,382.54732 679.95458,379.67351 667.50825,379.67351 C 657.2648,379.67351 647.27168,382.50727 637.79925,388.04452 L 638.61032,401.2218 C 645.55944,395.64449 655.47244,392.18997 664.8047,392.18997 C 672.78517,392.18997 678.48265,394.01236 682.23757,397.76728 C 686.21279,401.73249 688.06522,407.81047 688.06522,416.88235 L 688.06522,417.47315 L 687.48446,417.4331 C 680.77566,417.07261 676.03944,417.07261 669.49085,417.08262 C 658.30617,417.07261 643.26643,420.16664 634.56501,428.86809 C 629.74868,433.68437 627.30548,439.74233 627.30548,446.85171 C 627.30548,455.20262 629.70863,461.83135 634.44485,466.57761 C 640.04219,472.16493 649.04401,475.11877 660.47902,475.11877 C 676.93061,475.11877 685.55192,465.50616 688.49579,461.37073 L 688.656,461.14041 L 689.85757,461.14041 L 689.85757,472.8658 L 703.82591,472.8658 L 703.82591,417.17275 C 703.82591,403.93539 700.88205,394.55301 694.79406,388.47511 z M 688.06522,428.93819 L 688.06522,437.61954 C 688.06522,444.83907 685.75219,450.99717 681.39648,455.43293 C 676.7704,460.12912 670.04157,462.60239 661.92091,462.61241 C 656.97442,462.61241 651.83768,460.53968 648.5033,457.21526 C 645.72966,454.43165 644.24772,450.88702 644.24772,446.95185 C 644.24772,430.37005 666.9375,428.5777 676.70031,428.5777 C 678.51268,428.5777 680.35511,428.66782 682.12743,428.75795 C 683.89976,428.84807 685.72215,428.93819 687.5145,428.93819 L 688.06522,428.93819" style="fill:#007cc5;fill-rule:nonzero;stroke:none" id="path50"/>
|
||||
<path d="M 285.2165,388.47511 C 279.28873,382.54732 270.36701,379.67351 257.92068,379.67351 C 247.67724,379.67351 237.68412,382.50727 228.21168,388.04452 L 229.02275,401.2218 C 235.97188,395.64449 245.88488,392.18997 255.21713,392.18997 C 263.1976,392.18997 268.9051,394.01236 272.65001,397.76728 C 276.62523,401.73249 278.47766,407.81047 278.47766,416.88235 L 278.47766,417.47315 L 277.8969,417.4331 C 271.1981,417.07261 266.46189,417.07261 259.90328,417.08262 C 248.72861,417.07261 233.67886,420.16664 224.98746,428.86809 C 220.16112,433.68437 217.71791,439.74233 217.71791,446.85171 C 217.71791,455.20262 220.12107,461.83135 224.86729,466.57761 C 230.45463,472.16493 239.45645,475.11877 250.89145,475.11877 C 267.34305,475.11877 275.96436,465.50616 278.90823,461.37073 L 279.07845,461.14041 L 280.27001,461.14041 L 280.27001,472.8658 L 294.24836,472.8658 L 294.24836,417.17275 C 294.24836,403.93539 291.28447,394.55301 285.2165,388.47511 z M 278.47766,428.93819 L 278.47766,437.61954 C 278.47766,444.83907 276.16463,450.99717 271.80891,455.43293 C 267.19285,460.12912 260.454,462.60239 252.33335,462.61241 C 247.38685,462.61241 242.25011,460.53968 238.92575,457.21526 C 236.1421,454.43165 234.67016,450.88702 234.67016,446.95185 C 234.67016,430.37005 257.35994,428.5777 267.11274,428.5777 C 268.92512,428.5777 270.76754,428.66782 272.54988,428.75795 C 274.31219,428.84807 276.13459,428.93819 277.92694,428.93819 L 278.47766,428.93819" style="fill:#007cc5;fill-rule:nonzero;stroke:none" id="path54"/>
|
||||
<path d="M 379.59037,388.13464 C 373.973,382.51728 365.87236,379.67351 355.50876,379.67351 C 342.50169,379.67351 330.55601,386.25218 325.79976,396.05504 L 325.64957,396.37548 L 324.38792,396.37548 L 324.38792,381.92648 L 309.16794,381.92648 L 309.16794,472.88583 L 324.93864,472.88583 L 324.93864,430.84068 C 324.93864,419.03519 327.24166,409.67292 331.78763,403.02416 C 336.70408,395.83475 344.02369,392.18997 353.54618,392.18997 C 367.97512,393.0811 373.6025,402.4634 373.6025,425.67393 L 373.6025,472.88583 L 389.37321,472.88583 L 389.37321,418.61462 C 389.37321,404.87658 386.07888,394.62311 379.59037,388.13464" style="fill:#007cc5;fill-rule:nonzero;stroke:none" id="path58"/>
|
||||
<path d="M 533.222,420.44702 C 524.52058,416.4718 516.29979,412.72689 516.29979,403.99547 C 516.29979,396.81599 522.87843,392.18997 533.06179,392.18997 C 536.77666,392.18997 546.07887,394.27271 550.45461,396.5957 L 551.76634,383.16808 C 544.79719,381.06532 538.58904,379.67351 531.25943,379.67351 C 520.74563,379.67351 512.20441,382.65747 506.56701,388.29486 C 501.78074,393.0811 499.35755,399.51957 499.35755,407.43997 C 499.35755,421.45839 511.46344,427.37616 522.14746,432.60299 C 530.91898,436.87862 539.18983,440.93395 539.18983,448.81429 C 539.18983,452.37896 538.01829,455.36283 535.70526,457.67588 C 531.25943,462.12174 524.18013,462.60239 521.35643,462.60239 C 516.85052,462.60239 507.67848,460.66986 500.73937,456.45431 L 499.91829,470.32252 C 508.10904,474.55809 517.39122,475.11877 524.59067,475.11877 C 533.09183,475.11877 540.86203,472.70559 546.44936,468.29986 C 552.78767,463.30326 556.14208,455.94362 556.14208,446.9919 C 556.14208,430.90077 543.9661,425.3535 533.222,420.44702" style="fill:#007cc5;fill-rule:nonzero;stroke:none" id="path62"/>
|
||||
<path d="M 611.11423,462.61241 C 607.20911,462.61241 603.6244,461.16044 601.01097,458.55708 C 597.92692,455.47298 596.3048,450.97714 596.3048,445.55997 L 596.3048,394.42292 L 620.66677,394.42292 L 620.66677,381.90646 L 596.3048,381.90646 L 596.3048,355.4017 L 580.52408,360.46832 L 580.52408,381.90646 L 559.76684,381.90646 L 559.76684,394.42292 L 580.52408,394.42292 L 580.52408,449.00455 C 580.52408,457.29537 582.747,463.71382 587.13276,468.08958 C 591.78887,472.75565 598.88818,475.11877 608.22043,475.11877 C 613.54742,475.11877 618.79431,473.68691 622.10866,472.74564 L 622.10866,459.71857 C 618.8644,461.61105 615.17957,462.61241 611.11423,462.61241" style="fill:#007cc5;fill-rule:nonzero;stroke:none" id="path66"/>
|
||||
<path d="M 786.85488,338.61963 L 786.85488,394.38286 L 785.63328,394.38286 L 785.47307,394.12251 C 779.53527,384.52993 769.44203,379.67351 755.47369,379.67351 C 744.8097,379.67351 735.94807,383.11801 729.14915,389.91698 C 720.8883,398.17784 716.34234,410.88448 716.34234,425.68395 C 716.34234,442.11546 721.31887,456.51439 730.00027,465.18573 C 736.58891,471.78442 745.10008,475.11877 755.29346,475.11877 C 770.87391,475.11877 781.47782,467.46874 786.20403,460.29936 L 786.36424,460.04902 L 787.56581,460.04902 L 787.56581,472.8658 L 802.62558,472.8658 L 802.62558,338.61963 L 786.85488,338.61963 z M 786.85488,427.57643 C 786.85488,438.71102 783.04989,449.15475 776.67152,455.53306 C 771.98537,460.22926 766.12768,462.61241 759.25866,462.61241 C 753.08055,462.61241 747.71351,460.3294 743.32775,455.83347 C 735.5876,447.89304 733.08431,435.35664 733.28457,427.04571 C 733.03424,415.32032 736.34859,405.06684 742.36649,398.90875 C 746.73222,394.45296 752.35961,392.18997 759.07843,392.18997 C 766.01753,392.18997 771.95533,394.60308 776.71157,399.35936 C 783.16003,405.80784 786.85488,416.09128 786.85488,427.57643" style="fill:#007cc5;fill-rule:nonzero;stroke:none" id="path70"/>
|
||||
<path d="M 472.51232,338.61963 L 472.51232,394.38286 L 471.29072,394.38286 L 471.13051,394.12251 C 465.1827,384.52993 455.08945,379.67351 441.13114,379.67351 C 430.45712,379.67351 421.5955,383.11801 414.80658,389.91698 C 406.54575,398.17784 401.98976,410.88448 401.98976,425.68395 C 401.98976,442.11546 406.97631,456.51439 415.64769,465.18573 C 422.23633,471.78442 430.74751,475.11877 440.95089,475.11877 C 456.52134,475.11877 467.12525,467.46874 471.85145,460.29936 L 472.01166,460.04902 L 473.22325,460.04902 L 473.22325,472.8658 L 488.27301,472.8658 L 488.27301,338.61963 L 472.51232,338.61963 z M 472.51232,427.57643 C 472.51232,438.71102 468.69731,449.15475 462.32896,455.53306 C 457.63279,460.22926 451.7751,462.61241 444.9161,462.61241 C 438.72798,462.61241 433.37095,460.3294 428.9852,455.83347 C 421.24503,447.89304 418.73173,435.35664 418.94201,427.04571 C 418.69168,415.32032 421.99602,405.06684 428.02393,398.90875 C 432.38966,394.45296 438.00704,392.18997 444.73587,392.18997 C 451.67497,392.18997 457.60275,394.60308 462.359,399.35936 C 468.80746,405.80784 472.51232,416.09128 472.51232,427.57643" style="fill:#007cc5;fill-rule:nonzero;stroke:none" id="path74"/>
|
||||
</g>
|
||||
</g>
|
||||
<svg version="1.1" id="Layer_1" xmlns:x="ns_extend;" xmlns:i="ns_ai;" xmlns:graph="ns_graphs;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 70.5 33.5" style="enable-background:new 0 0 70.5 33.5;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#007DC5;}
|
||||
</style>
|
||||
<metadata>
|
||||
<sfw xmlns="ns_sfw;">
|
||||
<slices>
|
||||
</slices>
|
||||
<sliceSourceBounds bottomLeftOrigin="true" height="33.5" width="70.5" x="-228.2" y="-213.4">
|
||||
</sliceSourceBounds>
|
||||
</sfw>
|
||||
</metadata>
|
||||
<g>
|
||||
<path class="st0" d="M26,33.5h7.4V14.8c0-1-0.4-2-1.1-2.6l-11-11C20.7,0.4,19.7,0,18.7,0H0v7.4h20.4c3.1,0,5.6,2.5,5.6,5.6V33.5z">
|
||||
</path>
|
||||
<path class="st0" d="M44.5,33.5h-7.4V14.8c0-1,0.4-2,1.1-2.6l11-11C49.9,0.4,50.8,0,51.8,0h18.7v7.4H50.1c-3.1,0-5.6,2.5-5.6,5.6
|
||||
V33.5z">
|
||||
</path>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 846 B |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 10 KiB |
52
auth/assets/custom-icons/icons/us_mobile.svg
Normal file
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<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"
|
||||
width="400px" height="400px" viewBox="1754.66 549.858 400 400" enable-background="new 1754.66 549.858 400 400"
|
||||
xml:space="preserve">
|
||||
<g>
|
||||
<g id="deeditor_bgCarrier">
|
||||
<rect id="dee_c_e" x="1754.66" y="549.858" fill="#1043B8" width="400" height="400"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#E6E7E8" d="M2137.105,669.97l-45.542,18.7c0,0,45.358-18.52,45.358-18.701h-131.485v2.541
|
||||
c-0.184,4.357-0.918,8.534-2.204,12.347c-1.652,5.446-4.224,10.531-7.713,14.888c-4.591,6.173-10.65,11.439-17.813,14.888
|
||||
c-0.184,0-0.367,0.182-0.367,0.182c-0.367,0.18-0.734,0.362-1.286,0.544h-0.184c-0.367,0.182-0.367,0.182-0.551,0.182h-0.184
|
||||
V669.97h-50.134c-0.918,0-1.836,0.726-1.836,1.634v7.262c1.469-1.999,3.856-3.269,6.611-3.269c1.469,0,2.938,0.364,4.04,1.09
|
||||
c0.184,0,0.367,0.182,0.551,0.182c0.551,0.362,0.918,0.726,1.285,0.906c1.47,1.091,2.755,2.362,3.856,3.813l2.571,3.995
|
||||
l5.142,8.17l-13.957,21.786c-0.734-0.362-1.285-0.542-2.203-1.088c-6.945-3.615-13.023-8.695-17.813-14.888
|
||||
c-3.319-4.537-5.921-9.559-7.713-14.888c-1.12-3.853-1.858-7.806-2.203-11.803c0-1.088-0.184-2.177-0.184-3.085h-130.751
|
||||
l44.991,18.701l-45.176-18.519c1.47,5.083,3.306,9.985,5.143,14.888l35.259,14.888h-28.465c2.571,5.083,5.326,10.167,8.447,14.888
|
||||
l60.785,14.888h-50.501c4.04,5.266,8.264,10.167,12.671,14.888l78.414,15.252h-62.621c6.428,5.446,13.223,10.349,20.385,14.888
|
||||
l82.638,14.889h-54.357c20.935,8.896,43.522,13.98,67.396,14.889h14.324c23.873-0.908,46.645-6.174,67.396-14.889h-54.357
|
||||
l82.821-14.889c7.162-4.541,13.957-9.622,20.384-14.888h-62.621l78.414-14.888c4.407-4.722,8.631-9.805,12.671-14.889h-50.5
|
||||
l60.784-14.89c2.938-4.901,5.877-9.803,8.447-14.888h-28.647l35.259-14.888C2133.984,679.955,2135.637,675.054,2137.105,669.97"/>
|
||||
<path fill="#99999B" d="M1951.63,685.402c3.854,0,6.979-3.088,6.979-6.899c0-3.812-3.124-6.898-6.979-6.898
|
||||
s-6.979,3.089-6.979,6.898C1944.651,682.314,1947.777,685.402,1951.63,685.402"/>
|
||||
<path fill="#E7E7E6" d="M2005.62,669.97h-0.184v2.541c-0.184,4.357-0.918,8.534-2.204,12.347
|
||||
c-1.652,5.446-4.224,10.531-7.713,14.888c-4.591,6.173-10.65,11.439-17.813,14.888c-0.184,0-0.367,0.182-0.367,0.182
|
||||
c-0.367,0.181-0.734,0.363-1.286,0.544h-0.184c-0.367,0.182-0.367,0.182-0.551,0.182h-0.184V669.97h-50.134
|
||||
c-0.918,0-1.836,0.726-1.836,1.634v7.262c1.469-1.999,3.856-3.269,6.611-3.269c1.469,0,2.938,0.364,4.04,1.09
|
||||
c0.184,0,0.367,0.182,0.551,0.182c0.551,0.362,0.918,0.726,1.285,0.906c1.47,1.091,2.755,2.362,3.856,3.813l2.571,3.995
|
||||
l5.142,8.17l-13.957,21.786c-0.734-0.362-1.285-0.542-2.203-1.088c-6.945-3.615-13.023-8.695-17.813-14.888
|
||||
c-3.319-4.537-5.921-9.559-7.713-14.888c-1.12-3.853-1.858-7.806-2.203-11.803c0-1.088-0.184-2.177-0.184-3.085h-130.751
|
||||
l44.991,18.701l1.469,0.544l1.286,0.908l134.424,99.316l134.424-99.134l1.285-0.908l1.47-0.544c0,0,45.358-18.519,45.358-18.701
|
||||
H2005.62z M1951.813,673.057c2.388,0,4.407,1.997,4.407,4.357c0,2.361-2.02,4.357-4.407,4.357s-4.407-1.997-4.407-4.357
|
||||
C1947.406,675.054,1949.426,673.057,1951.813,673.057"/>
|
||||
<path fill="#CED4D4" d="M2137.105,669.97l-45.542,18.7l-1.47,0.544l-1.285,0.908l-134.24,99.134l-134.607-99.132l-1.286-0.908
|
||||
l-1.469-0.544l-44.992-18.701c1.47,5.083,3.306,9.985,5.143,14.888l35.259,14.888h-28.465c2.571,5.083,5.326,10.167,8.447,14.888
|
||||
l60.785,14.888h-50.501c4.04,5.266,8.264,10.167,12.671,14.888l78.414,15.252h-62.621c6.428,5.446,13.223,10.349,20.385,14.888
|
||||
l82.638,14.889h-54.357c20.935,8.896,43.522,13.98,67.396,14.889h14.324c23.873-0.908,46.645-6.174,67.396-14.889h-54.357
|
||||
l82.821-14.889c7.162-4.541,13.957-9.622,20.384-14.888h-62.621l78.414-14.888c4.407-4.722,8.631-9.805,12.671-14.889h-50.5
|
||||
l60.784-14.89c2.938-4.901,5.877-9.803,8.447-14.888h-28.647l35.259-14.888C2133.984,679.955,2135.637,675.054,2137.105,669.97"/>
|
||||
<path fill="#0055A2" d="M1970.359,726.256h-74.741l17.263,29.412h86.678l17.262-29.412H1970.359z"/>
|
||||
<path fill="#CE2832" d="M1999.559,755.668h-29.199v49.93l16.16-27.596L1999.559,755.668z"/>
|
||||
<path fill="#F2F2F2" d="M1942.08,755.668v49.93l14.141,24.331l14.141-24.331v-49.93H1942.08z"/>
|
||||
<path fill="#CE2832" d="M1940.426,755.668h-27.545L1925.919,778l16.16,27.598v-49.93H1940.426z"/>
|
||||
<path fill="#FFFFFF" d="M1956.219,732.426l2.388,4.903l5.325,0.727l-3.855,3.813l0.918,5.266l-4.774-2.542l-4.959,2.542
|
||||
l1.103-5.266l-4.041-3.813l5.51-0.727L1956.219,732.426z M1984.684,732.426l2.387,4.903l5.51,0.727l-4.04,3.813l0.918,5.266
|
||||
l-4.774-2.542l-4.774,2.542l0.918-5.266l-3.856-3.813l5.325-0.727L1984.684,732.426z M1927.571,732.426l2.571,4.903l5.325,0.727
|
||||
l-3.856,3.813l0.919,5.266l-4.959-2.542l-4.774,2.542l0.918-5.266l-3.856-3.813l5.326-0.727L1927.571,732.426z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.9 KiB |
@@ -82,9 +82,11 @@ PODS:
|
||||
- qr_code_scanner (0.2.0):
|
||||
- Flutter
|
||||
- MTBBarcodeScanner
|
||||
- SDWebImage (5.19.7):
|
||||
- SDWebImage/Core (= 5.19.7)
|
||||
- SDWebImage/Core (5.19.7)
|
||||
- scan (0.0.1):
|
||||
- Flutter
|
||||
- SDWebImage (5.20.0):
|
||||
- SDWebImage/Core (= 5.20.0)
|
||||
- SDWebImage/Core (5.20.0)
|
||||
- Sentry/HybridSDK (8.36.0)
|
||||
- sentry_flutter (8.9.0):
|
||||
- Flutter
|
||||
@@ -144,6 +146,7 @@ DEPENDENCIES:
|
||||
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
||||
- privacy_screen (from `.symlinks/plugins/privacy_screen/ios`)
|
||||
- qr_code_scanner (from `.symlinks/plugins/qr_code_scanner/ios`)
|
||||
- scan (from `.symlinks/plugins/scan/ios`)
|
||||
- sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`)
|
||||
- share_plus (from `.symlinks/plugins/share_plus/ios`)
|
||||
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
|
||||
@@ -205,6 +208,8 @@ EXTERNAL SOURCES:
|
||||
:path: ".symlinks/plugins/privacy_screen/ios"
|
||||
qr_code_scanner:
|
||||
:path: ".symlinks/plugins/qr_code_scanner/ios"
|
||||
scan:
|
||||
:path: ".symlinks/plugins/scan/ios"
|
||||
sentry_flutter:
|
||||
:path: ".symlinks/plugins/sentry_flutter/ios"
|
||||
share_plus:
|
||||
@@ -245,7 +250,8 @@ SPEC CHECKSUMS:
|
||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||
privacy_screen: 1a131c052ceb3c3659934b003b0d397c2381a24e
|
||||
qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e
|
||||
SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
|
||||
scan: aea35bb4aa59ccc8839c576a18cd57c7d492cc86
|
||||
SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8
|
||||
Sentry: f8374b5415bc38dfb5645941b3ae31230fbeae57
|
||||
sentry_flutter: 0eb93e5279eb41e2392212afe1ccd2fecb4f8cbe
|
||||
share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad
|
||||
|
||||
@@ -1,122 +1,38 @@
|
||||
{
|
||||
"images": [
|
||||
"images" : [
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon-App-20x20@2x.png",
|
||||
"scale": "2x"
|
||||
"filename" : "Icon-App-1024x1024@1x.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon-App-20x20@3x.png",
|
||||
"scale": "3x"
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"filename" : "Dark mode-1024@1x.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon-App-29x29@1x.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon-App-29x29@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon-App-29x29@3x.png",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon-App-40x40@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon-App-40x40@3x.png",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"size": "60x60",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon-App-60x60@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "60x60",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon-App-60x60@3x.png",
|
||||
"scale": "3x"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon-App-20x20@1x.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon-App-20x20@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon-App-29x29@1x.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon-App-29x29@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon-App-40x40@1x.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon-App-40x40@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "76x76",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon-App-76x76@1x.png",
|
||||
"scale": "1x"
|
||||
},
|
||||
{
|
||||
"size": "76x76",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon-App-76x76@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "83.5x83.5",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon-App-83.5x83.5@2x.png",
|
||||
"scale": "2x"
|
||||
},
|
||||
{
|
||||
"size": "1024x1024",
|
||||
"idiom": "ios-marketing",
|
||||
"filename": "Icon-App-1024x1024@1x.png",
|
||||
"scale": "1x"
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "tinted"
|
||||
}
|
||||
],
|
||||
"filename" : "Tinted icon-1024@1x.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info": {
|
||||
"version": 1,
|
||||
"author": "xcode"
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
||||
|
After Width: | Height: | Size: 222 KiB |
|
Before Width: | Height: | Size: 773 B |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 219 KiB |
@@ -1,8 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
@@ -14,10 +17,17 @@
|
||||
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" image="LaunchBackground" translatesAutoresizingMaskIntoConstraints="NO" id="tWc-Dq-wcI"/>
|
||||
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4"></imageView>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" image="LaunchBackground" translatesAutoresizingMaskIntoConstraints="NO" id="tWc-Dq-wcI">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||
</imageView>
|
||||
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<color key="tintColor" systemColor="labelColor"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
@@ -34,11 +44,14 @@
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="53" y="375"/>
|
||||
<point key="canvasLocation" x="80.916030534351137" y="264.08450704225356"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="LaunchImage" width="1153" height="1153"/>
|
||||
<image name="LaunchBackground" width="1" height="1"/>
|
||||
<image name="LaunchImage" width="288" height="288"/>
|
||||
<systemColor name="labelColor">
|
||||
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -7,8 +7,11 @@ const String sentryDSN =
|
||||
"https://ed4ddd6309b847ba8849935e26e9b648@sentry.ente.io/9";
|
||||
const String sentryTunnel = "https://sentry-reporter.ente.io";
|
||||
const String roadmapURL = "https://roadmap.ente.io";
|
||||
const String githubIssuesUrl =
|
||||
"https://github.com/ente-io/ente/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc";
|
||||
|
||||
const String kAccountsUrl = "https://accounts.ente.io";
|
||||
|
||||
const String githubFeatureRequestUrl =
|
||||
"https://github.com/ente-io/ente/discussions/categories/feature-requests?discussions_q=is%3Aopen+category%3A%22Feature+requests%22+label%3A%22-+auth%22+sort%3Atop";
|
||||
const int microSecondsInDay = 86400000000;
|
||||
const int android11SDKINT = 30;
|
||||
const int galleryLoadStartTime = -8000000000000000; // Wednesday, March 6, 1748
|
||||
|
||||
@@ -496,7 +496,7 @@ ElevatedButtonThemeData buildElevatedButtonThemeData({
|
||||
fontFamily: 'Inter-SemiBold',
|
||||
fontSize: 18,
|
||||
),
|
||||
padding: const EdgeInsets.symmetric(vertical: 18),
|
||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(Radius.circular(4)),
|
||||
),
|
||||
|
||||
@@ -196,6 +196,7 @@
|
||||
"scanAQrCode": "مسح رمز QR",
|
||||
"enterDetailsManually": "أدخل التفاصيل يدوياً",
|
||||
"edit": "تعديل",
|
||||
"share": "مشاركة",
|
||||
"copiedToClipboard": "تم النسخ إلى الحافظة",
|
||||
"copiedNextToClipboard": "تم نسخ الرموز التالية إلى الحافظة",
|
||||
"error": "خطأ",
|
||||
@@ -435,8 +436,6 @@
|
||||
"customEndpoint": "متصل بـ{endpoint}",
|
||||
"pinText": "ثبت",
|
||||
"unpinText": "ألغِ التثبيت",
|
||||
"pinnedCodeMessage": "ثُبِّت {code}",
|
||||
"unpinnedCodeMessage": "أُلغِي تثبيت {code}",
|
||||
"tags": "الأوسمة",
|
||||
"createNewTag": "أنشيء وسم جديد",
|
||||
"tag": "وسم",
|
||||
|
||||
@@ -88,6 +88,8 @@
|
||||
"useRecoveryKey": "Използвайте ключ за възстановяване",
|
||||
"incorrectPasswordTitle": "Грешна парола",
|
||||
"welcomeBack": "Добре дошли отново!",
|
||||
"emailAlreadyRegistered": "Имейлът вече е регистриран.",
|
||||
"emailNotRegistered": "Имейлът не е регистриран.",
|
||||
"madeWithLoveAtPrefix": "направено с ❤️ от ",
|
||||
"supportDevs": "Абонирайте се за <bold-green>ente</bold-green>, за да ни подкрепите",
|
||||
"supportDiscount": "Използвайте промокод „AUTH“, за да получите 10% отстъпка през първата година",
|
||||
@@ -148,7 +150,7 @@
|
||||
"hintForMobile": "Натиснете продължително код, за да го редактирате или премахнете.",
|
||||
"hintForDesktop": "Натиснете десен бутон върху код, за да го редактирате или премахнете.",
|
||||
"scan": "Сканиране",
|
||||
"scanACode": "Скениране на код",
|
||||
"scanACode": "Сканиране на код",
|
||||
"verify": "Потвърждаване",
|
||||
"verifyEmail": "Потвърдете имейла",
|
||||
"enterCodeHint": "Въведете 6-цифрения код от\nВашето приложение за удостоверяване",
|
||||
@@ -156,6 +158,7 @@
|
||||
"twoFactorAuthTitle": "Двуфакторно удостоверяване",
|
||||
"passkeyAuthTitle": "Удостоверяване с ключ за парола",
|
||||
"verifyPasskey": "Потвърдете ключ за парола",
|
||||
"loginWithTOTP": "Влизане с еднократен код",
|
||||
"recoverAccount": "Възстановяване на акаунт",
|
||||
"enterRecoveryKeyHint": "Въведете Вашия ключ за възстановяване",
|
||||
"recover": "Възстановяване",
|
||||
@@ -199,7 +202,7 @@
|
||||
"sorryUnableToGenCode": "За съжаление не може да се генерира код за {issuerName}",
|
||||
"noResult": "Няма резултати",
|
||||
"addCode": "Добавяне на код",
|
||||
"scanAQrCode": "Скениране на QR код",
|
||||
"scanAQrCode": "Сканиране на QR код",
|
||||
"enterDetailsManually": "Въведете подробности ръчно",
|
||||
"edit": "Редактиране",
|
||||
"share": "Споделяне",
|
||||
@@ -257,6 +260,10 @@
|
||||
"areYouSureYouWantToLogout": "Наистина ли искате да излезете от профила си?",
|
||||
"yesLogout": "Да, излез",
|
||||
"exit": "Изход",
|
||||
"theme": "Тема",
|
||||
"lightTheme": "Светла",
|
||||
"darkTheme": "Тъмна",
|
||||
"systemTheme": "Системна",
|
||||
"verifyingRecoveryKey": "Проверка на ключа за възстановяване...",
|
||||
"recoveryKeyVerified": "Ключът за възстановяване е проверен",
|
||||
"recoveryKeySuccessBody": "Страхотно! Вашият ключ за възстановяване е валиден. Благодарим Ви за проверката.\n\nМоля, не забравяйте да запазите безопасно архивирания си ключ за възстановяване.",
|
||||
@@ -327,6 +334,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Персонализирано",
|
||||
"editOrder": "Промяна на подредбата",
|
||||
"mostFrequentlyUsed": "Често използвани",
|
||||
"mostRecentlyUsed": "Последно използвани",
|
||||
"activeSessions": "Активни сесии",
|
||||
"somethingWentWrongPleaseTryAgain": "Нещо се обърка, моля опитайте отново",
|
||||
"thisWillLogYouOutOfThisDevice": "Това ще Ви изкара от профила на това устройство!",
|
||||
@@ -444,10 +455,11 @@
|
||||
"invalidEndpointMessage": "За съжаление въведената от Вас крайна точка е невалидна. Моля, въведете валидна крайна точка и опитайте отново.",
|
||||
"endpointUpdatedMessage": "Крайната точка е актуализирана успешно",
|
||||
"customEndpoint": "Свързан към {endpoint}",
|
||||
"pinText": "ПИН код",
|
||||
"pinText": "Закачане",
|
||||
"unpinText": "Откачане",
|
||||
"pinnedCodeMessage": "{code} е закачен",
|
||||
"unpinnedCodeMessage": "{code} е откачен",
|
||||
"pinned": "Закачен",
|
||||
"tags": "Етикети",
|
||||
"createNewTag": "Създаване на етикет",
|
||||
"tag": "Етикет",
|
||||
@@ -484,5 +496,13 @@
|
||||
"appLockNotEnabled": "Заключването на приложението не е активирано",
|
||||
"appLockNotEnabledDescription": "Моля, активирайте заключването на приложението от Сигурност > Заключване на приложението",
|
||||
"authToViewPasskey": "Моля, удостоверете се, за да видите Вашите ключове за парола",
|
||||
"appLockOfflineModeWarning": "Избрахте да продължите без резервни копия. Ако забравите паролата на приложението си, ще бъдете заключени от достъп до вашите данни."
|
||||
"appLockOfflineModeWarning": "Избрахте да продължите без резервни копия. Ако забравите паролата на приложението си, ще бъдете заключени от достъп до вашите данни.",
|
||||
"duplicateCodes": "Повтарящи се кодове",
|
||||
"noDuplicates": "✨ Няма дубликати",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Нямате повтарящи се кодове, които могат да бъдат изчистени",
|
||||
"deduplicateCodes": "Премахване на повтарящи се кодове",
|
||||
"deselectAll": "Демаркиране на всички",
|
||||
"selectAll": "Избиране на всички",
|
||||
"deleteDuplicates": "Изтриване на дубликатите",
|
||||
"plainHTML": "Обикновен HTML"
|
||||
}
|
||||
@@ -156,6 +156,7 @@
|
||||
"twoFactorAuthTitle": "Autenticació de dos factors",
|
||||
"passkeyAuthTitle": "Verificació per passkey",
|
||||
"verifyPasskey": "Verifica la passkey",
|
||||
"loginWithTOTP": "Inici de sessió amb TOTP",
|
||||
"recoverAccount": "Recupera el compte",
|
||||
"enterRecoveryKeyHint": "Introdueix la teva clau de recuperació",
|
||||
"recover": "Recupera",
|
||||
@@ -257,6 +258,10 @@
|
||||
"areYouSureYouWantToLogout": "Segur que vols tancar la sessió?",
|
||||
"yesLogout": "Sí, tanca la sessió",
|
||||
"exit": "Surt",
|
||||
"theme": "Tema",
|
||||
"lightTheme": "Clar",
|
||||
"darkTheme": "Fosc",
|
||||
"systemTheme": "Del sistema",
|
||||
"verifyingRecoveryKey": "Verificant clau de recuperació...",
|
||||
"recoveryKeyVerified": "Clau de recuperació verificada",
|
||||
"recoveryKeySuccessBody": "Perfecte! La teva clau de recuperació és vàlida. Gràcies per verificar-ho.\n\nSi us plau, recorda mantenir una còpia de seguretat de la teva clau de recuperació en un lloc segur.",
|
||||
@@ -327,6 +332,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Personalitzat",
|
||||
"editOrder": "Edita l'ordre",
|
||||
"mostFrequentlyUsed": "Usats sovint",
|
||||
"mostRecentlyUsed": "Usats recentment",
|
||||
"activeSessions": "Sessions actives",
|
||||
"somethingWentWrongPleaseTryAgain": "S'ha produït un error, si us plau, intenta-ho de nou",
|
||||
"thisWillLogYouOutOfThisDevice": "Això tancarà la sessió en aquest dispositiu!",
|
||||
@@ -446,8 +455,9 @@
|
||||
"customEndpoint": "Connectat a {endpoint}",
|
||||
"pinText": "Fixa",
|
||||
"unpinText": "Desfixa",
|
||||
"pinnedCodeMessage": "{code} fixat",
|
||||
"unpinnedCodeMessage": "{code} deixat de fixar",
|
||||
"pinnedCodeMessage": "{code} s'ha fixat",
|
||||
"unpinnedCodeMessage": "{code} s'ha deixat de fixar",
|
||||
"pinned": "Fixat",
|
||||
"tags": "Etiquetes",
|
||||
"createNewTag": "Crea una nova etiqueta",
|
||||
"tag": "Etiqueta",
|
||||
@@ -484,5 +494,13 @@
|
||||
"appLockNotEnabled": "Bloqueig de l'aplicació no habilitat",
|
||||
"appLockNotEnabledDescription": "Si us plau, habilita el bloqueig de l'aplicació a Seguretat > Bloqueig de l'aplicació",
|
||||
"authToViewPasskey": "Autentica't per veure la passkey",
|
||||
"appLockOfflineModeWarning": "Has triat procedir sense còpies de seguretat. Si oblides el bloqueig de l'aplicació, no podràs accedir a les teves dades."
|
||||
"appLockOfflineModeWarning": "Has triat procedir sense còpies de seguretat. Si oblides el bloqueig de l'aplicació, no podràs accedir a les teves dades.",
|
||||
"duplicateCodes": "Codis duplicats",
|
||||
"noDuplicates": "✨ Sense duplicats",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "No teniu codis duplicats que es puguin esborrar",
|
||||
"deduplicateCodes": "Desduplica codis",
|
||||
"deselectAll": "Desselecciona-ho tot",
|
||||
"selectAll": "Seleccionar-ho tot",
|
||||
"deleteDuplicates": "Elimina duplicats",
|
||||
"plainHTML": "HTML pla"
|
||||
}
|
||||
@@ -1 +1,504 @@
|
||||
{}
|
||||
{
|
||||
"account": "Účet",
|
||||
"unlock": "Odemknout",
|
||||
"recoveryKey": "Obnovovací klíč",
|
||||
"counterAppBarTitle": "Počítadlo",
|
||||
"@counterAppBarTitle": {
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "Bezpečně zálohujte své 2FA kódy",
|
||||
"onBoardingGetStarted": "Začínáme",
|
||||
"setupFirstAccount": "Nastavte si první účet",
|
||||
"importScanQrCode": "Skenovat QR kód",
|
||||
"qrCode": "QR kód",
|
||||
"importEnterSetupKey": "Zadejte nastavovací klíč",
|
||||
"importAccountPageTitle": "Zadejte podrobnosti o účtu",
|
||||
"secretCanNotBeEmpty": "Tajný klíč nemůže být prázdný",
|
||||
"bothIssuerAndAccountCanNotBeEmpty": "Pole vydavatel a účet nesmějí být prázdná",
|
||||
"incorrectDetails": "Nesprávné podrobnosti",
|
||||
"pleaseVerifyDetails": "Prosím, ověřte podrobnosti a zkuste to znovu",
|
||||
"codeIssuerHint": "Vydavatel",
|
||||
"codeSecretKeyHint": "Tajný klíč",
|
||||
"secret": "Tajný klíč",
|
||||
"all": "Vše",
|
||||
"notes": "Poznámky",
|
||||
"notesLengthLimit": "Poznámky mohou být maximálně {count} znaků dlouhé",
|
||||
"@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": "Účet (you@domain.com)",
|
||||
"codeTagHint": "Tag",
|
||||
"accountKeyType": "Druh klíče",
|
||||
"sessionExpired": "Relace vypršela",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
"pleaseLoginAgain": "Přihlaste se, prosím, znovu",
|
||||
"loggingOut": "Odhlašování...",
|
||||
"timeBasedKeyType": "Časově založený (TOTP)",
|
||||
"counterBasedKeyType": "Založeno na čítači (HOTP)",
|
||||
"saveAction": "Uložit",
|
||||
"nextTotpTitle": "další",
|
||||
"deleteCodeTitle": "Odstranit kód?",
|
||||
"deleteCodeMessage": "Opravdu chcete smazat tento kód? Tato akce je nevratná.",
|
||||
"trashCode": "Přesunout kód do koše?",
|
||||
"trashCodeMessage": "Opravdu chcete přesunout kód pro {account} do koše?",
|
||||
"trash": "Koš",
|
||||
"viewLogsAction": "Zobrazit logy",
|
||||
"sendLogsDescription": "Tímto se odešlou protokoly, které nám pomohou vyladit váš problém. I když přijímáme opatření, abychom zajistili, že citlivé informace nebudou protokolovány, doporučujeme Vám si tyto protokoly prohlédnout, před sdílením prohlédnout.",
|
||||
"preparingLogsTitle": "Příprava logů...",
|
||||
"emailLogsTitle": "Zaslat logy e-mailem",
|
||||
"emailLogsMessage": "Pošlete prosím logy na {email}",
|
||||
"@emailLogsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"copyEmailAction": "Kopírovat e-mail",
|
||||
"exportLogsAction": "Exportovat logy",
|
||||
"reportABug": "Nahlásit chybu",
|
||||
"crashAndErrorReporting": "Hlášení pádů a chyb",
|
||||
"reportBug": "Nahlásit chybu",
|
||||
"emailUsMessage": "Pošlete nám prosím e-mail na {email}",
|
||||
"@emailUsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contactSupport": "Kontaktovat podporu",
|
||||
"rateUsOnStore": "Ohodnoťte nás na {storeName}",
|
||||
"blog": "Blog",
|
||||
"merchandise": "E-shop",
|
||||
"verifyPassword": "Ověření hesla",
|
||||
"pleaseWait": "Čekejte prosím...",
|
||||
"generatingEncryptionKeysTitle": "Generování šifrovacích klíčů...",
|
||||
"recreatePassword": "Znovu vytvořit heslo",
|
||||
"recreatePasswordMessage": "Aktuální zařízení není dostatečně výkonné k ověření Vašeho hesla, potřebujeme ho proto obnovit způsobem, který bude fungovat se všemi zařízeními. \n\nPřihlaste se, prosím, použitím svého obnovovacího klíče a obnovte heslo (můžete použít stejné, pokud chcete).",
|
||||
"useRecoveryKey": "Použít obnovovací klíč",
|
||||
"incorrectPasswordTitle": "Nesprávné heslo",
|
||||
"welcomeBack": "Vítejte zpět!",
|
||||
"madeWithLoveAtPrefix": "vyrobeno s ❤️ v ",
|
||||
"supportDevs": "Předplaťte si <bold-green>ente</bold-green>, abyste nás podpořili",
|
||||
"supportDiscount": "Použijte kód \"AUTH\" pro získání 10% slevy na první rok",
|
||||
"changeEmail": "Změnit e-mail",
|
||||
"changePassword": "Změnit heslo",
|
||||
"data": "Data",
|
||||
"importCodes": "Importovat kódy",
|
||||
"importTypePlainText": "Prostý text",
|
||||
"importTypeEnteEncrypted": "Šifrovaný export z Ente",
|
||||
"passwordForDecryptingExport": "Heslo pro dešifrování exportu",
|
||||
"passwordEmptyError": "Heslo nemůže být prázdné",
|
||||
"importFromApp": "Importovat kódy z {appName}",
|
||||
"importGoogleAuthGuide": "Exportujte své účty z Google Authenticator do QR kódu pomocí možnosti \"Transfer Accounts\". Potom pomocí jiného zařízení naskenujte QR kód.\n\nTip: Pro vyfocení QR kódu můžete použít webovou kameru svého notebooku..",
|
||||
"importSelectJsonFile": "Vybrat soubor JSON",
|
||||
"importSelectAppExport": "Vybrat soubor exportovaný z {appName}",
|
||||
"importEnteEncGuide": "Vyberte šifrovaný JSON soubor exportovaný z Ente",
|
||||
"importRaivoGuide": "Použijte možnost \"Export OTPs to Zip archive\" v nastavení aplikace Raivo.",
|
||||
"importBitwardenGuide": "Použijte možnost \"Export vault\" v Bitwarden Tools a inportujte nešifrovaný soubor JSON.",
|
||||
"importAegisGuide": "Použijte možnost \"Export the vault\" v nastavení aplikace Aegis.",
|
||||
"import2FasGuide": "Použijte možnost \"Settings->Backup -Export\" v 2FA.\n\nPokud je Vaše záloha šifrovaná, budete muset zadat heslo pro její odemčení",
|
||||
"importLastpassGuide": "V nastavení aplikace Lastpass Authenticator vyberte možnost \"Transfer accounts\" a poté \"Export accounts to file\". Vygenerovaný soubor JSON následně nahrajte sem.",
|
||||
"exportCodes": "Exportovat kódy",
|
||||
"importLabel": "Importovat",
|
||||
"importInstruction": "Vyberte, prosím, soubor obsahující seznam Vašich kódů v následujícím formátu",
|
||||
"importCodeDelimiterInfo": "Kódy mohou být odděleny čárkou nebo novým řádkem",
|
||||
"selectFile": "Vybrat soubor",
|
||||
"emailVerificationToggle": "Ověření pomocí e-mailu",
|
||||
"emailVerificationEnableWarning": "Abyste předešli uzamčení svého účtu, nezapomeňte si před povolením ověření e-mailem uložit kopii svého 2FA emailu mimo Ente Auth.",
|
||||
"authToChangeEmailVerificationSetting": "Pro změnu ověření pomocí emailu se musíte ověřit",
|
||||
"authenticateGeneric": "Ověřte se, prosím",
|
||||
"authToViewYourRecoveryKey": "Pro zobrazení svého obnovovacího klíče se, prosím, ověřte",
|
||||
"authToChangeYourEmail": "Pro změnu svého e-mailu se, prosím, ověřte",
|
||||
"authToChangeYourPassword": "Pro změnu svého hesla se, prosím, ověřte",
|
||||
"authToViewSecrets": "Pro zobrazení svých tajných údajů se musíte ověřit",
|
||||
"ok": "Ok",
|
||||
"cancel": "Zrušit",
|
||||
"yes": "Ano",
|
||||
"no": "Ne",
|
||||
"email": "E-mail",
|
||||
"support": "Podpora",
|
||||
"general": "Hlavní",
|
||||
"settings": "Nastavení",
|
||||
"copied": "Zkopírováno",
|
||||
"pleaseTryAgain": "Zkuste to prosím znovu",
|
||||
"existingUser": "Stávající uživatel",
|
||||
"newUser": "Nový uživatel Ente",
|
||||
"delete": "Smazat",
|
||||
"enterYourPasswordHint": "Zadejte své heslo",
|
||||
"forgotPassword": "Zapomenuté heslo",
|
||||
"oops": "Jejda",
|
||||
"suggestFeatures": "Navrhnout funkce",
|
||||
"faq": "Často kladené dotazy (FAQ)",
|
||||
"somethingWentWrongMessage": "Něco se pokazilo. Zkuste to prosím znovu",
|
||||
"leaveFamily": "Odejít z rodiny",
|
||||
"leaveFamilyMessage": "Jste si jisti, že chcete opustit rodinný plán?",
|
||||
"inFamilyPlanMessage": "Jste v rodinném tarifu!",
|
||||
"hintForMobile": "Pro odstranění nebo úpravu kódu dlouze podržte.",
|
||||
"hintForDesktop": "Pro úpravu nebo smazáno klikněte na kód pravým tlačítkem.",
|
||||
"scan": "Skenovat",
|
||||
"scanACode": "Skenovat kód",
|
||||
"verify": "Ověřit",
|
||||
"verifyEmail": "Ověřit e-mail",
|
||||
"enterCodeHint": "Zadejte 6místný kód ze své autentizační aplikace",
|
||||
"lostDeviceTitle": "Ztratili jste zařízení?",
|
||||
"twoFactorAuthTitle": "Dvoufaktorové ověření",
|
||||
"verifyPasskey": "Ověřit přístupový klíč",
|
||||
"loginWithTOTP": "Přihlášení s TOTP",
|
||||
"recoverAccount": "Obnovit účet",
|
||||
"enterRecoveryKeyHint": "Zadejte svůj obnovovací klíč",
|
||||
"recover": "Obnovit",
|
||||
"contactSupportViaEmailMessage": "Prosím zašlete e-mail na ",
|
||||
"@contactSupportViaEmailMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "Neplatný QR kód",
|
||||
"noRecoveryKeyTitle": "Nemáte obnovovací klíč?",
|
||||
"enterEmailHint": "Zadejte svou e-mailovou adresu",
|
||||
"invalidEmailTitle": "Neplatná e-mailová adresa",
|
||||
"invalidEmailMessage": "Prosím, zadejte platnou e-mailovou adresu.",
|
||||
"deleteAccount": "Odstranit účet",
|
||||
"deleteAccountQuery": "Mrzí nás, že odcházíte. Máte nějaké problémy s aplikací?",
|
||||
"yesSendFeedbackAction": "Ano, poslat zpětnou vazbu",
|
||||
"noDeleteAccountAction": "Ne, odstranit účet",
|
||||
"initiateAccountDeleteTitle": "Pro zahájení odstranění účtu se, prosím, ověřte",
|
||||
"sendEmail": "Odeslat e-mail",
|
||||
"createNewAccount": "Vytvořit nový účet",
|
||||
"weakStrength": "Slabé",
|
||||
"strongStrength": "Silné",
|
||||
"moderateStrength": "Střední",
|
||||
"confirmPassword": "Potvrzení hesla",
|
||||
"close": "Zavřít",
|
||||
"oopsSomethingWentWrong": "Jejda, něco se pokazilo.",
|
||||
"selectLanguage": "Vybrat jazyk",
|
||||
"language": "Jazyk",
|
||||
"social": "Sociální sítě",
|
||||
"security": "Zabezpečení",
|
||||
"lockscreen": "Zamykací obrazovka",
|
||||
"authToChangeLockscreenSetting": "Pro změnu nastavení uzamčení obrazovky se musíte ověřit",
|
||||
"deviceLockEnablePreSteps": "Pro aktivaci zámku zařízení si nastavte přístupový kód zařízení nebo zámek obrazovky v nastavení systému.",
|
||||
"viewActiveSessions": "Zobrazit aktivní relace",
|
||||
"authToViewYourActiveSessions": "Pro zobrazení svých aktivních relací se, prosím, ověřte",
|
||||
"searchHint": "Vyhledávejte...",
|
||||
"search": "Hledání",
|
||||
"sorryUnableToGenCode": "Omlouváme se, nepodařilo se vygenerovat kód pro {issuerName}",
|
||||
"noResult": "Žádné výsledky",
|
||||
"addCode": "Přidat kód",
|
||||
"scanAQrCode": "Naskenovat QR kód",
|
||||
"enterDetailsManually": "Vložit údaje ručně",
|
||||
"edit": "Upravit",
|
||||
"share": "Sdílet",
|
||||
"shareCodes": "Sdílet kódy",
|
||||
"shareCodesDuration": "Vyberte dobu, po kterou chcete kódy sdílet.",
|
||||
"restore": "Obnovit",
|
||||
"copiedToClipboard": "Zkopírováno do schránky",
|
||||
"copiedNextToClipboard": "Další kód zkopírován do schránky",
|
||||
"error": "Chyba",
|
||||
"recoveryKeyCopiedToClipboard": "Obnovovací klíč byl zkopírován",
|
||||
"recoveryKeyOnForgotPassword": "Tento klíč je jedinou cestou pro obnovení Vašich dat, pokud zapomenete heslo.",
|
||||
"recoveryKeySaveDescription": "Tento 24místný klíč neuchováváme, uschovejte ho, prosím, na bezpečném místě.",
|
||||
"doThisLater": "Udělat později",
|
||||
"saveKey": "Uložit klíč",
|
||||
"save": "Uložit",
|
||||
"send": "Odeslat",
|
||||
"saveOrSendDescription": "Chcete toto uložit do paměti zařízení (ve výchozím nastavení do složky Stažené soubory), nebo odeslat do jiných aplikací?",
|
||||
"saveOnlyDescription": "Chcete toto uložit do paměti zařízení (ve výchozím nastavení do složky Stažené soubory)?",
|
||||
"back": "Zpět",
|
||||
"createAccount": "Vytvořit účet",
|
||||
"passwordStrength": "Síla hesla: {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": "Heslo",
|
||||
"signUpTerms": "Souhlasím s <u-terms>podmínkami služby</u-terms> a <u-terms>zásadami ochrany osobních údajů</u-terms>",
|
||||
"privacyPolicyTitle": "Podmínky ochrany osobních údajů",
|
||||
"termsOfServicesTitle": "Podmínky",
|
||||
"encryption": "Šifrování",
|
||||
"setPasswordTitle": "Nastavit heslo",
|
||||
"changePasswordTitle": "Změnit heslo",
|
||||
"resetPasswordTitle": "Obnovit heslo",
|
||||
"encryptionKeys": "Šifrovací klíče",
|
||||
"passwordWarning": "Vaše heslo neuchováváme. Pokud ho zapomenete, <underline>nemůžeme Vaše data dešifrovat</underline>",
|
||||
"enterPasswordToEncrypt": "Zadejte heslo, kterým můžeme zašifrovat Vaše data",
|
||||
"enterNewPasswordToEncrypt": "Zadejte nové heslo, kterým můžeme šifrovat Vaše data",
|
||||
"passwordChangedSuccessfully": "Heslo úspěšně změněno",
|
||||
"generatingEncryptionKeys": "Generování šifrovacích klíčů...",
|
||||
"continueLabel": "Pokračovat",
|
||||
"insecureDevice": "Nezabezpečené zařízení",
|
||||
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Omlouváme se, na tomto zařízení nemůžeme vygenerovat bezpečné klíče.\n\nprosím přihlaste se z jiného zařízení.",
|
||||
"howItWorks": "Jak to funguje",
|
||||
"ackPasswordLostWarning": "Rozumím, že při zapomenutí hesla mohu ztratit svá data, protože jsou zabezpečena <underline>koncovým šifrováním</underline>.",
|
||||
"loginTerms": "Kliknutím na přihlášení souhlasím s <u-terms>podmínkami služby</u-terms> a <u-policy>zásadami ochrany osobních údajů</u-policy>",
|
||||
"logInLabel": "Přihlásit se",
|
||||
"logout": "Odhlásit se",
|
||||
"areYouSureYouWantToLogout": "Opravdu se chcete odhlásit?",
|
||||
"yesLogout": "Ano, odhlásit se",
|
||||
"exit": "Konec",
|
||||
"theme": "Motiv",
|
||||
"lightTheme": "Světlý",
|
||||
"darkTheme": "Tmavý",
|
||||
"systemTheme": "Systém",
|
||||
"verifyingRecoveryKey": "Ověřování obnovovacího klíče...",
|
||||
"recoveryKeyVerified": "Obnovovací klíč byl ověřen",
|
||||
"recoveryKeySuccessBody": "Skvělé! ",
|
||||
"invalidRecoveryKey": "Vámi zadaný obnovovací klíč není platný. Prosím, ujistěte se, že obsahuje 24 slov, zkontrolujte také jejich hláskování.\n\nPokud jste zadali starší obnovovací kód, ujistěte se, že je dlouhý 64 znaků a zkontrolujte každý z nich.",
|
||||
"recreatePasswordTitle": "Resetovat heslo",
|
||||
"recreatePasswordBody": "Aktzální zařízení není dostatečně výkonné pro ověření Vašeho hesla, ale můžeme ho regenerovat způsobem, který funguje ve všech zařízením.\n\nPřihlašte se pomocí obnovovacího klíče a znovu si vygenerujte své heslo (můžete použít opět stejné, pokud chcete).",
|
||||
"invalidKey": "Neplatný klíč",
|
||||
"tryAgain": "Zkusit znovu",
|
||||
"viewRecoveryKey": "Zobrazit obnovovací klíč",
|
||||
"confirmRecoveryKey": "Potvrdit obnovovací klíč",
|
||||
"recoveryKeyVerifyReason": "Váš obnovovací klíč je jedinou cestou pro obnovení Vašich fotek, pokud zapomenete heslo. Můžete ho najít v Nastavení > Účet.\n\nZadejte, prosím, svůj obnovovací klíč pro ověření, že si ho pamatujete správně.",
|
||||
"confirmYourRecoveryKey": "Potvrďte svůj obnovovací klíč",
|
||||
"confirm": "Potvrdit",
|
||||
"emailYourLogs": "Zašlete své logy e-mailem",
|
||||
"pleaseSendTheLogsTo": "Pošlete prosím logy na \n{toEmail}",
|
||||
"copyEmailAddress": "Kopírovat e-mailovou adresu",
|
||||
"exportLogs": "Exportovat logy",
|
||||
"enterYourRecoveryKey": "Zadejte svůj obnovovací klíč",
|
||||
"tempErrorContactSupportIfPersists": "Vypadá to, že se něco pokazilo. Zkuste to znovu po delší době. Pokud chyba přetrvává, kontaktujte náš tým podpory.",
|
||||
"networkHostLookUpErr": "Nelze se připojit k Ente, zkontrolujte, prosím, nastavení své sítě a kontaktujte podporu, pokud chyba přetrvává",
|
||||
"networkConnectionRefusedErr": "Nepodařilo se připojit k Ente, zkuste to po nějaké době znovu. Pokud chyba přetrvává, kontaktujte, prosím, podporu.",
|
||||
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Vypadá to, že se něco pokazilo. Zkuste to prosím znovu po nějaké době. Pokud chyba přetrvává, kontaktujte prosím naši podporu.",
|
||||
"about": "O aplikaci",
|
||||
"weAreOpenSource": "Jsme open source!",
|
||||
"privacy": "Soukromí",
|
||||
"terms": "Podmínky",
|
||||
"checkForUpdates": "Zkontrolovat aktualizace",
|
||||
"checkStatus": "Zkontrolovat stav",
|
||||
"downloadUpdate": "Stáhnout",
|
||||
"criticalUpdateAvailable": "Je k dispozici kritická aktualizace",
|
||||
"updateAvailable": "Je k dispozici aktualizace",
|
||||
"update": "Aktualizace",
|
||||
"checking": "Probíhá kontrola...",
|
||||
"youAreOnTheLatestVersion": "Máte nejnovější verzi",
|
||||
"warning": "Upozornění",
|
||||
"exportWarningDesc": "Exportovaný soubor obsahuje citlivé informace. Uložte jej bezpečně.",
|
||||
"iUnderStand": "Rozumím",
|
||||
"@iUnderStand": {
|
||||
"description": "Text for the button to confirm the user understands the warning"
|
||||
},
|
||||
"authToExportCodes": "Pro export svých kódů se, prosím, ověřte",
|
||||
"importSuccessTitle": "Paráda!",
|
||||
"importSuccessDesc": "Importovali jste {count} kódů!",
|
||||
"@importSuccessDesc": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"description": "The number of codes imported",
|
||||
"type": "int",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sorry": "Omlouváme se",
|
||||
"importFailureDesc": "Nelze analyzovat vybraný soubor.\nProsím napište na support@ente.io, pokud potřebujete pomoc!",
|
||||
"pendingSyncs": "Upozornění",
|
||||
"pendingSyncsWarningBody": "Některé z Vašich kódů nebyly zálohované.\n\nPřed odhlášením se, prosím, ujistěte o jejich záloze.",
|
||||
"checkInboxAndSpamFolder": "Pro dokončení ověření prosím zkontrolujte, prosím, svou doručenou poštu (a spamy)",
|
||||
"tapToEnterCode": "Klepnutím zadejte kód",
|
||||
"resendEmail": "Odeslat e-mail znovu",
|
||||
"weHaveSendEmailTo": "Odeslali jsme e-mail 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"
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Vlastní",
|
||||
"editOrder": "Upravit pořadí",
|
||||
"mostFrequentlyUsed": "Nejpoužívanější",
|
||||
"mostRecentlyUsed": "Naposledy použité",
|
||||
"activeSessions": "Aktivní relace",
|
||||
"somethingWentWrongPleaseTryAgain": "Něco se pokazilo. Zkuste to, prosím, znovu",
|
||||
"thisWillLogYouOutOfThisDevice": "Tato akce Vás odhlásí z tohoto zařízení!",
|
||||
"thisWillLogYouOutOfTheFollowingDevice": "Toto Vás odhlásí z následujícího zařízení:",
|
||||
"terminateSession": "Ukončit relaci?",
|
||||
"terminate": "Ukončit",
|
||||
"thisDevice": "Toto zařízení",
|
||||
"toResetVerifyEmail": "Pro obnovení hesla obnovte, prosím, nejprve svůj e-mail.",
|
||||
"thisEmailIsAlreadyInUse": "Tento e-mail je již používán",
|
||||
"verificationFailedPleaseTryAgain": "Ověření selhalo, přihlaste se, prosím, znovu",
|
||||
"yourVerificationCodeHasExpired": "Váš ověřovací kód vypršel",
|
||||
"incorrectCode": "Nesprávný kód",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "Omlouváme se, zadaný kód je nesprávný",
|
||||
"emailChangedTo": "E-mail změněn na {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "Ověření selhalo, zkuste to, prosím, znovu",
|
||||
"authenticationSuccessful": "Ověření bylo úspěšné!",
|
||||
"twofactorAuthenticationSuccessfullyReset": "Dvoufázové ověření bylo úspěšně obnoveno",
|
||||
"incorrectRecoveryKey": "Nesprávný obnovovací klíč",
|
||||
"theRecoveryKeyYouEnteredIsIncorrect": "Vámi zadaný obnovovací klíč je nesprávný",
|
||||
"enterPassword": "Zadejte heslo",
|
||||
"selectExportFormat": "Vyberte formát exportu",
|
||||
"exportDialogDesc": "Šifrované exporty budou chráněny heslem dle vašeho výběru.",
|
||||
"encrypted": "Šifrovaný",
|
||||
"plainText": "Prostý text",
|
||||
"passwordToEncryptExport": "Heslo pro šifrování exportu",
|
||||
"export": "Export",
|
||||
"useOffline": "Použít bez zálohování",
|
||||
"signInToBackup": "Pro zálohování vašich kódů se přihlaste",
|
||||
"singIn": "Přihlásit se",
|
||||
"sigInBackupReminder": "Exportujte prosím své kódy, abyste se ujistili, že máte zálohu, ze které můžete obnovit.",
|
||||
"offlineModeWarning": "Zvolili jste si pokračovat bez zálohování. Provádějte, prosím, manuální zálohy pro jistotu bezpečí svých kódů.",
|
||||
"showLargeIcons": "Zobrazit velké ikony",
|
||||
"compactMode": "Kompaktní režim",
|
||||
"shouldHideCode": "Skrýt kódy",
|
||||
"doubleTapToViewHiddenCode": "Pro zobrazení kódu můžete dvakrát klepnout na záznam",
|
||||
"focusOnSearchBar": "Zaměřit hledání při spuštění aplikace",
|
||||
"confirmUpdatingkey": "Opravdu chcete aktualizovat tajný klíč?",
|
||||
"minimizeAppOnCopy": "Minimalizovat aplikaci po zkopírování",
|
||||
"editCodeAuthMessage": "Pro úpravu kódu se ověřte",
|
||||
"deleteCodeAuthMessage": "Pro odstranění kódu se ověřte",
|
||||
"showQRAuthMessage": "Pro zobrazení QR kódu se ověřte",
|
||||
"confirmAccountDeleteTitle": "Potvrdit odstranění účtu",
|
||||
"confirmAccountDeleteMessage": " ",
|
||||
"androidBiometricHint": "Ověřte svou identitu",
|
||||
"@androidBiometricHint": {
|
||||
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricNotRecognized": "Nerozpoznáno. Zkuste znovu.",
|
||||
"@androidBiometricNotRecognized": {
|
||||
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricSuccess": "Úspěch",
|
||||
"@androidBiometricSuccess": {
|
||||
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidCancelButton": "Zrušit",
|
||||
"@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": "Je požadováno ověření",
|
||||
"@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": "Je požadováno biometrické ověření",
|
||||
"@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": "Jsou vyžadovány přihlašovací údaje zařízení",
|
||||
"@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": "Jsou vyžadovány přihlašovací údaje zařízení",
|
||||
"@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": "Jít do nastavení",
|
||||
"@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": "Na Vašem zařízení není nastaveno biometrické ověřování. Pro aktivaci běžte do 'Nastavení > Zabezpečení'.",
|
||||
"@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": "Biometrické ověřování není povoleno. Pro povolení zamkněte a odemkněte obrazovku.",
|
||||
"@iOSLockOut": {
|
||||
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
|
||||
},
|
||||
"iOSGoToSettingsDescription": "Na Vašem zařízení není nastaveno biometrické ověřování. Nastavte si na svém telefonu Touch ID nebo Face ID, prosím.",
|
||||
"@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": "Žádné připojení k internetu",
|
||||
"pleaseCheckYourInternetConnectionAndTryAgain": "Zkontrolujte, prosím, své připojení k internetu a zkuste to znovu.",
|
||||
"signOutFromOtherDevices": "Odhlásit z ostatních zařízení",
|
||||
"signOutOtherBody": "Pokud si myslíte, že by někdo mohl znát Vaše heslo, můžete vynutit odhlášení ostatních zařízení používajících Váš účet.",
|
||||
"signOutOtherDevices": "Odhlásit z ostatních zařízení",
|
||||
"doNotSignOut": "Neodhlašovat",
|
||||
"hearUsWhereTitle": "Jak jste se dozvěděli o Ente? (volitelné)",
|
||||
"hearUsExplanation": "Ne sledujeme instalace aplikace. Pomůže nám, když nám sdělíte, kde jste nás našli!",
|
||||
"recoveryKeySaved": "Obnovovací klíč uložen do složky Stažené soubory!",
|
||||
"waitingForBrowserRequest": "Čekání na požadavek prohlížeče...",
|
||||
"waitingForVerification": "Čekání na ověření...",
|
||||
"passkey": "Přístupový klíč",
|
||||
"passKeyPendingVerification": "Ověřování stále probíhá",
|
||||
"loginSessionExpired": "Relace vypršela",
|
||||
"loginSessionExpiredDetails": "Vaše relace vypršela. Přihlaste se, prosím, znovu.",
|
||||
"developerSettingsWarning": "Opravdu chcete změnit nastavení pro vývojáře?",
|
||||
"developerSettings": "Nastavení pro vývojáře",
|
||||
"serverEndpoint": "Koncový bod serveru",
|
||||
"invalidEndpoint": "Neplatný koncový bod",
|
||||
"invalidEndpointMessage": "Zadaný koncový bod je neplatný. Zadejte prosím platný koncový bod a zkuste to znovu.",
|
||||
"endpointUpdatedMessage": "Koncový bod byl úspěšně aktualizován",
|
||||
"customEndpoint": "Připojeno k {endpoint}",
|
||||
"pinText": "Připnout",
|
||||
"unpinText": "Odepnout",
|
||||
"pinnedCodeMessage": "{code} byl připnut",
|
||||
"unpinnedCodeMessage": "{code} byl odepnut",
|
||||
"pinned": "Připnuté",
|
||||
"tags": "Tagy",
|
||||
"createNewTag": "Vytvořit nový tag",
|
||||
"tag": "Tag",
|
||||
"create": "Vytvořit",
|
||||
"editTag": "Upravit tag",
|
||||
"deleteTagTitle": "Odstranit tag?",
|
||||
"deleteTagMessage": "Jste si jistí, že chcete odstranit tento tag? Akce je nevratná.",
|
||||
"somethingWentWrongParsingCode": "Nepovedlo se ",
|
||||
"updateNotAvailable": "Aktualizace není dostupná",
|
||||
"viewRawCodes": "Zobrazit nezpracované kódy",
|
||||
"rawCodes": "Nezpracované kódy",
|
||||
"rawCodeData": "Nezpracovaná kódová data",
|
||||
"appLock": "Zámek aplikace",
|
||||
"noSystemLockFound": "Zámek systému nenalezen",
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Pro aktivaci zámku aplikace si pro prosím nastavte zámek obrazovky v nastavení svého systému.",
|
||||
"autoLock": "Automatické zamykání",
|
||||
"immediately": "Ihned",
|
||||
"reEnterPassword": "Zadejte heslo znovu",
|
||||
"reEnterPin": "Zadejte PIN znovu",
|
||||
"next": "Další",
|
||||
"tooManyIncorrectAttempts": "Příliš mnoho neúspěšných pokusů",
|
||||
"tapToUnlock": "Pro odemčení klepněte",
|
||||
"setNewPassword": "Nastavit nové heslo",
|
||||
"deviceLock": "Zámek zařízení",
|
||||
"hideContent": "Skrýt obsah",
|
||||
"hideContentDescriptionAndroid": "Skryje obsah aplikace ve ",
|
||||
"hideContentDescriptioniOS": "Skryje obsah aplikace při přepínání úloh",
|
||||
"autoLockFeatureDescription": "Interval, po kterém se aplikace běžící na pozadí uzamkne",
|
||||
"appLockDescription": "Vyberte si mezi zámkem obrazovky svého zařízení a vlastním zámkem obrazovky s PIN kódem nebo heslem.",
|
||||
"pinLock": "Uzamčení na PIN",
|
||||
"enterPin": "Zadejte PIN",
|
||||
"setNewPin": "Nadra",
|
||||
"importFailureDescNew": "Nelze analyzovat vybraný soubor.",
|
||||
"appLockNotEnabled": "Zámek aplikaci není aktivní",
|
||||
"appLockNotEnabledDescription": "Aktivujte, prosím, zámek aplikace v 'Nastavení > Zámek aplikace'",
|
||||
"authToViewPasskey": "Pro zobrazení přístupového klíče se, prosím, ověřte",
|
||||
"appLockOfflineModeWarning": "Zvolili jste si pokračování bez zálohování. Pokud zapomenete heslo do aplikace, přístup k datům bude uzamčen.",
|
||||
"duplicateCodes": "Duplikovat kódy",
|
||||
"noDuplicates": "✨ Žádné duplikáty",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Nemáte žádné duplicitní kódy k odstranění",
|
||||
"deduplicateCodes": "Deduplikovat kódy",
|
||||
"deselectAll": "Zrušit výběr všech položek",
|
||||
"selectAll": "Vybrat vše",
|
||||
"deleteDuplicates": "Odstranit duplikáty",
|
||||
"plainHTML": "Prosté HTML"
|
||||
}
|
||||
@@ -446,8 +446,6 @@
|
||||
"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",
|
||||
|
||||
@@ -444,8 +444,6 @@
|
||||
"customEndpoint": "Mit {endpoint} verbunden",
|
||||
"pinText": "Anpinnen",
|
||||
"unpinText": "Lösen",
|
||||
"pinnedCodeMessage": "{code} wurde angepinnt",
|
||||
"unpinnedCodeMessage": "{code} wurde Losgelöst",
|
||||
"tags": "Tags",
|
||||
"createNewTag": "Neuen Tag erstellen",
|
||||
"tag": "Tag",
|
||||
|
||||
@@ -156,6 +156,7 @@
|
||||
"twoFactorAuthTitle": "Αυθεντικοποίηση δύο παραγόντων",
|
||||
"passkeyAuthTitle": "Επιβεβαίωση κλειδιού πρόσβασης",
|
||||
"verifyPasskey": "Επιβεβαίωση κλειδιού πρόσβασης",
|
||||
"loginWithTOTP": "Είσοδος με TOTP",
|
||||
"recoverAccount": "Ανάκτηση λογαριασμού",
|
||||
"enterRecoveryKeyHint": "Εισάγετε το κλειδί ανάκτησης σας",
|
||||
"recover": "Ανάκτηση",
|
||||
@@ -327,6 +328,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Προσαρμοσμένο",
|
||||
"editOrder": "Επεξεργασία σειράς",
|
||||
"mostFrequentlyUsed": "Συχνά χρησιμοποιούμενο",
|
||||
"mostRecentlyUsed": "Πρόσφατα χρησιμοποιούμενο",
|
||||
"activeSessions": "Ενεργές συνεδρίες",
|
||||
"somethingWentWrongPleaseTryAgain": "Κάτι πήγε στραβά, παρακαλώ προσπαθήστε ξανά",
|
||||
"thisWillLogYouOutOfThisDevice": "Αυτό θα σας αποσυνδέσει από αυτή τη συσκευή!",
|
||||
@@ -446,8 +451,9 @@
|
||||
"customEndpoint": "Συνδεδεμένο στο {endpoint}",
|
||||
"pinText": "Καρφίτσωμα",
|
||||
"unpinText": "Ξεκαρφίτσωμα",
|
||||
"pinnedCodeMessage": "Το {code} καρφιτσώθηκε",
|
||||
"unpinnedCodeMessage": "Το {code} ξεκαρφιτσώθηκε",
|
||||
"pinnedCodeMessage": "{code} έχει καρφιτσωθεί",
|
||||
"unpinnedCodeMessage": "Το {code} έχει ξεκαρφιτσωθεί",
|
||||
"pinned": "Καρφιτσωμένο",
|
||||
"tags": "Ετικέτες",
|
||||
"createNewTag": "Δημιουργία Νέας Ετικέτας",
|
||||
"tag": "Ετικέτα",
|
||||
|
||||
@@ -88,6 +88,8 @@
|
||||
"useRecoveryKey": "Use recovery key",
|
||||
"incorrectPasswordTitle": "Incorrect password",
|
||||
"welcomeBack": "Welcome back!",
|
||||
"emailAlreadyRegistered": "Email already registered.",
|
||||
"emailNotRegistered": "Email not registered.",
|
||||
"madeWithLoveAtPrefix": "made with ❤️ at ",
|
||||
"supportDevs": "Subscribe to <bold-green>ente</bold-green> to support us",
|
||||
"supportDiscount": "Use coupon code \"AUTH\" to get 10% off first year",
|
||||
@@ -258,6 +260,10 @@
|
||||
"areYouSureYouWantToLogout": "Are you sure you want to logout?",
|
||||
"yesLogout": "Yes, logout",
|
||||
"exit": "Exit",
|
||||
"theme": "Theme",
|
||||
"lightTheme": "Light",
|
||||
"darkTheme": "Dark",
|
||||
"systemTheme": "System",
|
||||
"verifyingRecoveryKey": "Verifying recovery key...",
|
||||
"recoveryKeyVerified": "Recovery key verified",
|
||||
"recoveryKeySuccessBody": "Great! Your recovery key is valid. Thank you for verifying.\n\nPlease remember to keep your recovery key safely backed up.",
|
||||
@@ -454,7 +460,6 @@
|
||||
"pinnedCodeMessage": "{code} has been pinned",
|
||||
"unpinnedCodeMessage": "{code} has been unpinned",
|
||||
"pinned": "Pinned",
|
||||
|
||||
"tags": "Tags",
|
||||
"createNewTag": "Create New Tag",
|
||||
"tag": "Tag",
|
||||
@@ -491,5 +496,13 @@
|
||||
"appLockNotEnabled": "App lock not enabled",
|
||||
"appLockNotEnabledDescription": "Please enable app lock from Security > App Lock",
|
||||
"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."
|
||||
"appLockOfflineModeWarning": "You have chosen to proceed without backups. If you forget your applock, you will be locked out from accessing your data.",
|
||||
"duplicateCodes": "Duplicate codes",
|
||||
"noDuplicates": "✨ No duplicates",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "You've no duplicate codes that can be cleared",
|
||||
"deduplicateCodes": "Deduplicate codes",
|
||||
"deselectAll": "Deselect all",
|
||||
"selectAll": "Select all",
|
||||
"deleteDuplicates": "Delete duplicates",
|
||||
"plainHTML": "Plain HTML"
|
||||
}
|
||||
@@ -54,7 +54,7 @@
|
||||
"viewLogsAction": "Ver Registros",
|
||||
"sendLogsDescription": "Esto enviará registros para ayudarnos a depurar su problema. Aunque tomamos precauciones para asegurarnos que no se registre información sensible, le recomendamos que consulte estos registros antes de compartirlos.",
|
||||
"preparingLogsTitle": "Preparando registros...",
|
||||
"emailLogsTitle": "Enviar registros por email",
|
||||
"emailLogsTitle": "Enviar registros por correo electrónico",
|
||||
"emailLogsMessage": "Por favor, envíe los registros a {email}",
|
||||
"@emailLogsMessage": {
|
||||
"placeholders": {
|
||||
@@ -115,7 +115,7 @@
|
||||
"importCodeDelimiterInfo": "Los códigos pueden separarse por una coma o una nueva línea",
|
||||
"selectFile": "Seleccionar archivo",
|
||||
"emailVerificationToggle": "Verificación de correo electrónico",
|
||||
"emailVerificationEnableWarning": "Para evitar quedarte bloqueado fuera de tu cuenta, asegúrate de guardar una copia de su código 2FA de tu correo electrónico fuera de Ente Auth antes de habilitar la verificación de correo electrónico.",
|
||||
"emailVerificationEnableWarning": "Para evitar quedarte bloqueado fuera de tu cuenta, asegúrate de guardar una copia de tu código 2FA de tu correo electrónico fuera de Ente Auth antes de habilitar la verificación de correo electrónico.",
|
||||
"authToChangeEmailVerificationSetting": "Por favor, autentícate para cambiar tu correo electrónico",
|
||||
"authenticateGeneric": "Por favor, autentícate",
|
||||
"authToViewYourRecoveryKey": "Por favor, autentícate para ver tu clave de recuperación",
|
||||
@@ -160,7 +160,7 @@
|
||||
"recoverAccount": "Recuperar cuenta",
|
||||
"enterRecoveryKeyHint": "Introduce tu clave de recuperación",
|
||||
"recover": "Recuperar",
|
||||
"contactSupportViaEmailMessage": "Por favor, envía un email a {email} desde la dirección de correo electrónico que usó durante el registro",
|
||||
"contactSupportViaEmailMessage": "Por favor, envía un correo electrónico a {email} desde la dirección de correo electrónico que usó durante el registro",
|
||||
"@contactSupportViaEmailMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
@@ -258,6 +258,10 @@
|
||||
"areYouSureYouWantToLogout": "¿Seguro que quieres cerrar la sesión?",
|
||||
"yesLogout": "Sí, cerrar la sesión",
|
||||
"exit": "Salir",
|
||||
"theme": "Tema",
|
||||
"lightTheme": "Claro",
|
||||
"darkTheme": "Oscuro",
|
||||
"systemTheme": "Sistema",
|
||||
"verifyingRecoveryKey": "Verificando clave de recuperación...",
|
||||
"recoveryKeyVerified": "Clave de recuperación verificada",
|
||||
"recoveryKeySuccessBody": "¡Genial! Su clave de recuperación es válida. Gracias por verificar.\n\nPor favor, recuerde mantener su clave de recuperación segura.",
|
||||
@@ -317,7 +321,7 @@
|
||||
"checkInboxAndSpamFolder": "Por favor revisa tu bandeja de entrada (y spam) para completar la verificación",
|
||||
"tapToEnterCode": "Toca para introducir el código",
|
||||
"resendEmail": "Reenviar correo electrónico",
|
||||
"weHaveSendEmailTo": "Hemos enviado un correo a <green>{email}</green>",
|
||||
"weHaveSendEmailTo": "Hemos enviado un correo electrónico a <green>{email}</green>",
|
||||
"@weHaveSendEmailTo": {
|
||||
"description": "Text to indicate that we have sent a mail to the user",
|
||||
"placeholders": {
|
||||
@@ -328,6 +332,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Personalizado",
|
||||
"editOrder": "Editar orden",
|
||||
"mostFrequentlyUsed": "Usados frecuentemente",
|
||||
"mostRecentlyUsed": "Usados recientemente",
|
||||
"activeSessions": "Sesiones activas",
|
||||
"somethingWentWrongPleaseTryAgain": "Algo ha ido mal, por favor, inténtelo de nuevo",
|
||||
"thisWillLogYouOutOfThisDevice": "¡Esto cerrará la sesión de este dispositivo!",
|
||||
@@ -449,6 +457,7 @@
|
||||
"unpinText": "Desanclar",
|
||||
"pinnedCodeMessage": "{code} ha sido anclado",
|
||||
"unpinnedCodeMessage": "{code} ha sido desanclado",
|
||||
"pinned": "Anclado",
|
||||
"tags": "Etiquetas",
|
||||
"createNewTag": "Crear Nueva Etiqueta",
|
||||
"tag": "Etiqueta",
|
||||
@@ -478,12 +487,20 @@
|
||||
"hideContentDescriptioniOS": "Ocultar el contenido de la aplicación en el selector de aplicaciones",
|
||||
"autoLockFeatureDescription": "Tiempo tras el cual la aplicación se bloquea después de ser colocada en segundo plano",
|
||||
"appLockDescription": "Elija entre la pantalla de bloqueo por defecto de su dispositivo y una pantalla de bloqueo personalizada con un PIN o contraseña.",
|
||||
"pinLock": "Bloqueo con Pin",
|
||||
"pinLock": "Bloqueo con PIN",
|
||||
"enterPin": "Ingresa el PIN",
|
||||
"setNewPin": "Establecer nuevo PIN",
|
||||
"importFailureDescNew": "No se pudo analizar el archivo seleccionado.",
|
||||
"appLockNotEnabled": "Bloqueo de aplicación no activado",
|
||||
"appLockNotEnabledDescription": "Por favor, activa el bloqueo de aplicación desde Seguridad > Bloqueo de aplicación",
|
||||
"authToViewPasskey": "Por favor, autentícate para ver tu clave de acceso",
|
||||
"appLockOfflineModeWarning": "Has elegido proceder sin copia de seguridad. Si olvidas el código de desbloqueo de la aplicación, se bloqueará el acceso a sus datos."
|
||||
"appLockOfflineModeWarning": "Has elegido proceder sin copia de seguridad. Si olvidas el código de desbloqueo de la aplicación, se bloqueará el acceso a sus datos.",
|
||||
"duplicateCodes": "Duplicar códigos",
|
||||
"noDuplicates": "✨ No hay duplicados",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "No tienes códigos duplicados que se puedan borrar",
|
||||
"deduplicateCodes": "Desduplicar códigos",
|
||||
"deselectAll": "Deseleccionar todo",
|
||||
"selectAll": "Seleccionar todo",
|
||||
"deleteDuplicates": "Eliminar duplicados",
|
||||
"plainHTML": "HTML plano"
|
||||
}
|
||||
@@ -401,8 +401,6 @@
|
||||
"customEndpoint": "متصل شده به {endpoint}",
|
||||
"pinText": "پین",
|
||||
"unpinText": "حذف پین",
|
||||
"pinnedCodeMessage": "{code} پین شد",
|
||||
"unpinnedCodeMessage": "{code} از پین حذف شد",
|
||||
"tags": "برچسبها",
|
||||
"createNewTag": "ایجاد برچسب جدید",
|
||||
"tag": "برچسب",
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
"@counterAppBarTitle": {
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "Sécurisez vos codes A2F",
|
||||
"onBoardingBody": "Sauvegarder vos codes A2F",
|
||||
"onBoardingGetStarted": "Premiers pas",
|
||||
"setupFirstAccount": "Configurez votre premier compte",
|
||||
"importScanQrCode": "Scannez un QR Code",
|
||||
"qrCode": "Code QR",
|
||||
"qrCode": "QR Code",
|
||||
"importEnterSetupKey": "Saisir une clé de configuration",
|
||||
"importAccountPageTitle": "Saisir les détails du compte",
|
||||
"secretCanNotBeEmpty": "La clé secrète ne peut pas être vide",
|
||||
@@ -20,6 +20,7 @@
|
||||
"codeIssuerHint": "Émetteur",
|
||||
"codeSecretKeyHint": "Clé secrète",
|
||||
"secret": "Confidentiel",
|
||||
"all": "Tout",
|
||||
"notes": "Notes",
|
||||
"notesLengthLimit": "Les notes peuvent contenir au maximum {count} caractères",
|
||||
"@notesLengthLimit": {
|
||||
@@ -87,6 +88,8 @@
|
||||
"useRecoveryKey": "Utiliser la clé de récupération",
|
||||
"incorrectPasswordTitle": "Mot de passe incorrect",
|
||||
"welcomeBack": "Bon retour parmi nous !",
|
||||
"emailAlreadyRegistered": "E-mail déjà enregistré.",
|
||||
"emailNotRegistered": "E-mail non enregistré.",
|
||||
"madeWithLoveAtPrefix": "fait avec ❤️ à ",
|
||||
"supportDevs": "Abonnez-vous à <bold-green>ente</bold-green> pour nous soutenir",
|
||||
"supportDiscount": "Utilisez le code coupon \"AUTH\" pour obtenir 10% de réduction sur la première année",
|
||||
@@ -155,6 +158,7 @@
|
||||
"twoFactorAuthTitle": "Authentification à deux facteurs",
|
||||
"passkeyAuthTitle": "Vérification du code d'accès",
|
||||
"verifyPasskey": "Vérifier le code d'accès",
|
||||
"loginWithTOTP": "Se connecter avec un code TOTP",
|
||||
"recoverAccount": "Récupérer un compte",
|
||||
"enterRecoveryKeyHint": "Saisissez votre clé de récupération",
|
||||
"recover": "Restaurer",
|
||||
@@ -256,6 +260,10 @@
|
||||
"areYouSureYouWantToLogout": "Êtes-vous sûr de vouloir vous déconnecter ?",
|
||||
"yesLogout": "Oui, se déconnecter",
|
||||
"exit": "Quitter",
|
||||
"theme": "Thème",
|
||||
"lightTheme": "Clair",
|
||||
"darkTheme": "Sombre",
|
||||
"systemTheme": "Système",
|
||||
"verifyingRecoveryKey": "Vérification de la clé de récupération...",
|
||||
"recoveryKeyVerified": "Clé de récupération vérifiée",
|
||||
"recoveryKeySuccessBody": "Parfait ! Votre clé de récupération est valide. Merci pour la vérification.\n\nN'oubliez pas de garder cette clé de récupération en lieu sûr.",
|
||||
@@ -326,6 +334,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Personnaliser",
|
||||
"editOrder": "Modifier la commande",
|
||||
"mostFrequentlyUsed": "Utilisé fréquemment",
|
||||
"mostRecentlyUsed": "Utilisé récemment",
|
||||
"activeSessions": "Sessions actives",
|
||||
"somethingWentWrongPleaseTryAgain": "Quelque chose s'est mal passé, veuillez recommencer",
|
||||
"thisWillLogYouOutOfThisDevice": "Cela vous déconnectera de cet appareil !",
|
||||
@@ -445,8 +457,9 @@
|
||||
"customEndpoint": "Connecté à {endpoint}",
|
||||
"pinText": "Épingler",
|
||||
"unpinText": "Désépingler",
|
||||
"pinnedCodeMessage": "{code} a été épinglé",
|
||||
"unpinnedCodeMessage": "{code} a été désépinglé",
|
||||
"pinnedCodeMessage": "{code} épinglé",
|
||||
"unpinnedCodeMessage": "{code} désépinglé",
|
||||
"pinned": "Épinglé",
|
||||
"tags": "Tags",
|
||||
"createNewTag": "Créer un nouveau tag",
|
||||
"tag": "Tag",
|
||||
@@ -472,12 +485,24 @@
|
||||
"setNewPassword": "Définir un nouveau mot de passe",
|
||||
"deviceLock": "Verrouillage de l'appareil",
|
||||
"hideContent": "Masquer le contenu",
|
||||
"hideContentDescriptionAndroid": "Masque le contenu de l'application sur le menu et désactive les captures d'écran",
|
||||
"hideContentDescriptioniOS": "Masque le contenu de l'application sur le menu",
|
||||
"autoLockFeatureDescription": "Délai après lequel l'application se verrouille une fois qu'elle a été mise en arrière-plan",
|
||||
"appLockDescription": "Choisissez entre l'écran de verrouillage par défaut de votre appareil et un écran de verrouillage par code PIN ou mot de passe personnalisé.",
|
||||
"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é.",
|
||||
"appLockNotEnabled": "Verrouillage d'application désactivé",
|
||||
"appLockNotEnabledDescription": "Activez le verrouillage d'application dans Sécurité > Verrouillage d'application",
|
||||
"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."
|
||||
"appLockOfflineModeWarning": "Vous avez choisi de fonctionner sans sauvegardes. Si vous oubliez votre outil Applock, vous serez bloqué dans l'accès à vos données.",
|
||||
"duplicateCodes": "Codes dupliqués",
|
||||
"noDuplicates": "✨ Pas de doublons",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Vous n'avez aucun code en doublon pouvant être supprimé",
|
||||
"deduplicateCodes": "Codes dédupliqués",
|
||||
"deselectAll": "Tout désélectionner",
|
||||
"selectAll": "Tout sélectionner",
|
||||
"deleteDuplicates": "Supprimer les doublons",
|
||||
"plainHTML": "HTML Pur"
|
||||
}
|
||||
@@ -1 +1,508 @@
|
||||
{}
|
||||
{
|
||||
"account": "Fiók",
|
||||
"unlock": "Feloldás",
|
||||
"recoveryKey": "Visszaállítási kulcs",
|
||||
"counterAppBarTitle": "Számláló",
|
||||
"@counterAppBarTitle": {
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "Biztonsági mentés készítése a 2FA kódokról",
|
||||
"onBoardingGetStarted": "Kezdjünk bele",
|
||||
"setupFirstAccount": "Állítsd be az első fiókodat",
|
||||
"importScanQrCode": "QR kód beolvasása",
|
||||
"qrCode": "QR kód",
|
||||
"importEnterSetupKey": "Adjon meg egy beállítási kulcsot",
|
||||
"importAccountPageTitle": "Adja meg a fiók adatait",
|
||||
"secretCanNotBeEmpty": "A titkos kulcs nem lehet üres",
|
||||
"bothIssuerAndAccountCanNotBeEmpty": "A kibocsátó és a fiók mezője nem lehet üres",
|
||||
"incorrectDetails": "Helytelen adatok",
|
||||
"pleaseVerifyDetails": "Kérjük, ellenőrizd az adataid, majd próbáld meg újra",
|
||||
"codeIssuerHint": "Kibocsátó",
|
||||
"codeSecretKeyHint": "Titkos (Secret) kulcs",
|
||||
"secret": "Titkos kód",
|
||||
"all": "Minden",
|
||||
"notes": "Megjegyzések",
|
||||
"notesLengthLimit": "A megjegyzés {count} karakter hosszú lehet",
|
||||
"@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": "Felhasználói Fiók (you@domain.com)",
|
||||
"codeTagHint": "Címke",
|
||||
"accountKeyType": "Kulcs típusa",
|
||||
"sessionExpired": "A munkamenet lejárt",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
"pleaseLoginAgain": "Kérjük, jelentkezzen be újra",
|
||||
"loggingOut": "Kijelentkezés...",
|
||||
"timeBasedKeyType": "Idő alapú (TOTP)",
|
||||
"counterBasedKeyType": "Számláló alappú (HOTP)",
|
||||
"saveAction": "Mentés",
|
||||
"nextTotpTitle": "következő",
|
||||
"deleteCodeTitle": "Kódok Törlése?",
|
||||
"deleteCodeMessage": "Biztos, hogy véglegesen törli a kódot? Ez nem vonható vissza.",
|
||||
"trashCode": "Lomtárba helyezi?",
|
||||
"trashCodeMessage": "Biztos, hogy lomtárba helyezi a kódot a(z) {account} fiókhoz?",
|
||||
"trash": "Szemetes",
|
||||
"viewLogsAction": "Naplók megtekintése",
|
||||
"sendLogsDescription": "Naplókat küld, hogy segítsen nekünk a probléma elhárításában. Bár óvintézkedéseket teszünk annak biztosítására, hogy az érzékeny adatok ne kerüljenek naplózásra, javasoljuk, hogy tekintse meg ezeket a naplókat, mielőtt megosztaná őket.",
|
||||
"preparingLogsTitle": "Naplófájlok előkészítése...",
|
||||
"emailLogsTitle": "Naplófájl küldése emailben",
|
||||
"emailLogsMessage": "Külje el a naplófájlt a(z) {email} címre",
|
||||
"@emailLogsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"copyEmailAction": "E-mail cím másolása",
|
||||
"exportLogsAction": "Naplófájlok exportálása",
|
||||
"reportABug": "Hiba bejelentése",
|
||||
"crashAndErrorReporting": "Összeomlás és hiba jelentése",
|
||||
"reportBug": "Hibajelentés",
|
||||
"emailUsMessage": "Kérjük küldjön email üzenetet nekünk a következő email címre: {email}",
|
||||
"@emailUsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contactSupport": "Lépj kapcsolatba az Ügyfélszolgálattal",
|
||||
"rateUsOnStore": "Értékelj minket a következőn: {storeName}",
|
||||
"blog": "Blog",
|
||||
"merchandise": "Áru",
|
||||
"verifyPassword": "Jelszó megerősítése",
|
||||
"pleaseWait": "Kérem várjon...",
|
||||
"generatingEncryptionKeysTitle": "Titkosítási kulcs generálása...",
|
||||
"recreatePassword": "Jelszó újra létrehozása",
|
||||
"recreatePasswordMessage": "A jelenlegi eszköz nem elég erős a jelszavának ellenőrzéséhez, de újra tudjuk úgy generálni, hogy az minden eszközzel működjön.\n\nKérjük, jelentkezzen be helyreállítási kulcsával, és állítsa be újra jelszavát (ha szeretné, újra használhatja ugyanazt).",
|
||||
"useRecoveryKey": "Helyreállítási kulcs használata",
|
||||
"incorrectPasswordTitle": "Érvénytelen jelszó",
|
||||
"welcomeBack": "Köszöntjük ismét!",
|
||||
"emailAlreadyRegistered": "Ez az e-mai cím már regisztrálva van.",
|
||||
"emailNotRegistered": "Ez az e-mail cím nincs regisztrálva.",
|
||||
"madeWithLoveAtPrefix": "Készült ❤️ - ",
|
||||
"supportDevs": "Iratkozz fel az <bold-green>ente</bold-green> csatornára",
|
||||
"supportDiscount": "Használd az \"AUTH\" kupon kódot, hogy 10% kedvezményben részesülj az első évben",
|
||||
"changeEmail": "E-mail cím módosítása",
|
||||
"changePassword": "Jelszó módosítása",
|
||||
"data": "Adat",
|
||||
"importCodes": "Kódok importálása",
|
||||
"importTypePlainText": "Egyszerű szöveg",
|
||||
"importTypeEnteEncrypted": "Ente titkosított exportálás",
|
||||
"passwordForDecryptingExport": "Jelszó az exportált fájl titkosításához",
|
||||
"passwordEmptyError": "A jelszó nem lehet üres",
|
||||
"importFromApp": "Kódok imporátálása {appName} alkalmazásból",
|
||||
"importGoogleAuthGuide": "Exportálja fiókjait a Google Hitelesítőből QR kód segítségével a „Kódok átvitele” lehetőség segítségével. Ezután egy másik eszközzel olvassa be a QR kódot.\n\nTipp: Laptopja webkamerája segítségével lefényképezheti a QR kódot.",
|
||||
"importSelectJsonFile": "JSON fájl kiválasztása",
|
||||
"importSelectAppExport": "Válassza ki az {appName} exportfájlt",
|
||||
"importEnteEncGuide": "Titkosított JSON export-fájl kiválasztása ",
|
||||
"importRaivoGuide": "Használja az \"OTP-k exportálása tömörített archívumba\" opciót a Raivo beállításaiban.\n\nCsomagolja ki a zip fájlt, és importálja a JSON fájlt.",
|
||||
"importBitwardenGuide": "Használja a Bitwarden eszközök \"Export Vault\" opcióját és importálja a titkosítatlan JSON fájlt.",
|
||||
"importAegisGuide": "Használja az Aegis beállításaiban található \"Export the vault\" opciót.\n\nHa a vault titkosított, akkor meg kell adnia a vault jelszavát a tároló visszafejtéséhez.",
|
||||
"import2FasGuide": "Használja a \"Beállítások->Biztonsági mentés - Exportálás\" opciót a 2FAS-ban.\n\nHa a biztonsági másolat titkosított, akkor meg kell adnia a jelszót a biztonsági másolat visszafejtéséhez",
|
||||
"importLastpassGuide": "Használja a Lastpass Authenticator beállításaiban található \"Fiókok átvitele\" opciót, és nyomja meg a \"Fiókok exportálása fájlba\" gombot. Importálja a letöltött JSON-t.",
|
||||
"exportCodes": "Kódok exportálása",
|
||||
"importLabel": "Importálás",
|
||||
"importInstruction": "Kérjük, válasszon egy fájlt, amely tartalmazza a kódok listáját a következő formátumban",
|
||||
"importCodeDelimiterInfo": "A kódokat vesszővel vagy új sorral lehet elválasztani",
|
||||
"selectFile": "Fájl kiválasztása",
|
||||
"emailVerificationToggle": "E-mail cím ellenőrzése",
|
||||
"emailVerificationEnableWarning": "Annak elkerülése érdekében, hogy kizárja magát fiókjából, az e-mail-ellenőrzés engedélyezése előtt mindenképpen tárolja e-mailje 2FA másolatát az Ente Auth-on kívül.",
|
||||
"authToChangeEmailVerificationSetting": "Kérjük, hitelesítse magát az e-mail ellenőrzés módosításához",
|
||||
"authenticateGeneric": "Kérjük hitelesítsen",
|
||||
"authToViewYourRecoveryKey": "A visszaállítási kulcsok megtekintéséhez hitelesítse magát",
|
||||
"authToChangeYourEmail": "Kérjük jelentkezzen be, hogy megváltoztathassa e-mail címét",
|
||||
"authToChangeYourPassword": "Kérjük jelentkezzen be, hogy megváltoztathassa jelszavát",
|
||||
"authToViewSecrets": "A titkos kulcsok megtekintéséhez hitelesítse magát",
|
||||
"authToInitiateSignIn": "Kérjük jelentkezzen be, hogy biztonsági mentést hozhasson létre.",
|
||||
"ok": "OK",
|
||||
"cancel": "Mégse",
|
||||
"yes": "Igen",
|
||||
"no": "Nem",
|
||||
"email": "E-mail",
|
||||
"support": "Segítség",
|
||||
"general": "Általános",
|
||||
"settings": "Beállítások",
|
||||
"copied": "Másolva!",
|
||||
"pleaseTryAgain": "Kérjük, próbálja meg újra",
|
||||
"existingUser": "Meglévő felhasználó",
|
||||
"newUser": "Új Ente felhasználó",
|
||||
"delete": "Törlés",
|
||||
"enterYourPasswordHint": "Adja meg a jelszavát",
|
||||
"forgotPassword": "Elfelejtett jelszó",
|
||||
"oops": "Hoppá",
|
||||
"suggestFeatures": "Funkció ajánlása",
|
||||
"faq": "GY. I. K.",
|
||||
"somethingWentWrongMessage": "Hiba történt. Kérjük, próbálkozzon újra",
|
||||
"leaveFamily": "Családi előfizetés elhagyása",
|
||||
"leaveFamilyMessage": "Biztosan elhagyja a családi előfizetést?",
|
||||
"inFamilyPlanMessage": "Családi előfizetés!",
|
||||
"hintForMobile": "Hosszú nyomvatartással a kód szerkeszthető vagy törölhető",
|
||||
"hintForDesktop": "Jobb egérgomb kattintással a kód szerkeszthető vagy törölhető",
|
||||
"scan": "Beolvasás",
|
||||
"scanACode": "QR kód beolvasása",
|
||||
"verify": "Hitelesítés",
|
||||
"verifyEmail": "E-mail cím megerősítése",
|
||||
"enterCodeHint": "Írja be a 6 számjegyű kódot a hitelesítő alkalmazásból",
|
||||
"lostDeviceTitle": "Elveszett a készüléked?",
|
||||
"twoFactorAuthTitle": "Kétlépcsős hitelesítés (2FA)",
|
||||
"passkeyAuthTitle": "Álkulcs megerősítése",
|
||||
"verifyPasskey": "Erősítse meg az álkulcsot",
|
||||
"loginWithTOTP": "Bejelentkezés TOTP-vel",
|
||||
"recoverAccount": "Fiók visszaállítása",
|
||||
"enterRecoveryKeyHint": "Visszaállító kód megadása",
|
||||
"recover": "Visszaállít",
|
||||
"contactSupportViaEmailMessage": "Kürjük küldjön egy e-mailt a fiók regisztrálásakor megadott címről a következőre címre: {email}",
|
||||
"@contactSupportViaEmailMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "Érvénytelen QR-kód",
|
||||
"noRecoveryKeyTitle": "Nincs helyreállítási kulcs?",
|
||||
"enterEmailHint": "Adja meg az e-mail címét",
|
||||
"invalidEmailTitle": "Érvénytelen e-mail cím",
|
||||
"invalidEmailMessage": "Kérjük, adjon meg egy érvényes e-mail címet.",
|
||||
"deleteAccount": "Fiók törlése",
|
||||
"deleteAccountQuery": "Szomorúan tapasztaljuk. Problémába ütköztél?",
|
||||
"yesSendFeedbackAction": "Igen, visszajelzés küldése",
|
||||
"noDeleteAccountAction": "Fiók végleges törlése",
|
||||
"initiateAccountDeleteTitle": "Kérjük, hitelesítse magát a fiók törlésének kezdeményezéséhez",
|
||||
"sendEmail": "E-mail küldése",
|
||||
"createNewAccount": "Új fiók létrehozása",
|
||||
"weakStrength": "Gyenge",
|
||||
"strongStrength": "Erős",
|
||||
"moderateStrength": "Mérsékelt",
|
||||
"confirmPassword": "Jelszó megerősítése",
|
||||
"close": "Bezárás",
|
||||
"oopsSomethingWentWrong": "Hoppá! Valami hiba történt.",
|
||||
"selectLanguage": "Nyelv kiválasztása",
|
||||
"language": "Nyelv",
|
||||
"social": "Közösségi",
|
||||
"security": "Biztonság",
|
||||
"lockscreen": "Záróképernyő",
|
||||
"authToChangeLockscreenSetting": "A zárképernyő beállításainak módosításához hitelesítsen",
|
||||
"deviceLockEnablePreSteps": "Az eszközzár engedélyezéséhez állítsa be az eszköz jelszavát vagy a zárképernyőt a rendszerbeállításokban.",
|
||||
"viewActiveSessions": "Aktív munkamenetek megtekintése",
|
||||
"authToViewYourActiveSessions": "Az aktív munkamenetek megtekintéséhez hitelesítse magát",
|
||||
"searchHint": "Keresés...",
|
||||
"search": "Keresés",
|
||||
"sorryUnableToGenCode": "Elnézést a kód generálása nem sikerült következőhöz: {issuerName}",
|
||||
"noResult": "Nincs eredmény",
|
||||
"addCode": "Kód hozzáadása",
|
||||
"scanAQrCode": "QR kód beolvasása",
|
||||
"enterDetailsManually": "Írd be az adatokat",
|
||||
"edit": "Szerkesztés",
|
||||
"share": "Megosztás",
|
||||
"shareCodes": "Kódok megosztása",
|
||||
"shareCodesDuration": "Válassza ki a kódok megosztásának időtartamát.",
|
||||
"restore": "Visszaállítás",
|
||||
"copiedToClipboard": "Másolva vágólapra",
|
||||
"copiedNextToClipboard": "A kód a vágólapra másolva",
|
||||
"error": "Hiba",
|
||||
"recoveryKeyCopiedToClipboard": "A helyreállítási kulcs a vágólapra másolva",
|
||||
"recoveryKeyOnForgotPassword": "Ha elfelejti jelszavát, csak ezzel a kulccsal tudja visszaállítani adatait.",
|
||||
"recoveryKeySaveDescription": "Ezt a kulcsot nem tároljuk, kérjük, őrizze meg ezt a 24 szavas kulcsot egy biztonságos helyen.",
|
||||
"doThisLater": "Később",
|
||||
"saveKey": "Mentés",
|
||||
"save": "Mentés",
|
||||
"send": "Küldés",
|
||||
"saveOrSendDescription": "El szeretné menteni ezt a tárhelyére (alapértelmezés szerint a Letöltések mappába), vagy elküldi más alkalmazásoknak?",
|
||||
"saveOnlyDescription": "El szeretné menteni ezt a tárhelyére (alapértelmezés szerint a Letöltések mappába)?",
|
||||
"back": "Vissza",
|
||||
"createAccount": "Jelszó erőssége:",
|
||||
"passwordStrength": "Jelszó erőssége: {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": "Jelszó",
|
||||
"signUpTerms": "Elfogadom az <u-terms>szolgáltatási feltételeket</u-terms> és az <u-policy>adatvédelmi irányelveket</u-policy>",
|
||||
"privacyPolicyTitle": "Adatvédelmi irányelvek",
|
||||
"termsOfServicesTitle": "Használati feltételek",
|
||||
"encryption": "Titkosítás",
|
||||
"setPasswordTitle": "Jelszó beállítás",
|
||||
"changePasswordTitle": "Jelszó módosítás",
|
||||
"resetPasswordTitle": "Jelszó visszaállítás",
|
||||
"encryptionKeys": "Titkosító kulcsok",
|
||||
"passwordWarning": "Ezt a jelszót nem tároljuk, így ha elfelejti, <underline>nem tudjuk visszafejteni adatait</underline>",
|
||||
"enterPasswordToEncrypt": "Adjon meg egy jelszót, amellyel titkosíthatjuk adatait",
|
||||
"enterNewPasswordToEncrypt": "Adjon meg egy új jelszót, amellyel titkosíthatjuk adatait",
|
||||
"passwordChangedSuccessfully": "A jelszó sikeresen meg lett változtatva",
|
||||
"generatingEncryptionKeys": "Titkosító kulcsok generálása...",
|
||||
"continueLabel": "Folytatás",
|
||||
"insecureDevice": "Nem biztonságos eszköz",
|
||||
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Sajnáljuk, nem tudtunk biztonságos kulcsokat generálni ezen az eszközön.\n\nkérjük, regisztráljon egy másik eszközről.",
|
||||
"howItWorks": "Hogyan működik",
|
||||
"ackPasswordLostWarning": "Tudomásul veszem, hogy ha elveszítem a jelszavamat, elveszíthetem az adataimat, mivel adataim <underline>végponttól végpontig titkosítva vannak</underline>.",
|
||||
"loginTerms": "A bejelentkezés gombra kattintva elfogadom az <u-terms>szolgáltatási feltételeket</u-terms> és az <u-policy>adatvédelmi irányelveket</u-policy>",
|
||||
"logInLabel": "Bejelentkezés",
|
||||
"logout": "Kijelentkezés",
|
||||
"areYouSureYouWantToLogout": "Biztos benne, hogy kijelentkezik?",
|
||||
"yesLogout": "Igen, kijelentkezés",
|
||||
"exit": "Kilépés",
|
||||
"theme": "Kinézet",
|
||||
"lightTheme": "Világos",
|
||||
"darkTheme": "Sötét",
|
||||
"systemTheme": "Rendszer",
|
||||
"verifyingRecoveryKey": "Helyreállítási kulcs ellenőrzése...",
|
||||
"recoveryKeyVerified": "A helyreállítási kulcs ellenőrizve",
|
||||
"recoveryKeySuccessBody": "Nagyszerű! A helyreállítási kulcs érvényes. Köszönjük az igazolást.\n\nNe felejtsen el biztonsági másolatot készíteni helyreállítási kulcsáról.",
|
||||
"invalidRecoveryKey": "A megadott helyreállítási kulcs érvénytelen. Kérjük, győződjön meg róla, hogy 24 szót tartalmaz, és ellenőrizze mindegyik helyesírását.\n\nHa régebbi helyreállítási kódot adott meg, győződjön meg arról, hogy az 64 karakter hosszú, és ellenőrizze mindegyiket.",
|
||||
"recreatePasswordTitle": "Új jelszó létrehozása",
|
||||
"recreatePasswordBody": "A jelenlegi eszköz nem elég erős a jelszavának ellenőrzéséhez, de újra tudjuk úgy generálni, hogy az minden eszközzel működjön.\n\nKérjük, jelentkezzen be helyreállítási kulcsával, és állítsa be újra jelszavát (ha szeretné, újra használhatja ugyanazt).",
|
||||
"invalidKey": "Érvénytelen kulcs",
|
||||
"tryAgain": "Próbáld újra",
|
||||
"viewRecoveryKey": "Helyreállítási kulcs megtekintése",
|
||||
"confirmRecoveryKey": "Helyreállítási kulcs megerősítése",
|
||||
"recoveryKeyVerifyReason": "A helyreállítási kulcs az egyetlen módja annak, hogy visszaállítsa fényképeit, ha elfelejti jelszavát. A helyreállítási kulcsot a Beállítások > Fiók menüpontban találhatja meg.\n\nKérjük, írja be ide helyreállítási kulcsát annak ellenőrzéséhez, hogy megfelelően mentette-e el.",
|
||||
"confirmYourRecoveryKey": "Erősítse meg helyreállítási kulcsát",
|
||||
"confirm": "Megerősítés",
|
||||
"emailYourLogs": "E-mailben küldje el naplóit",
|
||||
"pleaseSendTheLogsTo": "Kérjük, küldje el a naplókat erre az e-mail címre\n{toEmail}",
|
||||
"copyEmailAddress": "E-mail cím másolása",
|
||||
"exportLogs": "Naplófájlok exportálása",
|
||||
"enterYourRecoveryKey": "Adja meg helyreállítási kulcsát",
|
||||
"tempErrorContactSupportIfPersists": "Úgy tűnik, valami hiba történt. Kérjük, próbálja újra egy idő után. Ha a hiba továbbra is fennáll, forduljon ügyfélszolgálatunkhoz.",
|
||||
"networkHostLookUpErr": "Nem lehet csatlakozni az Ente-hez. Kérjük, ellenőrizze a hálózati beállításokat, és ha a hiba továbbra is fennáll, forduljon az ügyfélszolgálathoz.",
|
||||
"networkConnectionRefusedErr": "Nem lehet csatlakozni az Ente-hez, próbálja újra egy idő után. Ha a hiba továbbra is fennáll, forduljon az ügyfélszolgálathoz.",
|
||||
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Úgy tűnik, valami hiba történt. Kérjük, próbálja újra egy idő után. Ha a hiba továbbra is fennáll, forduljon ügyfélszolgálatunkhoz.",
|
||||
"about": "Rólunk",
|
||||
"weAreOpenSource": "Nyílt forráskódúak vagyunk!",
|
||||
"privacy": "Adatvédelem",
|
||||
"terms": "Feltételek",
|
||||
"checkForUpdates": "Frissítések ellenőrzése",
|
||||
"checkStatus": "Állapot ellenőrzése",
|
||||
"downloadUpdate": "Letöltés",
|
||||
"criticalUpdateAvailable": "Kritikus frissítés elérhető",
|
||||
"updateAvailable": "Elérhető frissítés",
|
||||
"update": "Frissítés",
|
||||
"checking": "Ellenőrzés...",
|
||||
"youAreOnTheLatestVersion": "Ön a legújabb verziót használja",
|
||||
"warning": "Figyelmeztetés",
|
||||
"exportWarningDesc": "Az exportált fájl bizalmas információkat tartalmaz. Kérjük, tárolja ezt biztonságosan.",
|
||||
"iUnderStand": "Megértettem",
|
||||
"@iUnderStand": {
|
||||
"description": "Text for the button to confirm the user understands the warning"
|
||||
},
|
||||
"authToExportCodes": "A kódok exportálásához hitelesítse magát",
|
||||
"importSuccessTitle": "Jaj!",
|
||||
"importSuccessDesc": "{count} kódot importált!",
|
||||
"@importSuccessDesc": {
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"description": "The number of codes imported",
|
||||
"type": "int",
|
||||
"example": "1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sorry": "Bocsánat",
|
||||
"importFailureDesc": "Nem sikerült elemezni a kiválasztott fájlt.\nKérjük, írjon a support@ente.io címre, ha segítségre van szüksége!",
|
||||
"pendingSyncs": "Figyelmeztetés",
|
||||
"pendingSyncsWarningBody": "Néhány kódról nem készült biztonsági másolat.\n\nKérjük, győződjön meg arról, hogy van biztonsági másolata ezekről a kódokról, mielőtt kijelentkezik.",
|
||||
"checkInboxAndSpamFolder": "Kérjük, ellenőrizze beérkező leveleit (és spam mappát) az ellenőrzés befejezéséhez",
|
||||
"tapToEnterCode": "Koppintson a kód beírásához",
|
||||
"resendEmail": "E-mail újraküldése",
|
||||
"weHaveSendEmailTo": "E-mailt küldtünk a következő címre: <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"
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Egyéni",
|
||||
"editOrder": "Sorrend módosítása",
|
||||
"mostFrequentlyUsed": "Gyakran használt",
|
||||
"mostRecentlyUsed": "Legutóbb használt",
|
||||
"activeSessions": "Aktív munkamenetek",
|
||||
"somethingWentWrongPleaseTryAgain": "Hiba történt. Kérjük, próbálkozz újra",
|
||||
"thisWillLogYouOutOfThisDevice": "Ezzel kijelentkezik erről az eszközről!",
|
||||
"thisWillLogYouOutOfTheFollowingDevice": "Ezzel kijelentkezik a következő eszközről:",
|
||||
"terminateSession": "Megszakítja a munkamenetet?",
|
||||
"terminate": "Befejezés",
|
||||
"thisDevice": "Ez az eszköz",
|
||||
"toResetVerifyEmail": "Jelszava visszaállításához először igazolja e-mail-címét.",
|
||||
"thisEmailIsAlreadyInUse": "Ez az e-mail már használatban van",
|
||||
"verificationFailedPleaseTryAgain": "Az ellenőrzés sikertelen, próbálja újra",
|
||||
"yourVerificationCodeHasExpired": "Ez az ellenőrző kód lejárt",
|
||||
"incorrectCode": "Helytelen kód",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "Sajnáljuk, a megadott kód helytelen",
|
||||
"emailChangedTo": "Az e-mail cím módosítva erre: {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "A hitelesítés sikertelen, próbálja újra",
|
||||
"authenticationSuccessful": "Sikeres hitelesítés!",
|
||||
"twofactorAuthenticationSuccessfullyReset": "A kétfaktoros hitelesítés visszaállítása sikeres",
|
||||
"incorrectRecoveryKey": "Helytelen helyreállítási kulcs",
|
||||
"theRecoveryKeyYouEnteredIsIncorrect": "A megadott helyreállítási kulcs helytelen",
|
||||
"enterPassword": "Adja meg a jelszót",
|
||||
"selectExportFormat": "Válasszon exportálási formátumot",
|
||||
"exportDialogDesc": "A titkosított exportálást az Ön által választott jelszó védi.",
|
||||
"encrypted": "Titkosított",
|
||||
"plainText": "Egyszerű szöveg",
|
||||
"passwordToEncryptExport": "Jelszó az export titkosításához",
|
||||
"export": "Exportálás",
|
||||
"useOffline": "Használja biztonsági mentés nélkül",
|
||||
"signInToBackup": "Jelentkezzen be a kódok biztonsági mentéséhez",
|
||||
"singIn": "Jelentkezzen be",
|
||||
"sigInBackupReminder": "Kérjük, exportálja a kódjait, hogy biztosan rendelkezzen biztonsági másolattal, amelyből visszaállíthatja.",
|
||||
"offlineModeWarning": "Úgy döntött, hogy biztonsági mentés nélkül folytatja. Kérjük, készítsen manuális biztonsági másolatot a kódok biztonsága érdekében.",
|
||||
"showLargeIcons": "Nagy ikonok megjelenítése",
|
||||
"compactMode": "Kompakt mód",
|
||||
"shouldHideCode": "Kódok elrejtése",
|
||||
"doubleTapToViewHiddenCode": "A kód megtekintéséhez koppintson duplán egy bejegyzésre",
|
||||
"focusOnSearchBar": "A keresésre fókuszálás az alkalmazás indításakor",
|
||||
"confirmUpdatingkey": "Biztosan frissíteni szeretné a titkos kulcsot?",
|
||||
"minimizeAppOnCopy": "Alkalmazás kicsinyítése másoláskor",
|
||||
"editCodeAuthMessage": "Hitelesítés a kód szerkesztéséhez",
|
||||
"deleteCodeAuthMessage": "Hitelesítés a kód törléséhez",
|
||||
"showQRAuthMessage": "Hitelesítés a QR kód megjelenítéséhez",
|
||||
"confirmAccountDeleteTitle": "Fiók törlésének megerősítése",
|
||||
"confirmAccountDeleteMessage": "",
|
||||
"androidBiometricHint": "Személyazonosság ellenőrzése",
|
||||
"@androidBiometricHint": {
|
||||
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricNotRecognized": "Nem felismerhető. Próbáld újra.",
|
||||
"@androidBiometricNotRecognized": {
|
||||
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricSuccess": "Sikeres",
|
||||
"@androidBiometricSuccess": {
|
||||
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidCancelButton": "Mégse",
|
||||
"@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": "Hitelesítés szükséges",
|
||||
"@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": "Biometria szükséges",
|
||||
"@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": "Az eszköz hitelesítő adatai szükségesek",
|
||||
"@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": "Az eszköz hitelesítő adatai szükségesek",
|
||||
"@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": "Beállítások megnyitása",
|
||||
"@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 biometrikus hitelesítés nincs beállítva az eszközön. A biometrikus hitelesítés hozzáadásához lépjen a 'Beállítások > Biztonság' menüpontra.",
|
||||
"@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 biometrikus hitelesítés ki van kapcsolva. Az engedélyezéséhez zárja le és oldja fel a képernyőt.",
|
||||
"@iOSLockOut": {
|
||||
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
|
||||
},
|
||||
"iOSGoToSettingsDescription": "A biometrikus hitelesítés nincs beállítva az eszközön. Kérjük, engedélyezze telefonon a Touch ID-t vagy a Face ID-t.",
|
||||
"@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": "Nincs internet kapcsolat",
|
||||
"pleaseCheckYourInternetConnectionAndTryAgain": "Kérjük, ellenőrizze az internetkapcsolatát, és próbálja meg újra.",
|
||||
"signOutFromOtherDevices": "Jelentkezzen ki más eszközökről",
|
||||
"signOutOtherBody": "Ha úgy gondolja, hogy valaki ismeri jelszavát, kényszerítheti a fiókját használó összes többi eszközt a kijelentkezésre.",
|
||||
"signOutOtherDevices": "Jelentkezzen ki a többi eszközről",
|
||||
"doNotSignOut": "Ne jelentkezzen ki",
|
||||
"hearUsWhereTitle": "Honnan hallottál Ente-ről? (opcionális)",
|
||||
"hearUsExplanation": "Nem követjük nyomon az alkalmazástelepítéseket. Segítene, ha elmondaná, hol talált ránk!",
|
||||
"recoveryKeySaved": "A helyreállítási kulcs a Letöltések mappába mentve!",
|
||||
"waitingForBrowserRequest": "Várakozás a böngészőkérésre...",
|
||||
"waitingForVerification": "Várakozás az ellenőrzésre...",
|
||||
"passkey": "Passkey",
|
||||
"passKeyPendingVerification": "Az ellenőrzés még függőben van",
|
||||
"loginSessionExpired": "Lejárt a munkamenet",
|
||||
"loginSessionExpiredDetails": "A munkameneted lejárt. Kérem lépjen be újra.",
|
||||
"developerSettingsWarning": "Biztos benne, hogy módosítani szeretné a fejlesztői beállításokat?",
|
||||
"developerSettings": "Fejlesztői beállítások",
|
||||
"serverEndpoint": "Szerver végpont",
|
||||
"invalidEndpoint": "Érvénytelen végpont",
|
||||
"invalidEndpointMessage": "Sajnáljuk, a megadott végpont érvénytelen. Adjon meg egy érvényes végpontot, és próbálja újra.",
|
||||
"endpointUpdatedMessage": "A végpont sikeresen frissítve",
|
||||
"customEndpoint": "Csatlakozva a következőhöz: {endpoint}",
|
||||
"pinText": "Rögzítés",
|
||||
"unpinText": "Rögzítés feloldása",
|
||||
"pinnedCodeMessage": "A {code} rögzítve",
|
||||
"unpinnedCodeMessage": "A {code} rögzítése feloldva",
|
||||
"pinned": "Kitűzött",
|
||||
"tags": "Címkék",
|
||||
"createNewTag": "Új címke létrehozása",
|
||||
"tag": "Címke",
|
||||
"create": "Létrehozás",
|
||||
"editTag": "Címke szerkesztése",
|
||||
"deleteTagTitle": "Címke törlése?",
|
||||
"deleteTagMessage": "Biztosan törli ezt a címkét? Ez a művelet visszafordíthatatlan.",
|
||||
"somethingWentWrongParsingCode": "Nem tudtunk elemezni {x} kódot.",
|
||||
"updateNotAvailable": "Nem érhető el frissítés",
|
||||
"viewRawCodes": "Nyers kódok megtekintése",
|
||||
"rawCodes": "Nyers kód",
|
||||
"rawCodeData": "Nyers kód adatok",
|
||||
"appLock": "Alkalmazások zárolása",
|
||||
"noSystemLockFound": "Nem található rendszerzár",
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Az alkalmazászár engedélyezéséhez állítsa be az eszköz jelszavát vagy a képernyőzárat a rendszerbeállításokban.",
|
||||
"autoLock": "Automatikus lezárás",
|
||||
"immediately": "Azonnal",
|
||||
"reEnterPassword": "Írja be újra a jelszót",
|
||||
"reEnterPin": "Írja be újra a PIN-kódot",
|
||||
"next": "Következő",
|
||||
"tooManyIncorrectAttempts": "Túl sok helytelen próbálkozás",
|
||||
"tapToUnlock": "Koppintson a feloldáshoz",
|
||||
"setNewPassword": "Új jelszó beállítása",
|
||||
"deviceLock": "Eszköz lezárás",
|
||||
"hideContent": "Tartalom elrejtése",
|
||||
"hideContentDescriptionAndroid": "Elrejti az alkalmazás tartalmát az alkalmazásváltóban, és letiltja a képernyőképeket",
|
||||
"hideContentDescriptioniOS": "Elrejti az alkalmazás tartalmát az alkalmazásváltóban",
|
||||
"autoLockFeatureDescription": "Az az idő, amely elteltével az alkalmazás zárolásra kerül, miután a háttérbe került",
|
||||
"appLockDescription": "Válasszon az eszköz alapértelmezett zárolási képernyője és a PIN-kóddal vagy jelszóval rendelkező egyéni zárolási képernyő között.",
|
||||
"pinLock": "PIN feloldás",
|
||||
"enterPin": "PIN kód megadása",
|
||||
"setNewPin": "Új PIN kód beállítása",
|
||||
"importFailureDescNew": "Nem sikerült elemezni a kiválasztott fájlt.",
|
||||
"appLockNotEnabled": "Az alkalmazászár nincs engedélyezve",
|
||||
"appLockNotEnabledDescription": "A passkey megtekintéséhez kérjük, hitelesítse magát",
|
||||
"authToViewPasskey": "A jelszó megtekintéséhez kérjük, hitelesítse magát",
|
||||
"appLockOfflineModeWarning": "Úgy döntött, hogy biztonsági mentés nélkül folytatja. Ha elfelejti az alkalmazászárat, akkor nem férhet hozzá adataihoz.",
|
||||
"duplicateCodes": "Ismétlődő kódok",
|
||||
"noDuplicates": "✨Nincs ismétlődés",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Nincsenek ismétlődő kódjai, amelyeket törölni lehetne",
|
||||
"deduplicateCodes": "Ismétlődő kódok",
|
||||
"deselectAll": "Összes kijelölés megszüntetése",
|
||||
"selectAll": "Összes kijelölése",
|
||||
"deleteDuplicates": "Ismétlődések törlése",
|
||||
"plainHTML": "Sima HTML kód"
|
||||
}
|
||||
@@ -1,16 +1,16 @@
|
||||
{
|
||||
"account": "Akun\n",
|
||||
"account": "Akun",
|
||||
"unlock": "Buka",
|
||||
"recoveryKey": "Kunci pemulihan",
|
||||
"counterAppBarTitle": "Pencacah",
|
||||
"counterAppBarTitle": "Penghitung",
|
||||
"@counterAppBarTitle": {
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "Cadangkan kode autentikasi 2 langkah Anda dengan aman",
|
||||
"onBoardingBody": "Cadangkan kode 2FA Anda dengan aman",
|
||||
"onBoardingGetStarted": "Mulai",
|
||||
"setupFirstAccount": "Siapkan akun pertama Anda",
|
||||
"importScanQrCode": "Pindai Kode Respons Cepat (QR)",
|
||||
"qrCode": "Kode Respons Cepat (QR)",
|
||||
"importScanQrCode": "Pindai Kode QR",
|
||||
"qrCode": "Kode QR",
|
||||
"importEnterSetupKey": "Masukkan kunci penyiapan",
|
||||
"importAccountPageTitle": "Masukkan rincian akun",
|
||||
"secretCanNotBeEmpty": "Rahasia tidak boleh kosong",
|
||||
@@ -22,7 +22,7 @@
|
||||
"secret": "Rahasia",
|
||||
"all": "Semua",
|
||||
"notes": "Catatan",
|
||||
"notesLengthLimit": "Banyaknya karakter pada catatan yang diperbolehkan paling banyak adalah sebanyak {count} karakter",
|
||||
"notesLengthLimit": "Catatan dapat memiliki panjang maksimal {count} karakter",
|
||||
"@notesLengthLimit": {
|
||||
"description": "Text to indicate the maximum number of characters allowed for notes",
|
||||
"placeholders": {
|
||||
@@ -33,29 +33,29 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"codeAccountHint": "Akun (nama@domain.com)",
|
||||
"codeAccountHint": "Akun (anda@domain.com)",
|
||||
"codeTagHint": "Tag",
|
||||
"accountKeyType": "Jenis kunci",
|
||||
"sessionExpired": "Sesi berakhir",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
"pleaseLoginAgain": "Silakan masuk akun lagi",
|
||||
"loggingOut": "Keluar dari akun...",
|
||||
"pleaseLoginAgain": "Silakan masuk lagi",
|
||||
"loggingOut": "Mengeluarkan akun...",
|
||||
"timeBasedKeyType": "Berbasis waktu (TOTP)",
|
||||
"counterBasedKeyType": "Berbasis pencacah (HOTP)",
|
||||
"counterBasedKeyType": "Berbasis Penghitung (HOTP)",
|
||||
"saveAction": "Simpan",
|
||||
"nextTotpTitle": "berikutnya",
|
||||
"deleteCodeTitle": "Hapus kode?",
|
||||
"deleteCodeMessage": "Anda yakin ingin menghapus kode ini? Tindakan ini tidak dapat dikembalikan ke semula.",
|
||||
"deleteCodeMessage": "Apakah Anda yakin ingin menghapus kode ini? Tindakan ini tidak dapat dibatalkan.",
|
||||
"trashCode": "Hapus kode?",
|
||||
"trashCodeMessage": "Anda yakin ingin menghapus kode untuk akun {account}?",
|
||||
"trashCodeMessage": "Apakah anda yakin ingin menghapus kode untuk {account}?",
|
||||
"trash": "Hapus",
|
||||
"viewLogsAction": "Lihat log",
|
||||
"sendLogsDescription": "Langkah ini akan mengirimkan log untuk membantu kami menyelesaikan masalah Anda. Kami menyarankan Anda untuk meninjau log-log berikut sebelum dibagikan walaupun kami sudah berupaya untuk memastikan agar segala informasi yang bersifat sensitif tidak terlog.",
|
||||
"preparingLogsTitle": "Menyiapkan log...",
|
||||
"emailLogsTitle": "Log surel",
|
||||
"emailLogsMessage": "Harap kirim log ke {email}",
|
||||
"viewLogsAction": "Lihat catatan",
|
||||
"sendLogsDescription": "Ini akan mengirimkan catatan untuk membantu kami memecahkan masalah Anda. Meskipun kami mengambil langkah-langkah untuk memastikan informasi sensitif tidak tercatat, kami menyarankan Anda untuk melihat catatan ini sebelum membagikannya.",
|
||||
"preparingLogsTitle": "Menyiapkan catatan...",
|
||||
"emailLogsTitle": "Catatan email",
|
||||
"emailLogsMessage": "Harap kirim catatan ke {email}",
|
||||
"@emailLogsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
@@ -63,12 +63,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"copyEmailAction": "Salin surel",
|
||||
"exportLogsAction": "Ekspor log",
|
||||
"reportABug": "Laporkan keberadaan kutu",
|
||||
"crashAndErrorReporting": "Pelaporan Galat dan Kemogokan",
|
||||
"reportBug": "Laporkan kutu",
|
||||
"emailUsMessage": "Harap kirimkan surel ke {email}",
|
||||
"copyEmailAction": "Salin alamat email",
|
||||
"exportLogsAction": "Ekspor catatan",
|
||||
"reportABug": "Laporkan bug",
|
||||
"crashAndErrorReporting": "Pelaporan Kerusakan & Kesalahan",
|
||||
"reportBug": "Laporkan bug",
|
||||
"emailUsMessage": "Harap kirim email kepada kami di {email}",
|
||||
"@emailUsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
@@ -76,90 +76,91 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"contactSupport": "Hubungi bantuan",
|
||||
"rateUsOnStore": "Beri kami penilaian di {storeName}",
|
||||
"contactSupport": "Hubungi dukungan",
|
||||
"rateUsOnStore": "Nilai kami di {storeName}",
|
||||
"blog": "Blog",
|
||||
"merchandise": "Toko kami",
|
||||
"merchandise": "Merchandise",
|
||||
"verifyPassword": "Verifikasi kata sandi",
|
||||
"pleaseWait": "Mohon tunggu...",
|
||||
"generatingEncryptionKeysTitle": "Membuat kunci enkripsi...",
|
||||
"generatingEncryptionKeysTitle": "Sedang membuat kunci enkripsi...",
|
||||
"recreatePassword": "Buat ulang kata sandi",
|
||||
"recreatePasswordMessage": "Gawai ini tidak cukup mutakhir untuk memverifikasi kata sandi Anda, sehingga kami perlu membuat ulang kata sandi Anda sekali lagi dengan cara yang dapat digunakan di semua perangkat.\n\nSilakan masuk dengan kunci pemulihan dan buat ulang kata sandi Anda (Gunakan kata sandi yang sama lagi jika Anda mau).",
|
||||
"recreatePasswordMessage": "Perangkat saat ini tidak cukup kuat untuk memverifikasi kata sandi Anda, jadi kami perlu membuat ulang kata sandi Anda dengan cara yang dapat digunakan di semua perangkat.\n\nHarap masuk menggunakan kunci pemulihan Anda dan buat ulang kata sandi Anda (Anda dapat menggunakan yang sama lagi jika diinginkan).",
|
||||
"useRecoveryKey": "Gunakan kunci pemulihan",
|
||||
"incorrectPasswordTitle": "Kata sandi salah",
|
||||
"welcomeBack": "Selamat datang kembali!",
|
||||
"madeWithLoveAtPrefix": "dibuat dengan ❤️ di ",
|
||||
"supportDevs": "Berlangganan <bold-green>ente</bold-green> untuk memberikan kami dukungan",
|
||||
"supportDiscount": "Gunakan kode kupon \"AUTH\" untuk mendapatkan diskon 10% pada tahun Anda berlangganan",
|
||||
"changeEmail": "Ubah surel",
|
||||
"supportDevs": "Berlangganan <bold-green>ente</bold-green> untuk mendukung kami",
|
||||
"supportDiscount": "Gunakan kode kupon \"AUTH\" untuk mendapatkan potongan 10% untuk tahun pertama",
|
||||
"changeEmail": "Ubah alamat email",
|
||||
"changePassword": "Ubah kata sandi",
|
||||
"data": "Data",
|
||||
"importCodes": "Impor kode",
|
||||
"importTypePlainText": "Teks biasa",
|
||||
"importTypeEnteEncrypted": "Eksporan Ente Terenkripsi",
|
||||
"passwordForDecryptingExport": "Kata sandi untuk mendekripsi eksporan",
|
||||
"passwordForDecryptingExport": "Kata sandi untuk mendekripsi ekspor",
|
||||
"passwordEmptyError": "Kata sandi tidak boleh kosong",
|
||||
"importFromApp": "Impor kode dari {appName}",
|
||||
"importGoogleAuthGuide": "Ekspor semua akun Anda dari Google Authenticator ke kode respons cepat (QR) dengan pilihan \"Transfer Akun\". Kemudian, pindai kode respons cepat tersebut dengan perangkat lain.\n\nKiat: webcam laptop juga dapat digunakan untuk untuk memindai kode respons cepat.",
|
||||
"importGoogleAuthGuide": "Ekspor akun Anda dari Google Authenticator ke kode QR menggunakan opsi \"Transfer Akun\". Kemudian, gunakan perangkat lain untuk memindai kode QR tersebut.\n\nTip: Anda bisa menggunakan webcam laptop Anda untuk memotret kode QR.",
|
||||
"importSelectJsonFile": "Pilih berkas JSON",
|
||||
"importSelectAppExport": "Pilih berkas eksporan dari {appName}",
|
||||
"importEnteEncGuide": "Pilih berkas JSON terenkripsi yang telah diekspor dari Ente",
|
||||
"importRaivoGuide": "Gunakan pilihan \"Export OTPs to Zip archive\" pada pengaturan Raivo.\n\nEkstrak berkas zip dan impor berkas JSON tersebut.",
|
||||
"importBitwardenGuide": "Gunakan pilihan \"Export vault\" pada Bitwarden Tools dan impor ber JSON yang takterenkripsi.",
|
||||
"importAegisGuide": "Gunakan pilihan \"Export vault\" pada pengaturan Aegis.\n\nJika brankas terenkripsi, masukkan kata sandi brankas untuk mendekripsi brankas.",
|
||||
"import2FasGuide": "Gunakan pilihan \"Pengaturan->Cadangkan -Eksport\" pada 2FAS.\n\nJika cadangan Anda dienkripsi, kata sandi akan Anda perlukan untuk mendekripsi cadangan",
|
||||
"importLastpassGuide": "Gunakan pilihan \"Transfer accounts\" pada pengaturan Lastpass Authenticator dan tekan \"Export accounts to file\". Impor berkas JSON terunduh.",
|
||||
"exportCodes": "Kode pengeksporan",
|
||||
"importEnteEncGuide": "Pilih file enkripsi JSON yang telah diekspor dari Ente",
|
||||
"importRaivoGuide": "Gunakan opsi \"Export OTPs to Zip archive\" pada pengaturan Raivo.\n\nEkstrak file zip dan impor file JSON tersebut.",
|
||||
"importBitwardenGuide": "Gunakan opsi \"Export vault\" di Bitwarden dan impor file JSON yang tidak terenkripsi.",
|
||||
"importAegisGuide": "Gunakan opsi \"Export the vault\" di Pengaturan Aegis.\n\nJika brankas Anda terenkripsi, Anda perlu memasukkan kata sandi brankas untuk mendekripsi brankas.",
|
||||
"import2FasGuide": "Gunakan opsi \"Settings->Backup -Export\" di 2FAS.\n\nJika cadangan Anda terenkripsi, Anda perlu memasukkan kata sandi untuk mendekripsi cadangan",
|
||||
"importLastpassGuide": "Gunakan opsi \"Transfer accounts\" di Pengaturan Lastpass Authenticator dan tekan \"Export accounts to file\". Impor file JSON yang diunduh.",
|
||||
"exportCodes": "Ekspor kode",
|
||||
"importLabel": "Impor",
|
||||
"importInstruction": "Mohon pilih berkas yang mengandung daftar kode dalam format seperti berikut",
|
||||
"importCodeDelimiterInfo": "Kode dapat dipisahkan oleh tanda koma atau baris baru",
|
||||
"importInstruction": "Harap pilih file yang berisi daftar kode Anda dalam format berikut",
|
||||
"importCodeDelimiterInfo": "Kode dapat dipisahkan dengan koma atau baris baru",
|
||||
"selectFile": "Pilih file",
|
||||
"emailVerificationToggle": "Verifikasi surel",
|
||||
"emailVerificationEnableWarning": "Agar tidak akun Anda tidak terkunci, pastikan simpan salinan pengaturan 2FA surel Anda di luar aplikasi Ente Auth sebelum verifikasi surel Anda nyalakan.",
|
||||
"authToChangeEmailVerificationSetting": "Mohon autentikasikan untuk mengubah verifikasi surel",
|
||||
"authenticateGeneric": "Mohon autentikasikan",
|
||||
"authToViewYourRecoveryKey": "Mohon autentikasikan untuk menampilkan kunci pemulihan",
|
||||
"authToChangeYourEmail": "Moohn autentikasikan untuk mengubah surel",
|
||||
"authToChangeYourPassword": "Mohon autentikasikan untuk mengubah kata sandi",
|
||||
"authToViewSecrets": "Mohon autentikasikan untuk menampilkan RahasiaKu",
|
||||
"authToInitiateSignIn": "Mohon autentikasikan untuk memulai proses pencadangan.",
|
||||
"emailVerificationToggle": "Verifikasi email",
|
||||
"emailVerificationEnableWarning": "Untuk menghindari terkunci dari akun Anda, pastikan untuk menyimpan salinan 2FA email Anda di luar Ente Auth sebelum mengaktifkan verifikasi email.",
|
||||
"authToChangeEmailVerificationSetting": "Harap lakukan autentikasi untuk mengubah verifikasi email",
|
||||
"authenticateGeneric": "Harap lakukan autentikasi",
|
||||
"authToViewYourRecoveryKey": "Harap lakukan autentikasi untuk melihat kunci pemulihan Anda",
|
||||
"authToChangeYourEmail": "Harap lakukan autentikasi untuk mengubah email Anda",
|
||||
"authToChangeYourPassword": "Harap lakukan autentikasi untuk mengubah kata sandi Anda",
|
||||
"authToViewSecrets": "Harap lakukan autentikasi untuk melihat rahasia Anda",
|
||||
"authToInitiateSignIn": "Harap lakukan autentikasi untuk memulai proses masuk untuk pencadangan.",
|
||||
"ok": "Oke",
|
||||
"cancel": "Batal",
|
||||
"yes": "Ya",
|
||||
"no": "Tidak",
|
||||
"email": "Surel",
|
||||
"support": "Bantuan",
|
||||
"email": "Email",
|
||||
"support": "Dukungan",
|
||||
"general": "Umum",
|
||||
"settings": "Pengaturan",
|
||||
"copied": "Disalin",
|
||||
"pleaseTryAgain": "Mohon coba lagi",
|
||||
"existingUser": "Pengguna yang Sudah Ada",
|
||||
"pleaseTryAgain": "Harap coba lagi",
|
||||
"existingUser": "Pengguna yang ada",
|
||||
"newUser": "Baru di Ente",
|
||||
"delete": "Hapus",
|
||||
"enterYourPasswordHint": "Masukkan kata sandi Anda",
|
||||
"forgotPassword": "Lupa kata sandi",
|
||||
"oops": "Aduh",
|
||||
"oops": "Ups",
|
||||
"suggestFeatures": "Sarankan fitur",
|
||||
"faq": "Tanya Jawab Umum",
|
||||
"faq": "Pertanyaan yang sering ditanyakan",
|
||||
"somethingWentWrongMessage": "Terjadi kesalahan, silakan coba lagi",
|
||||
"leaveFamily": "Tinggalkan keluarga",
|
||||
"leaveFamilyMessage": "Anda yakin sudah tidak ingin berlangganan paket keluarga ini?",
|
||||
"leaveFamilyMessage": "Apakah Anda yakin sudah tidak ingin berlangganan paket keluarga ini?",
|
||||
"inFamilyPlanMessage": "Anda sedang berlangganan paket keluarga!",
|
||||
"hintForMobile": "Tekan lama kode untuk menyunting atau menghapus.",
|
||||
"hintForDesktop": "Klik kanan kode untuk menyunting atau menghapus.",
|
||||
"hintForMobile": "Tekan lama kode untuk mengedit atau menghapusnya.",
|
||||
"hintForDesktop": "Klik kanan kode untuk mengedit atau menghapus.",
|
||||
"scan": "Pindai",
|
||||
"scanACode": "Pindai kode",
|
||||
"verify": "Verifikasi",
|
||||
"verifyEmail": "Verifikasi email",
|
||||
"enterCodeHint": "Masukkan kode 6 angka pada aplikasi pengautentikasi Anda",
|
||||
"enterCodeHint": "Masukkan kode 6 digit dari aplikasi autentikator Anda",
|
||||
"lostDeviceTitle": "Perangkat hilang?",
|
||||
"twoFactorAuthTitle": "Autentikasi dua langkah",
|
||||
"passkeyAuthTitle": "Verifikasi passkey",
|
||||
"verifyPasskey": "Verifikasi passkey",
|
||||
"loginWithTOTP": "Masuk menggunakan TOTP",
|
||||
"recoverAccount": "Pulihkan akun",
|
||||
"enterRecoveryKeyHint": "Masukkan kunci pemulihanmu",
|
||||
"enterRecoveryKeyHint": "Masukkan kunci pemulihan Anda",
|
||||
"recover": "Pulihkan",
|
||||
"contactSupportViaEmailMessage": "Silakan kirimkan surel ke {email} dari alamat surelmu yang terdaftar",
|
||||
"contactSupportViaEmailMessage": "Harap kirim email ke {email} dari alamat email terdaftar Anda",
|
||||
"@contactSupportViaEmailMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
@@ -167,13 +168,13 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "Kode QR tidak sah",
|
||||
"invalidQRCode": "Kode QR tidak valid",
|
||||
"noRecoveryKeyTitle": "Tidak punya kunci pemulihan?",
|
||||
"enterEmailHint": "Masukkan alamat surelmu",
|
||||
"invalidEmailTitle": "Alamat surel tidak sah",
|
||||
"invalidEmailMessage": "Harap masukkan alamat surel yang sah.",
|
||||
"enterEmailHint": "Masukkan alamat email Anda",
|
||||
"invalidEmailTitle": "Alamat email tidak valid",
|
||||
"invalidEmailMessage": "Harap masukkan alamat email yang valid.",
|
||||
"deleteAccount": "Hapus akun",
|
||||
"deleteAccountQuery": "Sayang sekali Anda harus pergi. Apakah ada masalah?",
|
||||
"deleteAccountQuery": "Kami akan merasa kehilangan Anda. Apakah Anda menghadapi masalah?",
|
||||
"yesSendFeedbackAction": "Ya, kirim umpan balik",
|
||||
"noDeleteAccountAction": "Tidak, hapus akun",
|
||||
"initiateAccountDeleteTitle": "Harap autentikasi untuk memulai penghapusan akun",
|
||||
@@ -182,37 +183,37 @@
|
||||
"weakStrength": "Lemah",
|
||||
"strongStrength": "Kuat",
|
||||
"moderateStrength": "Sedang",
|
||||
"confirmPassword": "Konfirmasi sandi",
|
||||
"confirmPassword": "Konfirmasi kata sandi",
|
||||
"close": "Tutup",
|
||||
"oopsSomethingWentWrong": "Ups, sepertinya ada yang salah.",
|
||||
"oopsSomethingWentWrong": "Ups, Ada yang tidak beres.",
|
||||
"selectLanguage": "Pilih bahasa",
|
||||
"language": "Bahasa",
|
||||
"social": "Sosial",
|
||||
"security": "Keamanan",
|
||||
"lockscreen": "Layar kunci",
|
||||
"authToChangeLockscreenSetting": "Mohon autentikan untuk mengganti pengaturan layar kunci",
|
||||
"authToChangeLockscreenSetting": "Harap lakukan autentikasi untuk mengubah pengaturan layar kunci",
|
||||
"deviceLockEnablePreSteps": "Pasang kunci sandi atau kunci layar pada pengaturan sistem untuk menyalakan Pengunci Gawai.",
|
||||
"viewActiveSessions": "Tampilkan sesi yang aktif",
|
||||
"authToViewYourActiveSessions": "Mohon autentikasikan untuk menampilkan sesi aktif Anda",
|
||||
"viewActiveSessions": "Lihat sesi aktif",
|
||||
"authToViewYourActiveSessions": "Harap lakukan autentikasi untuk melihat sesi aktif Anda",
|
||||
"searchHint": "Cari...",
|
||||
"search": "Cari",
|
||||
"sorryUnableToGenCode": "Maaf, kami tidak dapat membuat kode untuk {issuerName}",
|
||||
"noResult": "Tiada hasil",
|
||||
"sorryUnableToGenCode": "Maaf, tidak dapat menghasilkan kode untuk {issuerName}",
|
||||
"noResult": "Tidak ada hasil",
|
||||
"addCode": "Tambahkan kode",
|
||||
"scanAQrCode": "Pindai kode Respons Cepat (QR)",
|
||||
"scanAQrCode": "Pindai kode QR",
|
||||
"enterDetailsManually": "Masukkan rincian secara manual",
|
||||
"edit": "Sunting",
|
||||
"edit": "Edit",
|
||||
"share": "Bagikan",
|
||||
"shareCodes": "Bagikan kode",
|
||||
"shareCodesDuration": "Pilih durasi untuk membagikan kode.",
|
||||
"shareCodesDuration": "Pilih durasi untuk berbagi kode.",
|
||||
"restore": "Pulihkan",
|
||||
"copiedToClipboard": "Tersalin ke papan klip",
|
||||
"copiedNextToClipboard": "",
|
||||
"error": "Galat",
|
||||
"recoveryKeyCopiedToClipboard": "Kunci pemulihan tersalin ke papan klip",
|
||||
"recoveryKeyOnForgotPassword": "Jika Anda lupa kata sandi Anda, satu-satunya cara untuk memulihkan data Anda adalah dengan kunci ini.",
|
||||
"recoveryKeySaveDescription": "Kami tidak menyimpan kunci ini, tolong simpan kunci berisikan 24 kata ini di tempat yang aman.",
|
||||
"doThisLater": "Nanti saja",
|
||||
"copiedToClipboard": "Disalin ke papan klip",
|
||||
"copiedNextToClipboard": "Kode berikutnya telah disalin ke papan klip",
|
||||
"error": "Kesalahan",
|
||||
"recoveryKeyCopiedToClipboard": "Kunci pemulihan disalin ke papan klip",
|
||||
"recoveryKeyOnForgotPassword": "Jika Anda lupa kata sandi, satu-satunya cara memulihkan data Anda adalah dengan kunci ini.",
|
||||
"recoveryKeySaveDescription": "Kami tidak menyimpan kunci ini, jadi harap simpan kunci yang berisi 24 kata ini dengan aman.",
|
||||
"doThisLater": "Lakukan lain kali",
|
||||
"saveKey": "Simpan kunci",
|
||||
"save": "Simpan",
|
||||
"send": "Kirim",
|
||||
@@ -247,7 +248,7 @@
|
||||
"passwordChangedSuccessfully": "Kata sandi sukses diubah",
|
||||
"generatingEncryptionKeys": "Sedang membuat kunci enkripsi...",
|
||||
"continueLabel": "Lanjutkan",
|
||||
"insecureDevice": "Gawai takaman",
|
||||
"insecureDevice": "Perangkat tidak aman",
|
||||
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Maaf, kami tidak dapat membuat kunci yang aman pada perangkat ini.\n\nHarap mendaftar dengan perangkat lain.",
|
||||
"howItWorks": "Cara kerjanya",
|
||||
"ackPasswordLostWarning": "Saya mengerti bahwa jika saya lupa kata sandi saya, data saya dapat hilang karena data saya <underline>terenkripsi secara end-to-end</underline>.",
|
||||
@@ -257,6 +258,10 @@
|
||||
"areYouSureYouWantToLogout": "Anda yakin ingin keluar dari akun ini?",
|
||||
"yesLogout": "Ya, keluar akun",
|
||||
"exit": "Keluar",
|
||||
"theme": "Tema",
|
||||
"lightTheme": "Terang",
|
||||
"darkTheme": "Gelap",
|
||||
"systemTheme": "Sistem",
|
||||
"verifyingRecoveryKey": "Memverifikasi kunci pemulihan...",
|
||||
"recoveryKeyVerified": "Kunci pemulihan terverifikasi",
|
||||
"recoveryKeySuccessBody": "Bagus! Kunci pemulihan ada valid. Terima kasih.\n\nMohon ingat-ingat untuk mencadangkan kunci pemulihan Anda dengan aman.",
|
||||
@@ -327,6 +332,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Kustom",
|
||||
"editOrder": "Ubah pesanan",
|
||||
"mostFrequentlyUsed": "Sering digunakan",
|
||||
"mostRecentlyUsed": "Baru digunakan",
|
||||
"activeSessions": "Sesi aktif",
|
||||
"somethingWentWrongPleaseTryAgain": "Ada yang salah. Mohon coba kembali",
|
||||
"thisWillLogYouOutOfThisDevice": "Langkah ini akan mengeluarkan Anda dari gawai ini!",
|
||||
@@ -386,7 +395,7 @@
|
||||
"@androidCancelButton": {
|
||||
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on Android side. Maximum 30 characters."
|
||||
},
|
||||
"androidSignInTitle": "Autentikasi",
|
||||
"androidSignInTitle": "Autentikasi diperlukan",
|
||||
"@androidSignInTitle": {
|
||||
"description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
@@ -394,15 +403,15 @@
|
||||
"@androidBiometricRequiredTitle": {
|
||||
"description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidDeviceCredentialsRequiredTitle": "Kredensial gawal diperlukan",
|
||||
"androidDeviceCredentialsRequiredTitle": "Kredensial perangkat diperlukan",
|
||||
"@androidDeviceCredentialsRequiredTitle": {
|
||||
"description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidDeviceCredentialsSetupDescription": "Kredensial gawal diperlukan",
|
||||
"androidDeviceCredentialsSetupDescription": "Kredensial perangkat diperlukan",
|
||||
"@androidDeviceCredentialsSetupDescription": {
|
||||
"description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side."
|
||||
},
|
||||
"goToSettings": "Ke pengaturan",
|
||||
"goToSettings": "Pergi ke pengaturan",
|
||||
"@goToSettings": {
|
||||
"description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters."
|
||||
},
|
||||
@@ -442,47 +451,56 @@
|
||||
"serverEndpoint": "Peladen endpoint",
|
||||
"invalidEndpoint": "Endpoint takvalid",
|
||||
"invalidEndpointMessage": "Maaf, endpoint yang Anda masukkan takvalid. Mohon masukkan endpoint yang valid, lalu coba kembali.",
|
||||
"endpointUpdatedMessage": "Endpoint sukses dimutakhirkan",
|
||||
"customEndpoint": "Terkoneksi ke {endpoint}",
|
||||
"endpointUpdatedMessage": "Endpoint berhasil diubah",
|
||||
"customEndpoint": "Terhubung ke {endpoint}",
|
||||
"pinText": "Sematkan",
|
||||
"unpinText": "Awasematkan",
|
||||
"pinnedCodeMessage": "{code} telah disematkan",
|
||||
"unpinnedCodeMessage": "{code} telah diawasematkan",
|
||||
"unpinnedCodeMessage": "{code} telah dilepas",
|
||||
"pinned": "Disematkan",
|
||||
"tags": "Tanda",
|
||||
"createNewTag": "Buat Tanda Baru",
|
||||
"tag": "Tanda",
|
||||
"create": "Buat",
|
||||
"editTag": "Sunting tanda",
|
||||
"editTag": "Ubah tanda",
|
||||
"deleteTagTitle": "Hapus tanda?",
|
||||
"deleteTagMessage": "Anda yakin ingin menghapus tanda? Langkah ini tidak akan dapat dikembalikan seperti semula.",
|
||||
"deleteTagMessage": "Apakah Anda yakin ingin menghapus tanda ini? Tindakan ini tidak dapat dibatalkan.",
|
||||
"somethingWentWrongParsingCode": "Kode {x} tidak dapat kami urai.",
|
||||
"updateNotAvailable": "Pemutakhiran tidak tersedia",
|
||||
"viewRawCodes": "Tampilkan kode mentahan",
|
||||
"rawCodes": "Kode mentahan",
|
||||
"rawCodeData": "Data kode mentahan",
|
||||
"appLock": "Pengunci Apl",
|
||||
"noSystemLockFound": "Pengunci sistem tidak ditemukan",
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Untuk menyalakan Pengunci Apl, mohon pasang kode sandi atau kunci layar di pengaturan sistem gawai Anda",
|
||||
"autoLock": "Autokunci",
|
||||
"immediately": "Dengan segera",
|
||||
"updateNotAvailable": "Pembaruan tidak tersedia",
|
||||
"viewRawCodes": "Lihat kode mentah",
|
||||
"rawCodes": "Kode mentah",
|
||||
"rawCodeData": "Data kode mentah",
|
||||
"appLock": "Kunci aplikasi",
|
||||
"noSystemLockFound": "Tidak ditemukan kunci sistem",
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Untuk mengaktifkan kunci aplikasi, harap atur kode sandi perangkat atau kunci layar di pengaturan sistem Anda.",
|
||||
"autoLock": "Kunci otomatis",
|
||||
"immediately": "Segera",
|
||||
"reEnterPassword": "Masukkan kembali kata sandi",
|
||||
"reEnterPin": "Masukkan kembali PIN",
|
||||
"next": "Selanjutnya",
|
||||
"tooManyIncorrectAttempts": "Terlalu banyak percobaan yang salah",
|
||||
"tapToUnlock": "Ketuk untuk membuka",
|
||||
"setNewPassword": "Pasang kata sandi baru",
|
||||
"deviceLock": "Pengunci bawaan gawai",
|
||||
"deviceLock": "Kunci perangkat",
|
||||
"hideContent": "Sembunyikan isi",
|
||||
"hideContentDescriptionAndroid": "Sembunyikan isi aplikasi pada pengganti apl dan matikan penangkap layar",
|
||||
"hideContentDescriptioniOS": "Sembunyikan isi aplikasi di pengganti apl",
|
||||
"hideContentDescriptionAndroid": "Menyembunyikan konten aplikasi di pemilih aplikasi dan menonaktifkan tangkapan layar",
|
||||
"hideContentDescriptioniOS": "Menyembunyikan konten aplikasi di pemilih aplikasi",
|
||||
"autoLockFeatureDescription": "Durasi waktu aplikasi akan terkunci setelah aplikasi ditutup",
|
||||
"appLockDescription": "Pilih layar kunci bawaan gawai Anda ATAU layar kunci kustom dengan PIN atau kata sandi.",
|
||||
"pinLock": "PIN",
|
||||
"enterPin": "Masukkan PIN",
|
||||
"setNewPin": "Pasang PIN yang baru",
|
||||
"importFailureDescNew": "Berkas yang dipilih tidak dapat diurai",
|
||||
"appLockNotEnabled": "Pengunci Apl tidak dinyalakan",
|
||||
"appLockNotEnabled": "Kunci aplikasi tidak diaktifkan",
|
||||
"appLockNotEnabledDescription": "Mohon nyalakan pengunci apl di Keamanan > Pengunci Apl",
|
||||
"authToViewPasskey": "Mohon autentikasikan untuk menampilkan kunci sandi",
|
||||
"appLockOfflineModeWarning": "Anda telah memilih untuk mengunci aplikasi tanpa cadangan apa pun. Jika Anda lupa kode Pengunci Apl Anda, Anda tidak akan dapat mengakses data-data Anda."
|
||||
"appLockOfflineModeWarning": "Anda telah memilih untuk mengunci aplikasi tanpa cadangan apa pun. Jika Anda lupa kode Pengunci Apl Anda, Anda tidak akan dapat mengakses data-data Anda.",
|
||||
"duplicateCodes": "Kode duplikat",
|
||||
"noDuplicates": "✨ Tak ada duplikat",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Kamu tidak memiliki kode duplikat yang dapat dihapus",
|
||||
"deduplicateCodes": "Hapus kode duplikat",
|
||||
"deselectAll": "Batalkan semua pilihan",
|
||||
"selectAll": "Pilih semua",
|
||||
"deleteDuplicates": "Hapus duplikat",
|
||||
"plainHTML": "HTML Sederhana"
|
||||
}
|
||||
@@ -156,6 +156,7 @@
|
||||
"twoFactorAuthTitle": "Autenticazione a due fattori",
|
||||
"passkeyAuthTitle": "Verifica della passkey",
|
||||
"verifyPasskey": "Verifica passkey",
|
||||
"loginWithTOTP": "Login con TOTP",
|
||||
"recoverAccount": "Recupera account",
|
||||
"enterRecoveryKeyHint": "Inserisci la tua chiave di recupero",
|
||||
"recover": "Recupera",
|
||||
@@ -257,6 +258,10 @@
|
||||
"areYouSureYouWantToLogout": "Sei sicuro di volerti disconnettere?",
|
||||
"yesLogout": "Si, effettua la disconnessione",
|
||||
"exit": "Esci",
|
||||
"theme": "Tema",
|
||||
"lightTheme": "Chiaro",
|
||||
"darkTheme": "Scuro",
|
||||
"systemTheme": "Sistema",
|
||||
"verifyingRecoveryKey": "Verifica della chiave di recupero...",
|
||||
"recoveryKeyVerified": "Chiave di recupero verificata",
|
||||
"recoveryKeySuccessBody": "Ottimo! La tua chiave di recupero è valida. Grazie per averla verificata.\n\nRicordati di effettuare il backup sicuro della tua chiave di recupero.",
|
||||
@@ -327,6 +332,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Personalizzato",
|
||||
"editOrder": "Modifica ordine",
|
||||
"mostFrequentlyUsed": "Utilizzato di frequente",
|
||||
"mostRecentlyUsed": "Utilizzato di recente",
|
||||
"activeSessions": "Sessioni attive",
|
||||
"somethingWentWrongPleaseTryAgain": "Qualcosa è andato storto, per favore riprova",
|
||||
"thisWillLogYouOutOfThisDevice": "Questo ti disconnetterà da questo dispositivo!",
|
||||
@@ -448,6 +457,7 @@
|
||||
"unpinText": "Sgancia",
|
||||
"pinnedCodeMessage": "{code} è stato fissato",
|
||||
"unpinnedCodeMessage": "{code} è stato sganciato",
|
||||
"pinned": "Fissato",
|
||||
"tags": "Tag",
|
||||
"createNewTag": "Crea un nuovo tag",
|
||||
"tag": "Tag",
|
||||
@@ -484,5 +494,13 @@
|
||||
"appLockNotEnabled": "Blocco app non abilitato",
|
||||
"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."
|
||||
"appLockOfflineModeWarning": "Hai scelto di procedere senza backup. Se dimentichi il tuo codice di blocco dell'app, non potrai più accedere ai tuoi dati.",
|
||||
"duplicateCodes": "Codici duplicati",
|
||||
"noDuplicates": "✨ Nessun doppione",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Non ci sono codici duplicati che possono essere cancellati",
|
||||
"deduplicateCodes": "Codici deduplicati",
|
||||
"deselectAll": "Deselezionare tutti",
|
||||
"selectAll": "Seleziona tutti",
|
||||
"deleteDuplicates": "Elimina i duplicati",
|
||||
"plainHTML": "HTML semplice"
|
||||
}
|
||||
@@ -156,6 +156,7 @@
|
||||
"twoFactorAuthTitle": "2 要素認証",
|
||||
"passkeyAuthTitle": "パスキー認証",
|
||||
"verifyPasskey": "パスキーの認証",
|
||||
"loginWithTOTP": "TOTPでログイン",
|
||||
"recoverAccount": "アカウントを回復",
|
||||
"enterRecoveryKeyHint": "回復キーを入力",
|
||||
"recover": "回復",
|
||||
@@ -327,6 +328,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "カスタム",
|
||||
"editOrder": "並べ替え",
|
||||
"mostFrequentlyUsed": "よく使う",
|
||||
"mostRecentlyUsed": "最近使った",
|
||||
"activeSessions": "アクティブセッション",
|
||||
"somethingWentWrongPleaseTryAgain": "問題が発生しました、再試行してください",
|
||||
"thisWillLogYouOutOfThisDevice": "このデバイスからログアウトします!",
|
||||
@@ -446,8 +451,9 @@
|
||||
"customEndpoint": "{endpoint} に接続しました",
|
||||
"pinText": "固定",
|
||||
"unpinText": "固定を解除",
|
||||
"pinnedCodeMessage": "{code} を固定しました",
|
||||
"unpinnedCodeMessage": "{code} の固定が解除されました",
|
||||
"pinnedCodeMessage": "{code}がピン留めされました",
|
||||
"unpinnedCodeMessage": "{code}のピン留めが解除されました",
|
||||
"pinned": "ピン留め",
|
||||
"tags": "タグ",
|
||||
"createNewTag": "新しいタグの作成",
|
||||
"tag": "タグ",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"importScanQrCode": "QR 코드 스캔하기",
|
||||
"qrCode": "QR 코드",
|
||||
"importEnterSetupKey": "설정 키 입력",
|
||||
"importAccountPageTitle": "계정 상세 정보 입력",
|
||||
"importAccountPageTitle": "계정 상세정보 입력",
|
||||
"secretCanNotBeEmpty": "비밀 키는 비워둘 수 없습니다",
|
||||
"bothIssuerAndAccountCanNotBeEmpty": "발행인과 계정을 모두 비워둘 수 없습니다",
|
||||
"incorrectDetails": "세부 정보가 잘못 됨",
|
||||
@@ -22,7 +22,7 @@
|
||||
"secret": "비밀",
|
||||
"all": "모든 항목",
|
||||
"notes": "메모",
|
||||
"notesLengthLimit": "메모는 최대 {count}자까지 적을 수 있습니다",
|
||||
"notesLengthLimit": "메모는 최대 {count} 자까지 적을 수 있습니다",
|
||||
"@notesLengthLimit": {
|
||||
"description": "Text to indicate the maximum number of characters allowed for notes",
|
||||
"placeholders": {
|
||||
@@ -36,7 +36,7 @@
|
||||
"codeAccountHint": "계정 (you@domain.com)",
|
||||
"codeTagHint": "태그",
|
||||
"accountKeyType": "키 종류",
|
||||
"sessionExpired": "세션 만료 됨",
|
||||
"sessionExpired": "세션 만료",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
@@ -52,10 +52,10 @@
|
||||
"trashCodeMessage": "정말로 {account} 의 코드를 삭제할까요?",
|
||||
"trash": "휴지통",
|
||||
"viewLogsAction": "로그 확인",
|
||||
"sendLogsDescription": "이 로그를 전송하면 문제 해결을 위한 디버그에 도움이 됩니다. 민감한 정보가 로그에 기록되지 않도록 주의를 기울이고 있지만, 공유하기 전에 해당 로그를 직접 확인하시기를 권장합니다.",
|
||||
"sendLogsDescription": "이 로그를 전송하면 문제 해결을 위한 디버깅에 도움이 됩니다. 민감한 정보가 로그에 기록되지 않도록 주의를 기울이고 있지만, 공유하기 전에 해당 로그를 직접 확인하시기를 권장합니다.",
|
||||
"preparingLogsTitle": "로그를 준비하는 중...",
|
||||
"emailLogsTitle": "이메일 로그",
|
||||
"emailLogsMessage": "{email} 로 로그를 보내주세요",
|
||||
"emailLogsMessage": "{email} 쪽으로 로그를 보내주세요",
|
||||
"@emailLogsMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
@@ -83,12 +83,14 @@
|
||||
"verifyPassword": "비밀번호 확인",
|
||||
"pleaseWait": "잠시만 기다려주세요...",
|
||||
"generatingEncryptionKeysTitle": "암호화 키를 생성하는 중...",
|
||||
"recreatePassword": "비밀번호 재생성",
|
||||
"recreatePassword": "비밀번호 다시 생성",
|
||||
"recreatePasswordMessage": "현재 기기는 비밀번호를 확인할 수 있을 만큼 강력하지 않으므로, 모든 기기에서 작동하는 방식으로 비밀번호를 한 번 더 생성해야 합니다. \n\n복구 키를 사용하여 로그인하고 비밀번호를 다시 생성해 주세요. (원하는 경우 동일한 비밀번호를 다시 사용할 수 있습니다)",
|
||||
"useRecoveryKey": "복구 키 사용",
|
||||
"incorrectPasswordTitle": "올바르지 않은 비밀번호",
|
||||
"welcomeBack": "돌아오신 것을 환영합니다!",
|
||||
"madeWithLoveAtPrefix": "❤️을 담아 만들었습니다 ",
|
||||
"emailAlreadyRegistered": "이미 등록된 이메일입니다.",
|
||||
"emailNotRegistered": "등록되지 않은 이메일입니다.",
|
||||
"madeWithLoveAtPrefix": "❤️을 담아 만들었습니다 ",
|
||||
"supportDevs": "<bold-green>ente</bold-green>를 구독하고 저희를 지원해주세요",
|
||||
"supportDiscount": "쿠폰 코드 \"AUTH\"를 사용하고 첫 해 10% 할인 혜택을 받으세요",
|
||||
"changeEmail": "이메일 변경",
|
||||
@@ -97,18 +99,18 @@
|
||||
"importCodes": "코드 가져오기",
|
||||
"importTypePlainText": "일반 텍스트",
|
||||
"importTypeEnteEncrypted": "Ente로 암호화된 내보내기",
|
||||
"passwordForDecryptingExport": "복호화용 비밀번호",
|
||||
"passwordForDecryptingExport": "복호화시 이용할 비밀번호",
|
||||
"passwordEmptyError": "비밀번호는 비어있을 수 없습니다",
|
||||
"importFromApp": "{appName}로부터 코드 불러오기",
|
||||
"importGoogleAuthGuide": "Google 인증기에서 \"계정 이전\" 옵션을 선택해 생성된 QR 코드를 이용해 계정들을 옮길 수 있습니다. 그 다음, 다른 디바이스를 이용하여 QR 코드를 스캔해주세요.\n\n힌트: 웹캠을 이용해 QR 코드를 촬영할 수 있습니다.",
|
||||
"importGoogleAuthGuide": "Google Authenticator에서 \"계정 이전\" 옵션을 선택해 생성된 QR 코드를 이용해 계정을 옮길 수 있습니다. 그 다음, 다른 기기를 이용하여 QR 코드를 촬영해주세요.\n\n힌트: 컴퓨터의 카메라를 이용해 QR 코드를 촬영할 수 있습니다.",
|
||||
"importSelectJsonFile": "JSON 파일 선택",
|
||||
"importSelectAppExport": "{appName}의 내보낸 파일 선택하기",
|
||||
"importSelectAppExport": "{appName} 의 내보낸 파일 선택하기",
|
||||
"importEnteEncGuide": "Ente에서 내보낸 암호화된 JSON 파일 선택하기",
|
||||
"importRaivoGuide": "Raivo의 설정에서 \"Zip 파일로 OTP 내보내기\"를 이용해주세요.\n\nZip 파일의 압축을 풀고 JSON 파일을 가져오세요.",
|
||||
"importBitwardenGuide": "Bitwarden의 도구에서 \"보관함 내보내기\"를 선택하여 암호화되지 않은 JSON 파일을 불러오세요.",
|
||||
"importAegisGuide": "Aegis의 설정에서 \"보관함 내보내기\"를 이용하세요.\n\n보관함이 암호화된 경우, 보관함의 복호화를 위해 보관함 비밀번호를 입력해야 할 수도 있습니다.",
|
||||
"import2FasGuide": "2FAS의 옵션에서 \"설정 -> 백업 -> 내보내기\"를 이용하세요.\n\n백업이 암호화되었다면, 백업의 복호화를 위해 암호를 입력해야 할 수도 있습니다.",
|
||||
"importLastpassGuide": "Lastpass 인증기의 설정에서 \"계정 이전하기\" 옵션 중 \"파일로 계정들 내보내기\"를 이용하세요. 다운로드 된 JSON 파일을 불러오세요.",
|
||||
"importLastpassGuide": "Lastpass Authenticator의 설정에서 \"계정 이전하기\" 옵션 중 \"파일로 계정 내보내기\"를 이용하세요. 다운로드 된 JSON 파일을 불러오세요.",
|
||||
"exportCodes": "코드 내보내기",
|
||||
"importLabel": "불러오기",
|
||||
"importInstruction": "다음의 포맷에 맞춰 여러분의 코드가 들어있는 파일을 선택해주세요",
|
||||
@@ -116,13 +118,13 @@
|
||||
"selectFile": "파일 선택",
|
||||
"emailVerificationToggle": "이메일 검증",
|
||||
"emailVerificationEnableWarning": "계정이 잠겨 손을 쓸 수 없는 상황에 대비하여, 이메일을 검증하기 전 메일로 전송된 Ente Auth의 2차 인증을 별도로 보관해두세요.",
|
||||
"authToChangeEmailVerificationSetting": "이메일 검증을 변경하시려면 인증절차를 거쳐주세요",
|
||||
"authenticateGeneric": "인증절차를 거쳐주세요",
|
||||
"authToViewYourRecoveryKey": "당신의 복구 키를 확인하려면 인증절차를 거쳐주세요",
|
||||
"authToChangeYourEmail": "이메일을 변경하려면 인증절차를 거쳐주세요",
|
||||
"authToChangeYourPassword": "암호를 변경하려면 인증절차를 거쳐주세요",
|
||||
"authToViewSecrets": "비밀 부분을 확인하려면 인증절차를 거쳐주세요",
|
||||
"authToInitiateSignIn": "백업을 위해 로그인 상태를 초기화하려면 인증절차를 거쳐주세요",
|
||||
"authToChangeEmailVerificationSetting": "이메일 검증을 변경하시려면 인증 절차를 거쳐주세요",
|
||||
"authenticateGeneric": "인증 절차를 거쳐주세요",
|
||||
"authToViewYourRecoveryKey": "당신의 복구 키를 확인하려면 인증 절차를 거쳐주세요",
|
||||
"authToChangeYourEmail": "이메일을 변경하려면 인증 절차를 거쳐주세요",
|
||||
"authToChangeYourPassword": "암호를 변경하려면 인증 절차를 거쳐주세요",
|
||||
"authToViewSecrets": "비밀 부분을 확인하려면 인증 절차를 거쳐주세요",
|
||||
"authToInitiateSignIn": "백업을 위해 로그인 상태를 초기화하려면 인증 절차를 거쳐주세요",
|
||||
"ok": "확인",
|
||||
"cancel": "취소",
|
||||
"yes": "네",
|
||||
@@ -142,16 +144,16 @@
|
||||
"suggestFeatures": "기능 제안",
|
||||
"faq": "FAQ",
|
||||
"somethingWentWrongMessage": "뭔가 잘못된 것 같습니다, 다시 시도해주세요",
|
||||
"leaveFamily": "패밀리에서 떠나기",
|
||||
"leaveFamily": "가족 그룹 떠나기",
|
||||
"leaveFamilyMessage": "가족 요금제에서 떠나시겠습니까?",
|
||||
"inFamilyPlanMessage": "가족 요금제에 가입하셨습니다!",
|
||||
"hintForMobile": "수정이나 삭제를 원하시면 코드를 길게 눌러주세요.",
|
||||
"hintForDesktop": "수정이나 삭제를 원하시면 코드를 우클릭해주세요.",
|
||||
"scan": "스캔하기",
|
||||
"scanACode": "코드 스캔하기",
|
||||
"hintForDesktop": "수정이나 삭제를 원하시면 코드를 오른 클릭 해주세요.",
|
||||
"scan": "촬영",
|
||||
"scanACode": "코드 촬영",
|
||||
"verify": "인증",
|
||||
"verifyEmail": "이메일 인증하기",
|
||||
"enterCodeHint": "인증기에 적힌 여섯 자리 코드를 입력해주세요",
|
||||
"enterCodeHint": "Authenticator에 적힌 6 자리 코드를 입력해주세요",
|
||||
"lostDeviceTitle": "기기를 잃어버리셨나요?",
|
||||
"twoFactorAuthTitle": "2단계 인증",
|
||||
"passkeyAuthTitle": "패스키 검증",
|
||||
@@ -160,7 +162,7 @@
|
||||
"recoverAccount": "계정 복구",
|
||||
"enterRecoveryKeyHint": "복구 키를 입력하세요",
|
||||
"recover": "복구",
|
||||
"contactSupportViaEmailMessage": "당신이 등록한 이메일 주소에서 {email}로 메일 한 통을 보내주세요",
|
||||
"contactSupportViaEmailMessage": "당신이 등록한 이메일 주소에서 {email} 쪽으로 메일 한 통을 보내주세요",
|
||||
"@contactSupportViaEmailMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
@@ -177,7 +179,7 @@
|
||||
"deleteAccountQuery": "떠나신다니 아쉽습니다. 뭔가 문제가 있으셨나요?",
|
||||
"yesSendFeedbackAction": "네, 피드백을 보냅니다",
|
||||
"noDeleteAccountAction": "아니오, 계정을 지웁니다",
|
||||
"initiateAccountDeleteTitle": "계정 삭제 절차를 시작하려면 인증절차를 거쳐주세요",
|
||||
"initiateAccountDeleteTitle": "계정 삭제 절차를 시작하려면 인증 절차를 거쳐주세요",
|
||||
"sendEmail": "이메일 보내기",
|
||||
"createNewAccount": "새 계정 만들기",
|
||||
"weakStrength": "약함",
|
||||
@@ -188,19 +190,19 @@
|
||||
"oopsSomethingWentWrong": "이런, 뭔가 꼬였습니다.",
|
||||
"selectLanguage": "언어 선택",
|
||||
"language": "언어",
|
||||
"social": "소셜",
|
||||
"social": "Social",
|
||||
"security": "보안",
|
||||
"lockscreen": "화면 잠금",
|
||||
"authToChangeLockscreenSetting": "화면 잠금 설정을 변경하시려면 인증절차를 거쳐주세요",
|
||||
"authToChangeLockscreenSetting": "화면 잠금 설정을 변경하시려면 인증 절차를 거쳐주세요",
|
||||
"deviceLockEnablePreSteps": "기기 잠금을 활성화하시려면, 기기의 암호를 만들거나 시스템 설정에서 화면 잠금을 설정해주세요.",
|
||||
"viewActiveSessions": "활성화된 세션 확인하기",
|
||||
"authToViewYourActiveSessions": "활성화된 세션을 확인하시려면 인증절차를 거쳐주세요",
|
||||
"viewActiveSessions": "활성화된 Session 확인하기",
|
||||
"authToViewYourActiveSessions": "활성화된 Session을 확인하시려면 인증 절차를 거쳐주세요",
|
||||
"searchHint": "검색...",
|
||||
"search": "찾기",
|
||||
"sorryUnableToGenCode": "죄송합니다, {issuerName}의 코드를 생성할 수 없습니다",
|
||||
"sorryUnableToGenCode": "죄송합니다, {issuerName} 의 코드를 생성할 수 없습니다",
|
||||
"noResult": "결과 없음",
|
||||
"addCode": "코드 추가하기",
|
||||
"scanAQrCode": "QR 코드 스캔하기",
|
||||
"scanAQrCode": "QR 코드 촬영",
|
||||
"enterDetailsManually": "속성을 수동으로 입력하기",
|
||||
"edit": "수정",
|
||||
"share": "공유",
|
||||
@@ -212,12 +214,12 @@
|
||||
"error": "에러",
|
||||
"recoveryKeyCopiedToClipboard": "클립보드에 복구 키 복사 됨",
|
||||
"recoveryKeyOnForgotPassword": "암호를 잊어버린 경우, 데이터를 복구하려면 이 키를 이용하는 방법 뿐입니다.",
|
||||
"recoveryKeySaveDescription": "저희는 이 키를 보관하지 않사오니, 여기에 있는 24 단어로 구성된 키를 안전하게 보관해주세요.",
|
||||
"recoveryKeySaveDescription": "저희는 이 키를 보관하지 않으니, 여기에 있는 24 단어로 구성된 키를 안전하게 보관해주세요.",
|
||||
"doThisLater": "나중에 하기",
|
||||
"saveKey": "키 저장하기",
|
||||
"save": "저장",
|
||||
"send": "보내기",
|
||||
"saveOrSendDescription": "이것을 당신의 스토리지 (일반적으로 다운로드 폴더) 에 저장하시겠습니까, 아니면 다른 앱으로 전송하시겠습니까?",
|
||||
"saveOrSendDescription": "이것을 당신의 스토리지 (일반적으로 다운로드 폴더) 에 저장하시겠습니까, 아니면 다른 App으로 전송하시겠습니까?",
|
||||
"saveOnlyDescription": "이것을 당신의 스토리지 (일반적으로 다운로드 폴더) 에 저장하시겠습니까?",
|
||||
"back": "뒤로 가기",
|
||||
"createAccount": "계정 만들기",
|
||||
@@ -235,14 +237,14 @@
|
||||
},
|
||||
"password": "암호",
|
||||
"signUpTerms": "나는 <u-terms>사용자 약관</u-terms>과 <u-policy>개인정보 취급방침</u-policy>에 동의합니다.",
|
||||
"privacyPolicyTitle": "개인정보 취급방침",
|
||||
"privacyPolicyTitle": "개인정보 취급 방침",
|
||||
"termsOfServicesTitle": "약관",
|
||||
"encryption": "암호화",
|
||||
"setPasswordTitle": "암호 지정",
|
||||
"changePasswordTitle": "암호 변경",
|
||||
"resetPasswordTitle": "암호 초기화",
|
||||
"encryptionKeys": "암호화 키",
|
||||
"passwordWarning": "저희는 이 암호를 저장하지 않사오니, 만약 잊어버리시게 되면, <underline>데이터를 복호화해드릴 수 없습니다</underline>",
|
||||
"passwordWarning": "저희는 이 암호를 저장하지 않으니, 만약 잊어버리시게 되면, <underline>데이터를 복호화 해드릴 수 없습니다</underline>",
|
||||
"enterPasswordToEncrypt": "데이터 암호화를 위한 암호 입력",
|
||||
"enterNewPasswordToEncrypt": "데이터 암호화를 위한 새로운 암호 입력",
|
||||
"passwordChangedSuccessfully": "암호가 성공적으로 변경되었습니다",
|
||||
@@ -251,19 +253,23 @@
|
||||
"insecureDevice": "보안이 허술한 기기",
|
||||
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "죄송합니다, 이 기기에서 보안 키를 생성할 수 없습니다.\n\n다른 기기에서 계정을 생성해주세요.",
|
||||
"howItWorks": "작동 원리",
|
||||
"ackPasswordLostWarning": "나는 암호를 분실한 경우, 데이터가 <underline>종단간 암호화</underline>되어있기에 데이터를 손실할 수 있음을 이해합니다.",
|
||||
"ackPasswordLostWarning": "나는 암호를 분실한 경우, 데이터가 <underline>종단 간 암호화</underline>되어있기에 데이터를 손실할 수 있음을 이해합니다.",
|
||||
"loginTerms": "로그인을 누름으로써, 나는 <u-terms>사용자 약관</u-terms>과 <u-policy>개인정보 취급방침</u-policy>에 동의합니다.",
|
||||
"logInLabel": "로그인",
|
||||
"logout": "로그아웃",
|
||||
"areYouSureYouWantToLogout": "로그아웃 하시겠습니까?",
|
||||
"yesLogout": "네, 로그아웃하기",
|
||||
"exit": "나가기",
|
||||
"theme": "테마",
|
||||
"lightTheme": "라이트",
|
||||
"darkTheme": "어두운",
|
||||
"systemTheme": "시스템",
|
||||
"verifyingRecoveryKey": "복구 키 확인 중...",
|
||||
"recoveryKeyVerified": "복구 키 확인 됨",
|
||||
"recoveryKeySuccessBody": "좋습니다! 복구 키가 확인되었습니다. 확인 절차를 거쳐주셔서 감사합니다.\n\n잊지 마시고 꼭 복구 키를 안전하게 보관해주세요.",
|
||||
"invalidRecoveryKey": "입력하신 복구 키가 유효하지 않습니다. 24 단어가 입력됐는지, 그리고 철자가 모두 정확한지 확인해주세요.\n\n구형 복구 코드를 입력하신 경우, 64 자가 맞는지, 그리고 문자가 각각 맞는지 확인해주세요.",
|
||||
"recreatePasswordTitle": "암호 재생성",
|
||||
"recreatePasswordBody": "현재 사용 중인 기기는 암호를 확인하기에 적합하지 않으나, 모든 기기에서 작동하는 방식으로 비밀번호를 재생성할 수 있습니다.\n\n복구 키를 사용하여 로그인하고 암호를 재생성해주세요. (원하시면 현재 사용 중인 암호와 같은 암호를 재사용하실 수 있습니다.)",
|
||||
"recreatePasswordTitle": "암호 다시 생성",
|
||||
"recreatePasswordBody": "현재 사용 중인 기기는 암호를 확인하기에 적합하지 않으나, 모든 기기에서 작동하는 방식으로 비밀번호를 다시 생성할 수 있습니다.\n\n복구 키를 사용하여 로그인하고 암호를 다시 생성해주세요. (원하시면 현재 사용 중인 암호와 같은 암호를 다시 사용하실 수 있습니다.)",
|
||||
"invalidKey": "유효하지 않은 키",
|
||||
"tryAgain": "다시 시도해주세요",
|
||||
"viewRecoveryKey": "복구 키 보기",
|
||||
@@ -272,7 +278,7 @@
|
||||
"confirmYourRecoveryKey": "복구 키 확인",
|
||||
"confirm": "확인",
|
||||
"emailYourLogs": "로그를 이메일로 보내기",
|
||||
"pleaseSendTheLogsTo": "이 로그를 {toEmail}으로 보내주세요",
|
||||
"pleaseSendTheLogsTo": "이 로그를 {toEmail} 쪽으로 보내주세요",
|
||||
"copyEmailAddress": "이메일 주소 복사",
|
||||
"exportLogs": "로그 내보내기",
|
||||
"enterYourRecoveryKey": "복구 키를 입력하세요",
|
||||
@@ -298,8 +304,8 @@
|
||||
"@iUnderStand": {
|
||||
"description": "Text for the button to confirm the user understands the warning"
|
||||
},
|
||||
"authToExportCodes": "코드를 내보내려면 인증절차를 거쳐주세요",
|
||||
"importSuccessTitle": "얏호!",
|
||||
"authToExportCodes": "코드를 내보내려면 인증 절차를 거쳐주세요",
|
||||
"importSuccessTitle": "야호!",
|
||||
"importSuccessDesc": "코드 {count} 개를 내보내셨습니다!",
|
||||
"@importSuccessDesc": {
|
||||
"placeholders": {
|
||||
@@ -313,11 +319,11 @@
|
||||
"sorry": "죄송합니다",
|
||||
"importFailureDesc": "선택하신 파일을 분석할 수 없습니다.\n도움이 필요하시다면 support@ente.io로 문의해주세요.",
|
||||
"pendingSyncs": "경고",
|
||||
"pendingSyncsWarningBody": "코드 몇 개가 백업되어있지 않습니다.\n\n로그아웃하기 전 해당 코드들을 백업하셨는지 확인해주세요.",
|
||||
"checkInboxAndSpamFolder": "검증을 위해 메일 보관함 (또는 스팸함) 을 확인해주세요",
|
||||
"pendingSyncsWarningBody": "코드 몇 개가 백업 되어있지 않습니다.\n\n로그아웃하기 전 해당 코드들을 백업하셨는지 확인해주세요.",
|
||||
"checkInboxAndSpamFolder": "검증을 위해 메일 보관함을 (또는 스팸 메일 보관함) 확인해주세요",
|
||||
"tapToEnterCode": "눌러서 코드 입력하기",
|
||||
"resendEmail": "이메일 다시 보내기",
|
||||
"weHaveSendEmailTo": "<green>{email}</green>으로 메일을 보냈습니다",
|
||||
"weHaveSendEmailTo": "<green>{email}</green> 쪽으로 메일을 보냈습니다",
|
||||
"@weHaveSendEmailTo": {
|
||||
"description": "Text to indicate that we have sent a mail to the user",
|
||||
"placeholders": {
|
||||
@@ -328,7 +334,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"activeSessions": "활성화된 세션",
|
||||
"manualSort": "사용자 정의",
|
||||
"editOrder": "순서 변경",
|
||||
"mostFrequentlyUsed": "자주 사용됨",
|
||||
"mostRecentlyUsed": "최근에 사용됨",
|
||||
"activeSessions": "활성화된 Session",
|
||||
"somethingWentWrongPleaseTryAgain": "뭔가 잘못됐습니다, 다시 시도해주세요",
|
||||
"thisWillLogYouOutOfThisDevice": "이 작업을 하시면 기기에서 로그아웃하게 됩니다!",
|
||||
"thisWillLogYouOutOfTheFollowingDevice": "이 작업을 하시면 다음 기기에서 로그아웃하게 됩니다:",
|
||||
@@ -449,6 +459,7 @@
|
||||
"unpinText": "핀 해제",
|
||||
"pinnedCodeMessage": "{code}가 핀 되었습니다.",
|
||||
"unpinnedCodeMessage": "{code}의 핀이 해제되었습니다.",
|
||||
"pinned": "고정됨",
|
||||
"tags": "태그",
|
||||
"createNewTag": "새 태그 만들기",
|
||||
"tag": "태그",
|
||||
@@ -466,24 +477,32 @@
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "어플 잠금을 활성화하시려면, 기기의 암호를 만들거나 시스템 설정에서 화면 잠금을 설정해주세요.",
|
||||
"autoLock": "자동 잠금",
|
||||
"immediately": "즉시",
|
||||
"reEnterPassword": "암호 재입력",
|
||||
"reEnterPin": "핀 재입력",
|
||||
"reEnterPassword": "암호 다시 입력",
|
||||
"reEnterPin": "핀 다시 입력",
|
||||
"next": "다음",
|
||||
"tooManyIncorrectAttempts": "잘못된 시도 횟수가 너무 많습니다",
|
||||
"tapToUnlock": "잠금을 해제하려면 누르세요",
|
||||
"setNewPassword": "새 비밀번호 설정",
|
||||
"deviceLock": "기기 잠금",
|
||||
"hideContent": "내용 숨기기",
|
||||
"hideContentDescriptionAndroid": "어플 전환 화면에서 어플의 내용을 숨기고 스크린샷 촬영을 막습니다",
|
||||
"hideContentDescriptioniOS": "어플 전환 화면에서 어플의 내용을 숨깁니다",
|
||||
"autoLockFeatureDescription": "어플이 백그라운드로 넘어가고 잠금 처리되기까지의 시간",
|
||||
"hideContentDescriptionAndroid": "App 전환 화면에서 App의 내용을 숨기고 Screenshot 촬영을 막습니다",
|
||||
"hideContentDescriptioniOS": "App 전환 화면에서 App의 내용을 숨깁니다",
|
||||
"autoLockFeatureDescription": "Background로 App 넘어가고 잠기기까지 걸리는 시간",
|
||||
"appLockDescription": "기본 잠금 화면이나, PIN 번호나 암호를 사용한 사용자 설정 잠금 화면 중에 선택하세요.",
|
||||
"pinLock": "PIN 잠금",
|
||||
"pinLock": "Pin 잠금",
|
||||
"enterPin": "PIN 번호 입력",
|
||||
"setNewPin": "새 PIN 번호 설정",
|
||||
"importFailureDescNew": "선택하신 파일을 분석할 수 없습니다.",
|
||||
"appLockNotEnabled": "어플 잠금 설정되지 않음",
|
||||
"appLockNotEnabledDescription": "설정 > 어플 잠금에서 어플 잠금을 활성화해주세요",
|
||||
"authToViewPasskey": "패스키를 보려면 인증절차를 거쳐주세요",
|
||||
"appLockOfflineModeWarning": "백업 없이 진행하는 것을 선택하셨습니다. 어플 잠금 방법을 잊어버리신 경우, 데이터에 접근하실 수 없게 됩니다."
|
||||
"appLockNotEnabled": "App 잠금 설정되지 않음",
|
||||
"appLockNotEnabledDescription": "설정 > App 잠금에서 App 잠금을 활성화해주세요",
|
||||
"authToViewPasskey": "패스키를 보려면 인증 절차를 거쳐주세요",
|
||||
"appLockOfflineModeWarning": "백업 없이 진행하는 것을 선택하셨습니다. App 잠금 방법을 잊어버리신 경우, 데이터에 접근하실 수 없게 됩니다.",
|
||||
"duplicateCodes": "중복된 코드",
|
||||
"noDuplicates": "✨ 중복 없음",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "지울 수 있는 중복 코드가 없습니다",
|
||||
"deduplicateCodes": "중복된 코드 제거",
|
||||
"deselectAll": "모두 선택 해제",
|
||||
"selectAll": "모두 선택",
|
||||
"deleteDuplicates": "중복 제거",
|
||||
"plainHTML": "일반 HTML"
|
||||
}
|
||||
@@ -88,6 +88,8 @@
|
||||
"useRecoveryKey": "Naudoti atkūrimo raktą",
|
||||
"incorrectPasswordTitle": "Neteisingas slaptažodis.",
|
||||
"welcomeBack": "Sveiki sugrįžę!",
|
||||
"emailAlreadyRegistered": "El. paštas jau užregistruotas.",
|
||||
"emailNotRegistered": "El. paštas neregistruotas.",
|
||||
"madeWithLoveAtPrefix": "sukurta su ❤️ vietoje ",
|
||||
"supportDevs": "Prenumeruokite <bold-green>„ente“</bold-green>, kad palaikytumėte mus",
|
||||
"supportDiscount": "Naudokite kupono kodą „AUTH“, kad gautumėte 10 % nuolaida pirmiesiems metams",
|
||||
@@ -258,6 +260,10 @@
|
||||
"areYouSureYouWantToLogout": "Ar tikrai norite atsijungti?",
|
||||
"yesLogout": "Taip, atsijungti",
|
||||
"exit": "Išeiti",
|
||||
"theme": "Tema",
|
||||
"lightTheme": "Šviesi",
|
||||
"darkTheme": "Tamsi",
|
||||
"systemTheme": "Sistemos",
|
||||
"verifyingRecoveryKey": "Patvirtinima atkūrimo raktą...",
|
||||
"recoveryKeyVerified": "Patvirtintas atkūrimo raktas",
|
||||
"recoveryKeySuccessBody": "Puiku! Jūsų atkūrimo raktas tinkamas. Dėkojame už patvirtinimą.\n\nNepamirškite sukurti saugią atkūrimo rakto atsarginę kopiją.",
|
||||
@@ -328,6 +334,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Pasirinktinis",
|
||||
"editOrder": "Redaguoti tvarką",
|
||||
"mostFrequentlyUsed": "Dažniausiai naudojamą",
|
||||
"mostRecentlyUsed": "Neseniai naudotą",
|
||||
"activeSessions": "Aktyvūs seansai",
|
||||
"somethingWentWrongPleaseTryAgain": "Kažkas nutiko ne taip. Bandykite dar kartą.",
|
||||
"thisWillLogYouOutOfThisDevice": "Tai jus atjungs nuo šio įrenginio.",
|
||||
@@ -449,6 +459,7 @@
|
||||
"unpinText": "Atsegti",
|
||||
"pinnedCodeMessage": "{code} buvo prisegtas",
|
||||
"unpinnedCodeMessage": "{code} buvo atsegtas",
|
||||
"pinned": "Prisegta",
|
||||
"tags": "Žymės",
|
||||
"createNewTag": "Kurti naują žymę",
|
||||
"tag": "Žymė",
|
||||
@@ -485,5 +496,13 @@
|
||||
"appLockNotEnabled": "Programos užraktas neįjungtas",
|
||||
"appLockNotEnabledDescription": "Įjunkite programos užraktą iš Saugumas > Programos užraktas",
|
||||
"authToViewPasskey": "Nustatykite tapatybę, kad peržiūrėtumėte slaptaraktį",
|
||||
"appLockOfflineModeWarning": "Pasirinkote tęsti be atsarginių kopijų. Jei pamiršite programos užraktą, jums bus užrakinta prieiga prie duomenų."
|
||||
"appLockOfflineModeWarning": "Pasirinkote tęsti be atsarginių kopijų. Jei pamiršite programos užraktą, jums bus užrakinta prieiga prie duomenų.",
|
||||
"duplicateCodes": "Dubliuoti kodus",
|
||||
"noDuplicates": "✨ Dublikatų nėra",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Neturite dubliuotų kodų, kuriuos būtų galima išvalyti.",
|
||||
"deduplicateCodes": "Atdubliuoti kodus",
|
||||
"deselectAll": "Naikinti visų pasirinkimą",
|
||||
"selectAll": "Pasirinkti viską",
|
||||
"deleteDuplicates": "Ištrinti dublikatus",
|
||||
"plainHTML": "Grynasis HTML"
|
||||
}
|
||||
1
auth/lib/l10n/arb/app_ml.arb
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -156,6 +156,7 @@
|
||||
"twoFactorAuthTitle": "Tweestapsverificatie",
|
||||
"passkeyAuthTitle": "Passkey verificatie",
|
||||
"verifyPasskey": "Bevestig passkey",
|
||||
"loginWithTOTP": "Inloggen met TOTP",
|
||||
"recoverAccount": "Account herstellen",
|
||||
"enterRecoveryKeyHint": "Voer je herstelsleutel in",
|
||||
"recover": "Herstellen",
|
||||
@@ -257,6 +258,10 @@
|
||||
"areYouSureYouWantToLogout": "Weet je zeker dat je wilt uitloggen?",
|
||||
"yesLogout": "Ja, uitloggen",
|
||||
"exit": "Afsluiten",
|
||||
"theme": "Thema",
|
||||
"lightTheme": "Licht",
|
||||
"darkTheme": "Donker",
|
||||
"systemTheme": "Systeem",
|
||||
"verifyingRecoveryKey": "Herstelsleutel verifiëren...",
|
||||
"recoveryKeyVerified": "Herstelsleutel geverifieerd",
|
||||
"recoveryKeySuccessBody": "Super! Je herstelsleutel is geldig. Bedankt voor het verifiëren.\n\nVergeet niet om je herstelsleutel veilig te bewaren.",
|
||||
@@ -327,6 +332,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Aangepast",
|
||||
"editOrder": "Volgorde wijzigen",
|
||||
"mostFrequentlyUsed": "Vaak gebruikt",
|
||||
"mostRecentlyUsed": "Recent gebruikt",
|
||||
"activeSessions": "Actieve sessies",
|
||||
"somethingWentWrongPleaseTryAgain": "Er is iets fout gegaan, probeer het opnieuw",
|
||||
"thisWillLogYouOutOfThisDevice": "Dit zal je uitloggen van dit apparaat!",
|
||||
@@ -448,6 +457,7 @@
|
||||
"unpinText": "Losmaken",
|
||||
"pinnedCodeMessage": "{code} is vastgezet",
|
||||
"unpinnedCodeMessage": "{code} is losgemaakt",
|
||||
"pinned": "Vastgezet",
|
||||
"tags": "Labels",
|
||||
"createNewTag": "Nieuw label maken",
|
||||
"tag": "Label",
|
||||
@@ -484,5 +494,13 @@
|
||||
"appLockNotEnabled": "App-vergrendeling niet ingeschakeld",
|
||||
"appLockNotEnabledDescription": "Schakel app vergrendeling in vanuit Beveiliging > App vergrendeling",
|
||||
"authToViewPasskey": "Verifieer uzelf om uw passkey te bekijken",
|
||||
"appLockOfflineModeWarning": "Je hebt ervoor gekozen om verder te gaan zonder backups. Als je jouw applock vergeet, wordt je uitgesloten van toegang tot je gegevens."
|
||||
"appLockOfflineModeWarning": "Je hebt ervoor gekozen om verder te gaan zonder backups. Als je jouw applock vergeet, wordt je uitgesloten van toegang tot je gegevens.",
|
||||
"duplicateCodes": "Dubbele codes",
|
||||
"noDuplicates": "✨ Geen dubbele",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Je hebt geen dubbele codes die kunnen worden gewist",
|
||||
"deduplicateCodes": "Dubbele codes",
|
||||
"deselectAll": "Alles deselecteren",
|
||||
"selectAll": "Alles selecteren",
|
||||
"deleteDuplicates": "Dubbelen verwijderen",
|
||||
"plainHTML": "Alleen HTML"
|
||||
}
|
||||
@@ -88,6 +88,8 @@
|
||||
"useRecoveryKey": "Użyj kodu odzyskiwania",
|
||||
"incorrectPasswordTitle": "Nieprawidłowe hasło",
|
||||
"welcomeBack": "Witaj ponownie!",
|
||||
"emailAlreadyRegistered": "Adres e-mail jest już zarejestrowany.",
|
||||
"emailNotRegistered": "Adres e-mail nie jest zarejestrowany.",
|
||||
"madeWithLoveAtPrefix": "zrobione z ❤️ w ",
|
||||
"supportDevs": "Subskrybuj <bold-green>ente</bold-green> aby wesprzeć ten projekt.",
|
||||
"supportDiscount": "Użyj kodu rabatowego \"AUTH\", aby otrzymać 10% rabatu na pierwszy rok",
|
||||
@@ -258,6 +260,10 @@
|
||||
"areYouSureYouWantToLogout": "Czy na pewno chcesz się wylogować?",
|
||||
"yesLogout": "Tak, wyloguj",
|
||||
"exit": "Wyjdź",
|
||||
"theme": "Motyw",
|
||||
"lightTheme": "Jasny",
|
||||
"darkTheme": "Ciemny",
|
||||
"systemTheme": "Systemowy",
|
||||
"verifyingRecoveryKey": "Weryfikowanie klucza odzyskiwania...",
|
||||
"recoveryKeyVerified": "Klucz odzyskiwania zweryfikowany",
|
||||
"recoveryKeySuccessBody": "Znakomicie! Klucz odzyskiwania jest prawidłowy. Dziękujemy za weryfikację.\n\nPamiętaj, aby bezpiecznie przechowywać kopię zapasową klucza odzyskiwania.",
|
||||
@@ -328,6 +334,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Niestandardowe",
|
||||
"editOrder": "Zmień kolejność",
|
||||
"mostFrequentlyUsed": "Często używane",
|
||||
"mostRecentlyUsed": "Ostatnio używane",
|
||||
"activeSessions": "Aktywne sesje",
|
||||
"somethingWentWrongPleaseTryAgain": "Coś poszło nie tak, spróbuj ponownie",
|
||||
"thisWillLogYouOutOfThisDevice": "To wyloguje Cię z tego urządzenia!",
|
||||
@@ -449,6 +459,7 @@
|
||||
"unpinText": "Odepnij",
|
||||
"pinnedCodeMessage": "Przypięto {code}",
|
||||
"unpinnedCodeMessage": "Odpięto {code}",
|
||||
"pinned": "Przypięte",
|
||||
"tags": "Etykiety",
|
||||
"createNewTag": "Utwórz nową etykietę",
|
||||
"tag": "Etykieta",
|
||||
@@ -485,5 +496,13 @@
|
||||
"appLockNotEnabled": "Blokada aplikacji nie jest włączona",
|
||||
"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."
|
||||
"appLockOfflineModeWarning": "Wybrano kontynuowanie bez kopii zapasowych. Jeśli zapomnisz blokady aplikacji, utracisz dostęp do swoich danych.",
|
||||
"duplicateCodes": "Zduplikowane kody",
|
||||
"noDuplicates": "✨ Brak duplikatów",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Nie masz duplikatów kodów, które mogą być wyczyszczone",
|
||||
"deduplicateCodes": "Deduplikuj kody",
|
||||
"deselectAll": "Odznacz wszystko",
|
||||
"selectAll": "Zaznacz wszystko",
|
||||
"deleteDuplicates": "Usuń duplikaty",
|
||||
"plainHTML": "Zwykły HTML"
|
||||
}
|
||||
@@ -11,7 +11,7 @@
|
||||
"setupFirstAccount": "Configure sua primeira conta",
|
||||
"importScanQrCode": "Escanear QR code",
|
||||
"qrCode": "QR Code",
|
||||
"importEnterSetupKey": "Insira uma chave de configuração",
|
||||
"importEnterSetupKey": "Inserir chave de config.",
|
||||
"importAccountPageTitle": "Inserir detalhes da conta",
|
||||
"secretCanNotBeEmpty": "A chave secreta não pode estar vazia",
|
||||
"bothIssuerAndAccountCanNotBeEmpty": "O emissor e a conta não podem estar vazios",
|
||||
@@ -40,16 +40,16 @@
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
"pleaseLoginAgain": "Entre novamente",
|
||||
"loggingOut": "Saindo...",
|
||||
"pleaseLoginAgain": "Registre-se novamente",
|
||||
"loggingOut": "Desconectando...",
|
||||
"timeBasedKeyType": "Baseado no horário (TOTP)",
|
||||
"counterBasedKeyType": "Baseado no contador (HOTP)",
|
||||
"saveAction": "Salvar",
|
||||
"nextTotpTitle": "avançar",
|
||||
"nextTotpTitle": "próximo",
|
||||
"deleteCodeTitle": "Excluir código?",
|
||||
"deleteCodeMessage": "Deseja mesmo excluir este código? Esta ação é irreversível.",
|
||||
"trashCode": "Excluir código?",
|
||||
"trashCodeMessage": "Você tem certeza de que quer excluir o código para {account}?",
|
||||
"trashCodeMessage": "Deseja mesmo excluir o código da {account}?",
|
||||
"trash": "Excluir",
|
||||
"viewLogsAction": "Ver registros",
|
||||
"sendLogsDescription": "Isso compartilhará seus dados para lhe ajudarmos a resolver seu problema. Enquanto tomamos precauções para ter certeza que as informações sensíveis não estejam registradas, nós encorajamos você a visualizar esses dados antes de compartilhá-los.",
|
||||
@@ -65,7 +65,7 @@
|
||||
},
|
||||
"copyEmailAction": "Copiar e-mail",
|
||||
"exportLogsAction": "Exportar registros",
|
||||
"reportABug": "Informe um erro",
|
||||
"reportABug": "Informar erro",
|
||||
"crashAndErrorReporting": "Relatórios de erros e falhas",
|
||||
"reportBug": "Informar erro",
|
||||
"emailUsMessage": "Envie um e-mail para {email}",
|
||||
@@ -77,7 +77,7 @@
|
||||
}
|
||||
},
|
||||
"contactSupport": "Contatar suporte",
|
||||
"rateUsOnStore": "Avalie nós na {storeName}",
|
||||
"rateUsOnStore": "Avalie-nos na {storeName}",
|
||||
"blog": "Blog",
|
||||
"merchandise": "Produtos",
|
||||
"verifyPassword": "Verificar senha",
|
||||
@@ -88,8 +88,10 @@
|
||||
"useRecoveryKey": "Usar chave de recuperação",
|
||||
"incorrectPasswordTitle": "Senha incorreta",
|
||||
"welcomeBack": "Bem-vindo(a) de volta!",
|
||||
"emailAlreadyRegistered": "E-mail já registrado.",
|
||||
"emailNotRegistered": "E-mail não registrado.",
|
||||
"madeWithLoveAtPrefix": "feito com ❤️ em ",
|
||||
"supportDevs": "Inscreva-se no <bold-green>ente</bold-green> para nos apoiar",
|
||||
"supportDevs": "Inscreva-se no <bold-green>Ente</bold-green> para apoiar-nos",
|
||||
"supportDiscount": "Use o cupom \"AUTH\" para obter 10% de desconto no primeiro ano",
|
||||
"changeEmail": "Alterar e-mail",
|
||||
"changePassword": "Alterar senha",
|
||||
@@ -112,27 +114,27 @@
|
||||
"exportCodes": "Exportar códigos",
|
||||
"importLabel": "Importar",
|
||||
"importInstruction": "Selecione um arquivo que contenha uma lista de códigos no formato a seguir",
|
||||
"importCodeDelimiterInfo": "Os códigos podem ser separados por uma vírgula ou uma nova linha",
|
||||
"importCodeDelimiterInfo": "Códigos podem ser separados por vírgula ou uma nova linha",
|
||||
"selectFile": "Selecionar arquivo",
|
||||
"emailVerificationToggle": "Verificação por e-mail",
|
||||
"emailVerificationEnableWarning": "Para evitar ser bloqueado da sua conta, certifique-se de guardar uma cópia do seu e-mail 2FA fora do Ente Auth antes de ativar a verificação de e-mail.",
|
||||
"authToChangeEmailVerificationSetting": "Autentique-se para alterar a verificação de e-mail",
|
||||
"authenticateGeneric": "Autentique",
|
||||
"authToViewYourRecoveryKey": "Autentique para ver sua chave de recuperação",
|
||||
"authToChangeYourEmail": "Autentique para alterar o seu e-mail",
|
||||
"authToChangeYourPassword": "Autentique para alterar sua senha",
|
||||
"authToViewSecrets": "Autentique para ver suas chaves secretas",
|
||||
"authToInitiateSignIn": "Autentique para iniciar sessão para fazer uma cópia de segurança.",
|
||||
"ok": "OK",
|
||||
"authenticateGeneric": "Autentique-se",
|
||||
"authToViewYourRecoveryKey": "Autentique-se para ver sua chave de recuperação",
|
||||
"authToChangeYourEmail": "Autentique-se para alterar o seu e-mail",
|
||||
"authToChangeYourPassword": "Autentique-se para alterar sua senha",
|
||||
"authToViewSecrets": "Autentique-se para ver suas chaves secretas",
|
||||
"authToInitiateSignIn": "Autentique-se para registrar e fazer uma cópia de segurança.",
|
||||
"ok": "Ok",
|
||||
"cancel": "Cancelar",
|
||||
"yes": "Sim",
|
||||
"no": "Não",
|
||||
"email": "E-mail",
|
||||
"support": "Suporte",
|
||||
"general": "Geral",
|
||||
"settings": "Ajustes",
|
||||
"settings": "Opções",
|
||||
"copied": "Copiado",
|
||||
"pleaseTryAgain": "Tente de novo",
|
||||
"pleaseTryAgain": "Tente novamente",
|
||||
"existingUser": "Usuário existente",
|
||||
"newUser": "Novo no Ente",
|
||||
"delete": "Excluir",
|
||||
@@ -142,7 +144,7 @@
|
||||
"suggestFeatures": "Sugerir recursos",
|
||||
"faq": "Perguntas frequentes",
|
||||
"somethingWentWrongMessage": "Algo deu errado. Tente outra vez",
|
||||
"leaveFamily": "Sair da família",
|
||||
"leaveFamily": "Sair do plano familiar",
|
||||
"leaveFamilyMessage": "Deseja mesmo sair do plano familiar?",
|
||||
"inFamilyPlanMessage": "Você está em um plano familiar!",
|
||||
"hintForMobile": "Pressione em um código para editar ou excluir.",
|
||||
@@ -151,8 +153,8 @@
|
||||
"scanACode": "Escanear código",
|
||||
"verify": "Verificar",
|
||||
"verifyEmail": "Verificar e-mail",
|
||||
"enterCodeHint": "Digite o código de 6 dígitos\ndo seu app autenticador",
|
||||
"lostDeviceTitle": "Perdeu um dispositivo?",
|
||||
"enterCodeHint": "Insira o código de 6 dígitos do aplicativo autenticador",
|
||||
"lostDeviceTitle": "Perdeu o dispositivo?",
|
||||
"twoFactorAuthTitle": "Autenticação de dois fatores",
|
||||
"passkeyAuthTitle": "Verificação de chave de acesso",
|
||||
"verifyPasskey": "Verificar chave de acesso",
|
||||
@@ -177,7 +179,7 @@
|
||||
"deleteAccountQuery": "Estamos tristes por vê-lo sair. Você enfrentou algum problema?",
|
||||
"yesSendFeedbackAction": "Sim, enviar feedback",
|
||||
"noDeleteAccountAction": "Não, excluir conta",
|
||||
"initiateAccountDeleteTitle": "Autentique para iniciar a exclusão de conta",
|
||||
"initiateAccountDeleteTitle": "Autentique-se para iniciar a exclusão de conta",
|
||||
"sendEmail": "Enviar e-mail",
|
||||
"createNewAccount": "Criar nova conta",
|
||||
"weakStrength": "Fraca",
|
||||
@@ -186,15 +188,15 @@
|
||||
"confirmPassword": "Confirmar senha",
|
||||
"close": "Fechar",
|
||||
"oopsSomethingWentWrong": "Opa. Algo deu errado.",
|
||||
"selectLanguage": "Trocar idioma",
|
||||
"selectLanguage": "Alterar idioma",
|
||||
"language": "Idioma",
|
||||
"social": "Redes sociais",
|
||||
"security": "Segurança",
|
||||
"lockscreen": "Tela de bloqueio",
|
||||
"authToChangeLockscreenSetting": "Autentique para alterar a opção de tela de bloqueio",
|
||||
"authToChangeLockscreenSetting": "Autentique-se para alterar a opção da tela de bloqueio",
|
||||
"deviceLockEnablePreSteps": "Para ativar o bloqueio do dispositivo, configure a senha do dispositivo ou o bloqueio de tela nas configurações do seu sistema.",
|
||||
"viewActiveSessions": "Ver sessões ativas",
|
||||
"authToViewYourActiveSessions": "Autentique para ver suas sessões ativas",
|
||||
"authToViewYourActiveSessions": "Autentique-se para ver suas sessões ativas",
|
||||
"searchHint": "Buscar...",
|
||||
"search": "Buscar",
|
||||
"sorryUnableToGenCode": "Desculpe, não foi possível gerar um código para {issuerName}",
|
||||
@@ -208,7 +210,7 @@
|
||||
"shareCodesDuration": "Selecione a duração em que você queira compartilhar os códigos.",
|
||||
"restore": "Restaurar",
|
||||
"copiedToClipboard": "Copiado para a área de transferência",
|
||||
"copiedNextToClipboard": "Próximo código copiado para a área de transferência",
|
||||
"copiedNextToClipboard": "Copiado próximo código à área de transferência",
|
||||
"error": "Erro",
|
||||
"recoveryKeyCopiedToClipboard": "Chave de recuperação copiada para a área de transferência",
|
||||
"recoveryKeyOnForgotPassword": "Caso esqueça sua senha, a única maneira de recuperar seus dados é com esta chave.",
|
||||
@@ -217,8 +219,8 @@
|
||||
"saveKey": "Salvar chave",
|
||||
"save": "Salvar",
|
||||
"send": "Enviar",
|
||||
"saveOrSendDescription": "Deseja mesmo salvar em seu armazenamento (pasta Downloads por padrão) ou enviar para outros apps?",
|
||||
"saveOnlyDescription": "Deseja mesmo salvar em seu armazenamento (pasta Downloads por padrão)?",
|
||||
"saveOrSendDescription": "Deseja mesmo salvar isso no armazenamento (pasta de Downloads por padrão) ou enviar a outros aplicativos?",
|
||||
"saveOnlyDescription": "Deseja mesmo salvar em seu armazenamento (pasta de Downloads por padrão)?",
|
||||
"back": "Voltar",
|
||||
"createAccount": "Criar conta",
|
||||
"passwordStrength": "Força da senha: {passwordStrengthValue}",
|
||||
@@ -258,6 +260,10 @@
|
||||
"areYouSureYouWantToLogout": "Deseja mesmo sair?",
|
||||
"yesLogout": "Sim, quero sair",
|
||||
"exit": "Sair",
|
||||
"theme": "Tema",
|
||||
"lightTheme": "Claro",
|
||||
"darkTheme": "Escuro",
|
||||
"systemTheme": "Sistema",
|
||||
"verifyingRecoveryKey": "Verificando chave de recuperação...",
|
||||
"recoveryKeyVerified": "Chave de recuperação verificada",
|
||||
"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.",
|
||||
@@ -271,7 +277,7 @@
|
||||
"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",
|
||||
"emailYourLogs": "Enviar registros por e-mail",
|
||||
"pleaseSendTheLogsTo": "Envie os logs para \n{toEmail}",
|
||||
"copyEmailAddress": "Copiar endereço de e-mail",
|
||||
"exportLogs": "Exportar logs",
|
||||
@@ -299,7 +305,7 @@
|
||||
"description": "Text for the button to confirm the user understands the warning"
|
||||
},
|
||||
"authToExportCodes": "Autentique para exportar seus códigos",
|
||||
"importSuccessTitle": "Oba!",
|
||||
"importSuccessTitle": "Sucesso!",
|
||||
"importSuccessDesc": "Você importou {count} códigos!",
|
||||
"@importSuccessDesc": {
|
||||
"placeholders": {
|
||||
@@ -328,6 +334,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Personalizado",
|
||||
"editOrder": "Editar ordem",
|
||||
"mostFrequentlyUsed": "Usado com frequência",
|
||||
"mostRecentlyUsed": "Usado recentemente",
|
||||
"activeSessions": "Sessões ativas",
|
||||
"somethingWentWrongPleaseTryAgain": "Algo deu errado. Tente outra vez",
|
||||
"thisWillLogYouOutOfThisDevice": "Isso fará com que você saia deste dispositivo!",
|
||||
@@ -337,7 +347,7 @@
|
||||
"thisDevice": "Esse dispositivo",
|
||||
"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",
|
||||
"verificationFailedPleaseTryAgain": "Falhou na verificação. Tente novamente",
|
||||
"yourVerificationCodeHasExpired": "Seu código de verificação expirou",
|
||||
"incorrectCode": "Código incorreto",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "O código inserido está incorreto",
|
||||
@@ -354,7 +364,7 @@
|
||||
"plainText": "Texto simples",
|
||||
"passwordToEncryptExport": "Senha para criptografar a exportação",
|
||||
"export": "Exportar",
|
||||
"useOffline": "Usar sem backups",
|
||||
"useOffline": "Usar sem cópia de segurança",
|
||||
"signInToBackup": "Entre para fazer backup de seus códigos",
|
||||
"singIn": "Entrar",
|
||||
"sigInBackupReminder": "Exporte seus códigos para garantir que você tenha uma cópia para restaurar.",
|
||||
@@ -379,7 +389,7 @@
|
||||
"@androidBiometricNotRecognized": {
|
||||
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricSuccess": "Êxito",
|
||||
"androidBiometricSuccess": "Sucesso",
|
||||
"@androidBiometricSuccess": {
|
||||
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
@@ -395,15 +405,15 @@
|
||||
"@androidBiometricRequiredTitle": {
|
||||
"description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidDeviceCredentialsRequiredTitle": "Credenciais do dispositivo necessárias",
|
||||
"androidDeviceCredentialsRequiredTitle": "Credenciais necessários do dispositivo",
|
||||
"@androidDeviceCredentialsRequiredTitle": {
|
||||
"description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidDeviceCredentialsSetupDescription": "Credenciais do dispositivo necessárias",
|
||||
"androidDeviceCredentialsSetupDescription": "Credenciais necessários do dispositivo",
|
||||
"@androidDeviceCredentialsSetupDescription": {
|
||||
"description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side."
|
||||
},
|
||||
"goToSettings": "Ir para Ajustes",
|
||||
"goToSettings": "Ir para Opções",
|
||||
"@goToSettings": {
|
||||
"description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters."
|
||||
},
|
||||
@@ -430,7 +440,7 @@
|
||||
"signOutOtherDevices": "Sair em outros dispositivos",
|
||||
"doNotSignOut": "Não sair",
|
||||
"hearUsWhereTitle": "Como você descobriu o Ente? (opcional)",
|
||||
"hearUsExplanation": "Não sabemos como você encontrou nosso app. Seria útil se você nos contasse!",
|
||||
"hearUsExplanation": "Não rastreamos instalações. Ajudaria bastante se você contasse onde nos achou!",
|
||||
"recoveryKeySaved": "Chave de recuperação salva na pasta Downloads!",
|
||||
"waitingForBrowserRequest": "Aguardando solicitação do navegador...",
|
||||
"waitingForVerification": "Aguardando verificação...",
|
||||
@@ -438,8 +448,8 @@
|
||||
"passKeyPendingVerification": "A verificação ainda está pendente",
|
||||
"loginSessionExpired": "Sessão expirada",
|
||||
"loginSessionExpiredDetails": "Sua sessão expirou. Registre-se novamente.",
|
||||
"developerSettingsWarning": "Deseja mesmo alterar os ajustes de Desenvolvedor?",
|
||||
"developerSettings": "Ajustes de Desenvolvedor",
|
||||
"developerSettingsWarning": "Deseja mesmo alterar as Opções de Desenvolvedor?",
|
||||
"developerSettings": "Opções de Desenvolvedor",
|
||||
"serverEndpoint": "Endpoint do servidor",
|
||||
"invalidEndpoint": "Endpoint inválido",
|
||||
"invalidEndpointMessage": "Desculpe, o ponto de acesso inserido é inválido. Insira um ponto de acesso válido e tente novamente.",
|
||||
@@ -449,21 +459,22 @@
|
||||
"unpinText": "Desafixar",
|
||||
"pinnedCodeMessage": "{code} foi fixado",
|
||||
"unpinnedCodeMessage": "{code} foi desafixado",
|
||||
"pinned": "Fixado",
|
||||
"tags": "Etiquetas",
|
||||
"createNewTag": "Criar nova etiqueta",
|
||||
"tag": "Etiqueta",
|
||||
"create": "Criar",
|
||||
"editTag": "Editar etiqueta",
|
||||
"deleteTagTitle": "Apagar etiqueta?",
|
||||
"deleteTagTitle": "Excluir etiqueta?",
|
||||
"deleteTagMessage": "Deseja mesmo excluir esta etiqueta? Essa ação é irreversível.",
|
||||
"somethingWentWrongParsingCode": "Não foi possível analisar os códigos {x}.",
|
||||
"updateNotAvailable": "Atualização indisponível",
|
||||
"viewRawCodes": "Ver códigos brutos",
|
||||
"rawCodes": "Códigos brutos",
|
||||
"rawCodeData": "Dados de códigos brutos",
|
||||
"appLock": "Bloqueio do app",
|
||||
"appLock": "Bloqueio do aplicativo",
|
||||
"noSystemLockFound": "Nenhum bloqueio do sistema encontrado",
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Para ativar o bloqueio do app, configure uma senha no dispositivo ou tela de bloqueio nas configurações do sistema.",
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Para ativar o bloqueio do aplicativo, configure uma senha no dispositivo ou tela de bloqueio nas opções do sistema.",
|
||||
"autoLock": "Bloqueio automático",
|
||||
"immediately": "Imediatamente",
|
||||
"reEnterPassword": "Reinserir senha",
|
||||
@@ -474,16 +485,24 @@
|
||||
"setNewPassword": "Defina a nova senha",
|
||||
"deviceLock": "Bloqueio do dispositivo",
|
||||
"hideContent": "Ocultar conteúdo",
|
||||
"hideContentDescriptionAndroid": "Oculta o conteúdo do app no seletor de apps e desativa as capturas de tela",
|
||||
"hideContentDescriptioniOS": "Oculta o conteúdo do seletor de apps",
|
||||
"autoLockFeatureDescription": "Tempo de bloqueio do app em segundo plano",
|
||||
"hideContentDescriptionAndroid": "Oculta o conteúdo do aplicativo no seletor de aplicativos e desativa as capturas de tela",
|
||||
"hideContentDescriptioniOS": "Oculta o conteúdo do seletor de aplicativos",
|
||||
"autoLockFeatureDescription": "Tempo de bloqueio do aplicativo em segundo plano",
|
||||
"appLockDescription": "Escolha entre a tela de bloqueio padrão do seu dispositivo e uma tela de bloqueio personalizada com PIN ou senha.",
|
||||
"pinLock": "Bloqueio PIN",
|
||||
"enterPin": "Insira o PIN",
|
||||
"pinLock": "PIN de bloqueio",
|
||||
"enterPin": "Inserir PIN",
|
||||
"setNewPin": "Definir novo PIN",
|
||||
"importFailureDescNew": "Não foi possível analisar o arquivo selecionado.",
|
||||
"appLockNotEnabled": "Bloqueio de aplicativo não ativado",
|
||||
"appLockNotEnabledDescription": "Ative o bloqueio de aplicativo em Segurança > Bloqueio de aplicativo",
|
||||
"authToViewPasskey": "Autentique para ver a sua chave de acesso",
|
||||
"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."
|
||||
"authToViewPasskey": "Autentique-se para ver a sua chave de acesso",
|
||||
"appLockOfflineModeWarning": "Você prosseguiu sem cópias de segurança. Caso, se esqueça de seu aplicativo de bloqueio, você não poderá mais acessar seus dados.",
|
||||
"duplicateCodes": "Duplicar códigos",
|
||||
"noDuplicates": "✨ Sem duplicados",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Você não possui códigos duplicados para limpar",
|
||||
"deduplicateCodes": "Desduplicar códigos",
|
||||
"deselectAll": "Deselecionar tudo",
|
||||
"selectAll": "Selecionar tudo",
|
||||
"deleteDuplicates": "Excluir duplicados",
|
||||
"plainHTML": "HTML simples"
|
||||
}
|
||||
@@ -77,10 +77,13 @@
|
||||
"importSelectJsonFile": "Selectează fișierul JSON",
|
||||
"importSelectAppExport": "Selectează fișierul de export din {appName}",
|
||||
"importEnteEncGuide": "Selectează fișierul criptat JSON exportat din Bențe",
|
||||
"importRaivoGuide": "Utilizați opțiunea \"Export OTPs to Zip archive\" în Setările Raivo.\n\nExtrageți fișierul zip și importați fișierul JSON.",
|
||||
"importBitwardenGuide": "Utilizați opțiunea \"Export vault\" din Bitwarden Tools și importați fișierul JSON necriptat.",
|
||||
"exportCodes": "Exportă coduri",
|
||||
"importLabel": "Importă",
|
||||
"selectFile": "Selectează fișier",
|
||||
"emailVerificationToggle": "Verificarea adresei de e-mail",
|
||||
"emailVerificationEnableWarning": "Pentru a evita blocarea contului tău, asigurați-vă că stocați o copie a e-mailului 2FA în afara Ente Auth înainte de a permite verificarea e-mail-ului.",
|
||||
"authToChangeEmailVerificationSetting": "Te rugăm să te autentifici pentru a schimba verificarea prin e-mail",
|
||||
"authToChangeYourEmail": "Te rugăm să te autentifici pentru a-ți schimba adresa de e-mail",
|
||||
"ok": "Ok",
|
||||
|
||||
@@ -446,8 +446,6 @@
|
||||
"customEndpoint": "Подключено к {endpoint}",
|
||||
"pinText": "Прикрепить",
|
||||
"unpinText": "Открепить",
|
||||
"pinnedCodeMessage": "{code} прикреплен",
|
||||
"unpinnedCodeMessage": "{code} откреплен",
|
||||
"tags": "Метки",
|
||||
"createNewTag": "Создать новую метку",
|
||||
"tag": "Метка",
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"timeBasedKeyType": "Na základe času (TOTP)",
|
||||
"counterBasedKeyType": "Na základe počítadla (HOTP)",
|
||||
"saveAction": "Uložiť",
|
||||
"nextTotpTitle": "ďalej",
|
||||
"nextTotpTitle": "ďalší",
|
||||
"deleteCodeTitle": "Odstrániť položku?",
|
||||
"deleteCodeMessage": "Naozaj chcete odstrániť položku? Táto akcia je nezvratná.",
|
||||
"trashCode": "Odstrániť kód?",
|
||||
@@ -156,6 +156,7 @@
|
||||
"twoFactorAuthTitle": "Dvojfaktorové overovanie",
|
||||
"passkeyAuthTitle": "Overenie pomocou passkey",
|
||||
"verifyPasskey": "Overiť passkey",
|
||||
"loginWithTOTP": "Prihlásenie pomocou TOTP",
|
||||
"recoverAccount": "Obnoviť účet",
|
||||
"enterRecoveryKeyHint": "Vložte váš kód pre obnovenie",
|
||||
"recover": "Obnoviť",
|
||||
@@ -446,8 +447,6 @@
|
||||
"customEndpoint": "Pripojený k endpointu {endpoint}",
|
||||
"pinText": "Pripnúť",
|
||||
"unpinText": "Odopnúť",
|
||||
"pinnedCodeMessage": "{code} bol pripnutý",
|
||||
"unpinnedCodeMessage": "{code} bol odopnutý",
|
||||
"tags": "Tagy",
|
||||
"createNewTag": "Vytvoriť nový tag",
|
||||
"tag": "Tag",
|
||||
|
||||
@@ -327,6 +327,8 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"mostFrequentlyUsed": "Pogosto uporabljeni",
|
||||
"mostRecentlyUsed": "Nedavno uporabljeno",
|
||||
"activeSessions": "Aktivne seje",
|
||||
"somethingWentWrongPleaseTryAgain": "Nekaj je šlo narobe, prosimo poizkusite znova.",
|
||||
"thisWillLogYouOutOfThisDevice": "To vas bo odjavilo iz te naprave!",
|
||||
@@ -446,8 +448,7 @@
|
||||
"customEndpoint": "Povezano na {endpoint}",
|
||||
"pinText": "Pripni",
|
||||
"unpinText": "Odpni",
|
||||
"pinnedCodeMessage": "{code} je bila pripeta",
|
||||
"unpinnedCodeMessage": "{code} je bila odpeta",
|
||||
"pinned": "Pripeto",
|
||||
"tags": "Oznake",
|
||||
"createNewTag": "Ustvari novo oznako",
|
||||
"tag": "Oznaka",
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
"account": "Konto",
|
||||
"unlock": "Lås upp",
|
||||
"recoveryKey": "Återställningsnyckel",
|
||||
"counterAppBarTitle": "Räknare",
|
||||
"@counterAppBarTitle": {
|
||||
"description": "Text shown in the AppBar of the Counter Page"
|
||||
},
|
||||
"onBoardingBody": "Säkerhetskopiera dina 2FA-koder",
|
||||
"onBoardingGetStarted": "Kom igång",
|
||||
"setupFirstAccount": "Konfigurera ditt första konto",
|
||||
@@ -15,22 +19,41 @@
|
||||
"pleaseVerifyDetails": "Kontrollera dina detaljer och försök igen",
|
||||
"codeIssuerHint": "Utfärdare",
|
||||
"codeSecretKeyHint": "Secret Key",
|
||||
"secret": "Säkerhets nyckel",
|
||||
"all": "Alla",
|
||||
"notes": "Anteckningar",
|
||||
"notesLengthLimit": "Anteckningar kan vara högst {count} tecken långa",
|
||||
"@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 (du@domän.com)",
|
||||
"codeTagHint": "Tagg",
|
||||
"accountKeyType": "Typ av nyckel",
|
||||
"sessionExpired": "Sessionen har gått ut",
|
||||
"@sessionExpired": {
|
||||
"description": "Title of the dialog when the users current session is invalid/expired"
|
||||
},
|
||||
"pleaseLoginAgain": "Logga in igen",
|
||||
"loggingOut": "Loggar ut...",
|
||||
"timeBasedKeyType": "Tidsbaserad (TOTP)",
|
||||
"counterBasedKeyType": "Räknarbaserad (HOTP)",
|
||||
"saveAction": "Spara",
|
||||
"nextTotpTitle": "nästa",
|
||||
"deleteCodeTitle": "Radera kod?",
|
||||
"deleteCodeMessage": "Vill du ta bort den här koden? Det går inte att ångra den här åtgärden.",
|
||||
"trashCode": "Ta bort kod?",
|
||||
"trashCodeMessage": "Är du säker på att du vill ta bort koden för {account}?",
|
||||
"trash": "Papperskorg",
|
||||
"viewLogsAction": "Visa loggar",
|
||||
"sendLogsDescription": "Detta kommer att skicka över loggar för att hjälpa oss felsöka ditt problem. Även om vi vidtar försiktighetsåtgärder för att säkerställa att känslig information inte loggas, uppmuntrar vi dig att se dessa loggar innan du delar dem.",
|
||||
"preparingLogsTitle": "Förbereder loggar...",
|
||||
"emailLogsTitle": "E-posta loggar",
|
||||
"emailLogsMessage": "Skicka loggarna till {email}",
|
||||
"@emailLogsMessage": {
|
||||
@@ -61,55 +84,115 @@
|
||||
"pleaseWait": "Vänligen vänta...",
|
||||
"generatingEncryptionKeysTitle": "Skapar krypteringsnycklar...",
|
||||
"recreatePassword": "Återskapa lösenord",
|
||||
"recreatePasswordMessage": "Denna enhet är inte tillräckligt kraftfull för att verifiera ditt lösenord, men vi kan återskapa det på ett sätt som fungerar med alla enheter.\n\nLogga in med din återställningsnyckel och återskapa ditt lösenord (du kan använda samma igen om du vill).",
|
||||
"useRecoveryKey": "Använd återställningsnyckel",
|
||||
"incorrectPasswordTitle": "Felaktigt lösenord",
|
||||
"welcomeBack": "Välkommen tillbaka!",
|
||||
"madeWithLoveAtPrefix": "gjord med ❤️ av ",
|
||||
"supportDevs": "Prenumerera på <bold-green>ente</bold-green> för att stödja oss",
|
||||
"supportDiscount": "Använd kupongkoden \"AUTH\" för att få 10% rabatt första året",
|
||||
"changeEmail": "Ändra e-postadress",
|
||||
"changePassword": "Ändra lösenord",
|
||||
"data": "Data",
|
||||
"importCodes": "Importera koder",
|
||||
"importTypePlainText": "Enkel text",
|
||||
"importTypeEnteEncrypted": "Ente krypterad export",
|
||||
"passwordForDecryptingExport": "Lösenord för att dekryptera export",
|
||||
"passwordEmptyError": "Lösenordet får inte vara tomt",
|
||||
"importFromApp": "Importera koder från {appName}",
|
||||
"importGoogleAuthGuide": "Exportera dina konton från Google Authenticator till en QR-kod med alternativet \"Överföra konton\". Använd sedan en annan enhet och skanna QR-koden.\n\nTips: Du kan använda din bärbara dators webbkamera för att ta en bild av QR-koden.",
|
||||
"importSelectJsonFile": "Välj JSON-fil",
|
||||
"importSelectAppExport": "Välj {appName} exportfil",
|
||||
"importEnteEncGuide": "Välj den krypterade JSON-filen som exporteras från Ente",
|
||||
"importRaivoGuide": "Använd alternativet \"Exportera OTPs till zip-arkiv\" i Raivos inställningar.\n\nExtrahera zip-filen och importera JSON-filen.",
|
||||
"importBitwardenGuide": "Använd alternativet \"Exportera valv\" inom Bitwarden Tools och importera den okrypterade JSON-filen.",
|
||||
"importAegisGuide": "Använd alternativet \"Exportera valvet\" i Aegis inställningar.\n\nOm ditt valv är krypterat måste du ange valvlösenordet för att dekryptera valvet.",
|
||||
"import2FasGuide": "Använd alternativet \"Inställningar->Säkerhetskopiera -Exportera\" i 2FAS.\n\nOm din säkerhetskopia är krypterad måste du ange lösenordet för att dekryptera säkerhetskopian.",
|
||||
"importLastpassGuide": "Använd alternativet \"Överför konton\" i LastPass Authenticators inställningar och tryck på \"Exportera konton till fil\". Importera JSON-filen som laddas ner.",
|
||||
"exportCodes": "Exportera koder",
|
||||
"importLabel": "Importera",
|
||||
"importInstruction": "Vänligen välj en fil som innehåller en lista över dina koder i följande format",
|
||||
"importCodeDelimiterInfo": "Koderna kan separeras med kommatecken eller en ny rad",
|
||||
"selectFile": "Välj fil",
|
||||
"emailVerificationToggle": "E-postverifiering",
|
||||
"emailVerificationEnableWarning": "För att undvika att bli låst från ditt konto, se till att spara en kopia av din e-post 2FA utanför Ente Auth innan du aktiverar e-postverifiering.",
|
||||
"authToChangeEmailVerificationSetting": "Autentisera för att ändra din e-postadress",
|
||||
"authenticateGeneric": "Var god autentisera",
|
||||
"authToViewYourRecoveryKey": "Autentisera för att visa din återställningsnyckel",
|
||||
"authToChangeYourEmail": "Autentisera för att ändra din e-postadress",
|
||||
"authToChangeYourPassword": "Autentisera för att ändra ditt lösenord",
|
||||
"authToViewSecrets": "Autentisera för att visa din återställningsnyckel",
|
||||
"authToInitiateSignIn": "Vänligen autentisera för att initiera inloggning för säkerhetskopiering.",
|
||||
"ok": "OK",
|
||||
"cancel": "Avbryt",
|
||||
"yes": "Ja",
|
||||
"no": "Nej",
|
||||
"email": "E-post",
|
||||
"support": "Support",
|
||||
"general": "Allmänt",
|
||||
"settings": "Inställningar",
|
||||
"copied": "Kopierat",
|
||||
"pleaseTryAgain": "Försök igen",
|
||||
"existingUser": "Befintlig användare",
|
||||
"newUser": "Ny hos Ente",
|
||||
"delete": "Radera",
|
||||
"enterYourPasswordHint": "Ange ditt lösenord",
|
||||
"forgotPassword": "Glömt lösenord",
|
||||
"oops": "Hoppsan",
|
||||
"suggestFeatures": "Föreslå funktionalitet",
|
||||
"faq": "FAQ",
|
||||
"somethingWentWrongMessage": "Något gick fel, vänligen försök igen",
|
||||
"leaveFamily": "Lämna familjen",
|
||||
"leaveFamilyMessage": "Är du säker på att du vill lämna familjeplanen?",
|
||||
"inFamilyPlanMessage": "Du är på en familjeplan!",
|
||||
"hintForMobile": "Håll i på en kod för att redigera eller ta bort.",
|
||||
"hintForDesktop": "Högerklicka på en kod för att redigera eller ta bort.",
|
||||
"scan": "Skanna",
|
||||
"scanACode": "Skanna kod",
|
||||
"verify": "Verifiera",
|
||||
"verifyEmail": "Verifiera e-postadress",
|
||||
"enterCodeHint": "Ange den 6-siffriga koden från din autentiseringsapp",
|
||||
"lostDeviceTitle": "Förlorad enhet?",
|
||||
"twoFactorAuthTitle": "Tvåfaktorsautentisering",
|
||||
"passkeyAuthTitle": "Verifiering med inloggningsnyckel",
|
||||
"verifyPasskey": "Verifiera nyckel",
|
||||
"loginWithTOTP": "Logga in med TOTP",
|
||||
"recoverAccount": "Återställ konto",
|
||||
"enterRecoveryKeyHint": "Ange din återställningsnyckel",
|
||||
"recover": "Återställ",
|
||||
"contactSupportViaEmailMessage": "Vänligen skicka ett e-postmeddelande till {email} från din registrerade e-postadress",
|
||||
"@contactSupportViaEmailMessage": {
|
||||
"placeholders": {
|
||||
"email": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"invalidQRCode": "Ogiltig QR-kod",
|
||||
"noRecoveryKeyTitle": "Ingen återställningsnyckel?",
|
||||
"enterEmailHint": "Ange din e-postadress",
|
||||
"invalidEmailTitle": "Ogiltig e-postadress",
|
||||
"invalidEmailMessage": "Ange en giltig e-postadress.",
|
||||
"deleteAccount": "Radera konto",
|
||||
"deleteAccountQuery": "Vi kommer att vara ledsna över att se dig gå. Har du något problem?",
|
||||
"yesSendFeedbackAction": "Ja, skicka feedback",
|
||||
"noDeleteAccountAction": "Nej, radera konto",
|
||||
"initiateAccountDeleteTitle": "Vänligen autentisera för att initiera borttagning av konto",
|
||||
"sendEmail": "Skicka e-post",
|
||||
"createNewAccount": "Skapa nytt konto",
|
||||
"weakStrength": "Svag",
|
||||
"strongStrength": "Stark",
|
||||
"moderateStrength": "Måttligt",
|
||||
"confirmPassword": "Bekräfta lösenord",
|
||||
"close": "Stäng",
|
||||
"oopsSomethingWentWrong": "Hoppsan! Något gick fel.",
|
||||
"selectLanguage": "Välj språk",
|
||||
"language": "Språk",
|
||||
"social": "Social",
|
||||
"security": "Säkerhet",
|
||||
"lockscreen": "Låsskärm",
|
||||
"authToChangeLockscreenSetting": "Vänligen autentisera för att ändra låsskärms inställningar",
|
||||
"deviceLockEnablePreSteps": "För att aktivera enhetslås, vänligen ställ in enhetens lösenord eller skärmlås i dina systeminställningar.",
|
||||
"viewActiveSessions": "Visa aktiva sessioner",
|
||||
"authToViewYourActiveSessions": "Autentisera för att visa dina aktiva sessioner",
|
||||
"searchHint": "Sök...",
|
||||
@@ -122,15 +205,20 @@
|
||||
"edit": "Redigera",
|
||||
"share": "Dela",
|
||||
"shareCodes": "Dela koder",
|
||||
"shareCodesDuration": "Välj den tidsperiod under vilken du vill dela koder.",
|
||||
"restore": "Återställ",
|
||||
"copiedToClipboard": "Kopierat till urklipp",
|
||||
"copiedNextToClipboard": "Kopierade nästa kod till urklipp",
|
||||
"error": "Fel",
|
||||
"recoveryKeyCopiedToClipboard": "Återställningsnyckel kopierad till urklipp",
|
||||
"recoveryKeyOnForgotPassword": "Om du glömmer ditt lösenord är det enda sättet du kan återställa dina data med denna nyckel.",
|
||||
"recoveryKeySaveDescription": "Vi lagrar inte och har därför inte åtkomst till denna nyckel, vänligen spara denna 24 ords nyckel på en säker plats.",
|
||||
"doThisLater": "Gör detta senare",
|
||||
"saveKey": "Spara nyckel",
|
||||
"save": "Spara",
|
||||
"send": "Skicka",
|
||||
"saveOrSendDescription": "Vill du spara detta till din lagringsmapp (Nedladdningsmappen som standard) eller skicka den till andra appar?",
|
||||
"saveOnlyDescription": "Vill du spara detta till din lagringsmapp (Nedladdningsmappen som standard)?",
|
||||
"back": "Tillbaka",
|
||||
"createAccount": "Skapa konto",
|
||||
"passwordStrength": "Lösenordsstyrka: {passwordStrengthValue}",
|
||||
@@ -146,6 +234,7 @@
|
||||
"message": "Password Strength: {passwordStrengthText}"
|
||||
},
|
||||
"password": "Lösenord",
|
||||
"signUpTerms": "Jag samtycker till <u-terms>användarvillkoren</u-terms> och <u-policy>integritetspolicyn</u-policy>",
|
||||
"privacyPolicyTitle": "Integritetspolicy",
|
||||
"termsOfServicesTitle": "Villkor",
|
||||
"encryption": "Kryptering",
|
||||
@@ -153,24 +242,60 @@
|
||||
"changePasswordTitle": "Ändra lösenord",
|
||||
"resetPasswordTitle": "Återställ lösenord",
|
||||
"encryptionKeys": "Krypteringsnycklar",
|
||||
"passwordWarning": "Vi lagrar inte detta lösenord, så om du glömmer bort det, <underline>kan vi inte dekryptera dina data</underline>",
|
||||
"enterPasswordToEncrypt": "Ange ett lösenord som vi kan använda för att kryptera din data",
|
||||
"enterNewPasswordToEncrypt": "Ange ett nytt lösenord som vi kan använda för att kryptera din data",
|
||||
"passwordChangedSuccessfully": "Lösenordet har ändrats",
|
||||
"generatingEncryptionKeys": "Skapar krypteringsnycklar...",
|
||||
"continueLabel": "Fortsätt",
|
||||
"insecureDevice": "Osäker enhet",
|
||||
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Tyvärr, kunde vi inte generera säkra nycklar på den här enheten.\n\nvänligen registrera dig från en annan enhet.",
|
||||
"howItWorks": "Så här fungerar det",
|
||||
"ackPasswordLostWarning": "Jag förstår att om jag förlorar mitt lösenord kan jag förlora mina data eftersom min data är <underline>end-to-end-krypterad</underline>.",
|
||||
"loginTerms": "Jag samtycker till <u-terms>användarvillkoren</u-terms> och <u-policy>integritetspolicyn</u-policy>",
|
||||
"logInLabel": "Logga in",
|
||||
"logout": "Logga ut",
|
||||
"areYouSureYouWantToLogout": "Är du säker på att du vill logga ut?",
|
||||
"yesLogout": "Ja, logga ut",
|
||||
"exit": "Avsluta",
|
||||
"theme": "Tema",
|
||||
"lightTheme": "Ljust",
|
||||
"darkTheme": "Mörkt",
|
||||
"systemTheme": "System",
|
||||
"verifyingRecoveryKey": "Verifierar återställningsnyckel...",
|
||||
"recoveryKeyVerified": "Återställningsnyckel verifierad",
|
||||
"recoveryKeySuccessBody": "Grymt! Din återställningsnyckel är giltig. Tack för att du verifierade.\n\nKom ihåg att hålla din återställningsnyckel säker med backups.",
|
||||
"recreatePasswordTitle": "Återskapa lösenord",
|
||||
"invalidKey": "Ogiltig nyckel",
|
||||
"tryAgain": "Försök igen",
|
||||
"viewRecoveryKey": "Visa återställningsnyckel",
|
||||
"confirmRecoveryKey": "Bekräfta återställningsnyckel",
|
||||
"confirmYourRecoveryKey": "Bekräfta din återställningsnyckel",
|
||||
"confirm": "Bekräfta",
|
||||
"emailYourLogs": "Maila dina loggar",
|
||||
"pleaseSendTheLogsTo": "Vänligen skicka loggarna till \n{toEmail}",
|
||||
"copyEmailAddress": "Kopiera e-postadress",
|
||||
"exportLogs": "Exportera loggar",
|
||||
"enterYourRecoveryKey": "Ange din återställningsnyckel",
|
||||
"about": "Om",
|
||||
"weAreOpenSource": "Vi är öppen källkod!",
|
||||
"privacy": "Sekretess",
|
||||
"terms": "Villkor",
|
||||
"checkForUpdates": "Sök efter uppdateringar",
|
||||
"checkStatus": "Kontrollera status",
|
||||
"downloadUpdate": "Ladda ner",
|
||||
"criticalUpdateAvailable": "Kritisk uppdatering tillgänglig",
|
||||
"updateAvailable": "Uppdatering tillgänglig",
|
||||
"update": "Uppdatera",
|
||||
"checking": "Kontrollerar ...",
|
||||
"youAreOnTheLatestVersion": "Du är på den senaste versionen",
|
||||
"warning": "Varning",
|
||||
"iUnderStand": "Jag förstår",
|
||||
"@iUnderStand": {
|
||||
"description": "Text for the button to confirm the user understands the warning"
|
||||
},
|
||||
"authToExportCodes": "Autentisera för att exportera dina koder",
|
||||
"importSuccessTitle": "Jippi!",
|
||||
"importSuccessDesc": "Du har importerat {count} koder!",
|
||||
"@importSuccessDesc": {
|
||||
"placeholders": {
|
||||
@@ -181,40 +306,124 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"sorry": "Tyvärr",
|
||||
"pendingSyncs": "Varning",
|
||||
"checkInboxAndSpamFolder": "Vänligen kontrollera din inkorg (och skräppost) för att slutföra verifieringen",
|
||||
"tapToEnterCode": "Tryck för att ange kod",
|
||||
"resendEmail": "Skicka e-post igen",
|
||||
"manualSort": "Anpassad",
|
||||
"editOrder": "Redigera ordning",
|
||||
"mostFrequentlyUsed": "Ofta använd",
|
||||
"mostRecentlyUsed": "Senast använd",
|
||||
"activeSessions": "Aktiva sessioner",
|
||||
"thisWillLogYouOutOfThisDevice": "Detta kommer att logga ut dig från den här enheten!",
|
||||
"terminateSession": "Avsluta session?",
|
||||
"terminate": "Avsluta",
|
||||
"thisDevice": "Den här enheten",
|
||||
"thisEmailIsAlreadyInUse": "Denna e-postadress används redan",
|
||||
"incorrectCode": "Felaktig kod",
|
||||
"authenticationSuccessful": "Autentisering lyckades!",
|
||||
"twofactorAuthenticationSuccessfullyReset": "Tvåfaktorsautentisering återställd",
|
||||
"incorrectRecoveryKey": "Felaktig återställningsnyckel",
|
||||
"enterPassword": "Ange lösenord",
|
||||
"selectExportFormat": "Välj exportformat",
|
||||
"encrypted": "Krypterad",
|
||||
"plainText": "Enkel text",
|
||||
"passwordToEncryptExport": "Lösenord för att kryptera export",
|
||||
"export": "Exportera",
|
||||
"useOffline": "Använd utan säkerhetskopior",
|
||||
"signInToBackup": "Logga in för att säkerhetskopiera dina koder",
|
||||
"singIn": "Logga in",
|
||||
"showLargeIcons": "Visa stora ikoner",
|
||||
"compactMode": "Kompakt läge",
|
||||
"shouldHideCode": "Dölj koder",
|
||||
"focusOnSearchBar": "Fokusera på sök vid appstart",
|
||||
"minimizeAppOnCopy": "Minimera appen vid kopiering",
|
||||
"editCodeAuthMessage": "Autentisera för att redigera kod",
|
||||
"deleteCodeAuthMessage": "Autentisera för att radera kod",
|
||||
"showQRAuthMessage": "Autentisera för att visa QR-kod",
|
||||
"confirmAccountDeleteTitle": "Bekräfta radering av kontot",
|
||||
"androidBiometricHint": "Verifiera identitet",
|
||||
"@androidBiometricHint": {
|
||||
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricNotRecognized": "Ej godkänd. Försök igen.",
|
||||
"@androidBiometricNotRecognized": {
|
||||
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidBiometricSuccess": "Slutförd",
|
||||
"@androidBiometricSuccess": {
|
||||
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
|
||||
},
|
||||
"androidCancelButton": "Avbryt",
|
||||
"@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": "Obligatorisk autentisering",
|
||||
"@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": "Biometriska uppgifter krävs",
|
||||
"@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": "Enhetsuppgifter krävs",
|
||||
"@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": "Enhetsuppgifter krävs",
|
||||
"@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å till inställningar",
|
||||
"@goToSettings": {
|
||||
"description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 characters."
|
||||
},
|
||||
"iOSOkButton": "OK",
|
||||
"@iOSOkButton": {
|
||||
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on iOS side. Maximum 30 characters."
|
||||
},
|
||||
"noInternetConnection": "Ingen internetanslutning",
|
||||
"pleaseCheckYourInternetConnectionAndTryAgain": "Kontrollera din internetanslutning och försök igen.",
|
||||
"signOutFromOtherDevices": "Logga ut från andra enheter",
|
||||
"signOutOtherDevices": "Logga ut andra enheter",
|
||||
"doNotSignOut": "Logga inte ut",
|
||||
"hearUsWhereTitle": "Hur hörde du talas om Ente? (valfritt)",
|
||||
"hearUsExplanation": "Vi spårar inte appinstallationer, Det skulle hjälpa oss om du berättade var du hittade oss!",
|
||||
"recoveryKeySaved": "Återställningsnyckel sparad i nedladdningsmappen!",
|
||||
"waitingForBrowserRequest": "Väntar på webbläsarbegäran...",
|
||||
"waitingForVerification": "Väntar på verifiering...",
|
||||
"passkey": "Nyckel",
|
||||
"passKeyPendingVerification": "Verifiering pågår fortfarande",
|
||||
"loginSessionExpired": "Sessionen har gått ut",
|
||||
"loginSessionExpiredDetails": "Din session har upphört. Logga in igen.",
|
||||
"developerSettingsWarning": "Är du säker på att du vill ändra på utvecklarinställningar?",
|
||||
"developerSettings": "Utvecklarinställningar",
|
||||
"serverEndpoint": "Serverns slutpunkt",
|
||||
"invalidEndpoint": "Ogiltig slutpunkt",
|
||||
"invalidEndpointMessage": "Tyvärr, slutpunkten du angav är ogiltig. Ange en giltig slutpunkt och försök igen.",
|
||||
"endpointUpdatedMessage": "Slutpunkten har uppdaterats",
|
||||
"customEndpoint": "Ansluten till {endpoint}",
|
||||
"pinText": "Fäst",
|
||||
"unpinText": "Ångra fäst",
|
||||
"pinnedCodeMessage": "{code} har fästs",
|
||||
"unpinnedCodeMessage": "{code} har lösgjorts",
|
||||
"pinned": "Fastmarkerad",
|
||||
"tags": "Taggar",
|
||||
"createNewTag": "Skapa ny tagg",
|
||||
"tag": "Tagg",
|
||||
"create": "Skapa",
|
||||
"editTag": "Redigera tagg",
|
||||
"deleteTagTitle": "Radera tagg?",
|
||||
"somethingWentWrongParsingCode": "Vi kunde inte tolka {x} koder.",
|
||||
"updateNotAvailable": "Uppdateringen är inte tillgänglig",
|
||||
"viewRawCodes": "Visa råa koder",
|
||||
"rawCodes": "Råa koder",
|
||||
"rawCodeData": "Rå koddata",
|
||||
"appLock": "Applås",
|
||||
"noSystemLockFound": "Inget systemlås hittades",
|
||||
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "För att aktivera applås, vänligen ställ in enhetens lösenord eller skärmlås i systeminställningarna.",
|
||||
"autoLock": "Automatisk låsning",
|
||||
"immediately": "Omedelbart",
|
||||
"reEnterPassword": "Ange lösenord igen",
|
||||
"reEnterPin": "Ange PIN-kod igen",
|
||||
@@ -224,7 +433,22 @@
|
||||
"setNewPassword": "Ställ in nytt lösenord",
|
||||
"deviceLock": "Enhetslås",
|
||||
"hideContent": "Dölj innehåll",
|
||||
"hideContentDescriptionAndroid": "Döljer appinnehåll i app-växlaren och inaktiverar skärmdumpar",
|
||||
"hideContentDescriptioniOS": "Döljer appinnehåll i app-växlaren",
|
||||
"pinLock": "Pinkodslås",
|
||||
"enterPin": "Ange PIN-kod",
|
||||
"setNewPin": "Ställ in ny PIN-kod",
|
||||
"authToViewPasskey": "Autentisera för att visa nyckel"
|
||||
"importFailureDescNew": "Kunde inte tolka den valda filen.",
|
||||
"appLockNotEnabled": "Applås ej aktiverat",
|
||||
"appLockNotEnabledDescription": "Vänligen aktivera applås från Säkerhet > Applås",
|
||||
"authToViewPasskey": "Autentisera för att visa nyckel",
|
||||
"appLockOfflineModeWarning": "Du har valt att fortsätta utan säkerhetskopior. Om du glömmer ditt applås, kommer du att bli utelåst från att komma åt dina data.",
|
||||
"duplicateCodes": "Dubblettkoder",
|
||||
"noDuplicates": "✨ Inga dubbletter",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Du har inga dubblettkoder som kan rensas bort",
|
||||
"deduplicateCodes": "Deduplicera koder",
|
||||
"deselectAll": "Avmarkera alla",
|
||||
"selectAll": "Markera alla",
|
||||
"deleteDuplicates": "Radera dubbletter",
|
||||
"plainHTML": "Ren HTML"
|
||||
}
|
||||
@@ -156,6 +156,7 @@
|
||||
"twoFactorAuthTitle": "İki faktörlü kimlik doğrulama",
|
||||
"passkeyAuthTitle": "Geçiş anahtarı doğrulaması",
|
||||
"verifyPasskey": "Geçiş anahtarını doğrula",
|
||||
"loginWithTOTP": "TOTP ile giriş yap",
|
||||
"recoverAccount": "Hesap kurtarma",
|
||||
"enterRecoveryKeyHint": "Kurtarma anahtarınızı girin",
|
||||
"recover": "Kurtar",
|
||||
@@ -257,6 +258,10 @@
|
||||
"areYouSureYouWantToLogout": "Çıkış yapmak istediğinize emin misiniz?",
|
||||
"yesLogout": "Evet, çıkış yap",
|
||||
"exit": "Çıkış",
|
||||
"theme": "Tema",
|
||||
"lightTheme": "Aydınlık",
|
||||
"darkTheme": "Karanlık",
|
||||
"systemTheme": "Sistem",
|
||||
"verifyingRecoveryKey": "Kurtarma anahtarı doğrulanıyor...",
|
||||
"recoveryKeyVerified": "Kurtarma anahtarı doğrulandı",
|
||||
"recoveryKeySuccessBody": "Güzel! Kurtarma anahtarınız geçerli. Doğruladığınız için teşekkürler.\n\nLütfen kurtarma anahtarınızı güvenli bir şekilde yedeklemeyi unutmayın.",
|
||||
@@ -327,6 +332,9 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Özel",
|
||||
"mostFrequentlyUsed": "Sık kullanılan",
|
||||
"mostRecentlyUsed": "Son kullanılan",
|
||||
"activeSessions": "Aktif oturumlar",
|
||||
"somethingWentWrongPleaseTryAgain": "Bir şeyler ters gitti, lütfen tekrar deneyin",
|
||||
"thisWillLogYouOutOfThisDevice": "Bu sizin bu cihazdaki oturumunuzu kapatacaktır!",
|
||||
@@ -447,7 +455,8 @@
|
||||
"pinText": "Sabitle",
|
||||
"unpinText": "Sabitlemeyi kaldır",
|
||||
"pinnedCodeMessage": "{code} sabitlendi",
|
||||
"unpinnedCodeMessage": "{code} sabitlemesi kaldırıldı",
|
||||
"unpinnedCodeMessage": "{code}'un sabitlemesi kaldırıldı",
|
||||
"pinned": "Sabitlendi",
|
||||
"tags": "Etiketler",
|
||||
"createNewTag": "Yeni etiket oluştur",
|
||||
"tag": "Etiket",
|
||||
@@ -484,5 +493,13 @@
|
||||
"appLockNotEnabled": "Uygulama kilidi etkin değil",
|
||||
"appLockNotEnabledDescription": "Uygulama kilidini Güvenlik -> Uygulama Kilidi üzerinden etkinleştirin",
|
||||
"authToViewPasskey": "Geçiş anahtarını görmek için lütfen kimliğinizi doğrulayın",
|
||||
"appLockOfflineModeWarning": "Yedekleme olmadan devam etmeyi seçtiniz. Eğer uygulama parolanızı unutursanız, verilerinize erişiminiz engellenir."
|
||||
"appLockOfflineModeWarning": "Yedekleme olmadan devam etmeyi seçtiniz. Eğer uygulama parolanızı unutursanız, verilerinize erişiminiz engellenir.",
|
||||
"duplicateCodes": "Yinelenen kodlar",
|
||||
"noDuplicates": "✨ Yinelenen yok",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Temizlenebilecek yinelenen kodunuz yok",
|
||||
"deduplicateCodes": "Kodları tekilleştir",
|
||||
"deselectAll": "Tümünün seçimini kaldır",
|
||||
"selectAll": "Tümünü seç",
|
||||
"deleteDuplicates": "Yinelenenleri sil",
|
||||
"plainHTML": "Sade HTML"
|
||||
}
|
||||
@@ -115,14 +115,14 @@
|
||||
"importCodeDelimiterInfo": "Коди можуть бути розділені комою або новим рядком",
|
||||
"selectFile": "Вибрати файл",
|
||||
"emailVerificationToggle": "Підтвердження адреси електронної пошти",
|
||||
"emailVerificationEnableWarning": "Щоб уникнути блокування доступу до свого облікового запису, обов’язково збережіть копію двофакторної аутентифікації до своєї електронної пошти за межами Ente Auth, перш ніж увімкнути перевірку електронної пошти.",
|
||||
"authToChangeEmailVerificationSetting": "Будь ласка, пройдіть аутентифікацію, щоб змінити перевірку адреси електронної пошти",
|
||||
"emailVerificationEnableWarning": "Щоб уникнути блокування доступу до свого облікового запису, обов’язково збережіть копію двоетапної автентифікації до своєї електронної пошти за межами Ente Auth, перш ніж увімкнути перевірку електронної пошти.",
|
||||
"authToChangeEmailVerificationSetting": "Будь ласка, пройдіть автентифікацію, щоб змінити перевірку адреси електронної пошти",
|
||||
"authenticateGeneric": "Будь ласка, авторизуйтеся",
|
||||
"authToViewYourRecoveryKey": "Будь ласка, пройдіть аутентифікацію, щоб переглянути ваш ключ відновлення",
|
||||
"authToChangeYourEmail": "Будь ласка, пройдіть аутентифікацію, щоб змінити адресу електронної пошти",
|
||||
"authToChangeYourPassword": "Будь ласка, пройдіть аутентифікацію, щоб змінити ваш пароль",
|
||||
"authToViewSecrets": "Будь ласка, пройдіть аутентифікацію, щоб переглянути ваші секретні коди",
|
||||
"authToInitiateSignIn": "Будь ласка, пройдіть аутентифікацію, щоб розпочати вхід для резервного копіювання.",
|
||||
"authToViewYourRecoveryKey": "Будь ласка, пройдіть автентифікацію, щоб переглянути ваш ключ відновлення",
|
||||
"authToChangeYourEmail": "Будь ласка, пройдіть автентифікацію, щоб змінити адресу електронної пошти",
|
||||
"authToChangeYourPassword": "Будь ласка, пройдіть автентифікацію, щоб змінити ваш пароль",
|
||||
"authToViewSecrets": "Будь ласка, пройдіть автентифікацію, щоб переглянути ваші секретні коди",
|
||||
"authToInitiateSignIn": "Будь ласка, пройдіть автентифікацію, щоб розпочати вхід для резервного копіювання.",
|
||||
"ok": "Ок",
|
||||
"cancel": "Скасувати",
|
||||
"yes": "Так",
|
||||
@@ -153,7 +153,7 @@
|
||||
"verifyEmail": "Підтвердити електронну адресу",
|
||||
"enterCodeHint": "Введіть нижче шестизначний код із застосунку для автентифікації",
|
||||
"lostDeviceTitle": "Загубили пристрій?",
|
||||
"twoFactorAuthTitle": "Двофакторна аутентифікація",
|
||||
"twoFactorAuthTitle": "Двоетапна автентифікація",
|
||||
"passkeyAuthTitle": "Перевірка секретного ключа",
|
||||
"verifyPasskey": "Підтвердження секретного ключа",
|
||||
"loginWithTOTP": "Увійти за допомогою TOTP",
|
||||
@@ -194,7 +194,7 @@
|
||||
"authToChangeLockscreenSetting": "Будь ласка, авторизуйтесь для зміни налаштувань екрану блокування",
|
||||
"deviceLockEnablePreSteps": "Для увімкнення блокування програми, будь ласка, налаштуйте пароль пристрою або блокування екрана в системних налаштуваннях.",
|
||||
"viewActiveSessions": "Показати активні сеанси",
|
||||
"authToViewYourActiveSessions": "Будь ласка, пройдіть аутентифікацію, щоб переглянути ваші активні сеанси",
|
||||
"authToViewYourActiveSessions": "Будь ласка, пройдіть автентифікацію, щоб переглянути ваші активні сеанси",
|
||||
"searchHint": "Пошук...",
|
||||
"search": "Пошук",
|
||||
"sorryUnableToGenCode": "Вибачте, не вдалося створити код для {issuerName}",
|
||||
@@ -258,6 +258,10 @@
|
||||
"areYouSureYouWantToLogout": "Ви впевнені, що хочете вийти з системи?",
|
||||
"yesLogout": "Так, вийти з системи",
|
||||
"exit": "Вийти",
|
||||
"theme": "Тема",
|
||||
"lightTheme": "Світла",
|
||||
"darkTheme": "Темна",
|
||||
"systemTheme": "Як в системі",
|
||||
"verifyingRecoveryKey": "Перевірка ключа відновлення...",
|
||||
"recoveryKeyVerified": "Ключ відновлення перевірено",
|
||||
"recoveryKeySuccessBody": "Чудово! Ваш ключ відновлення дійсний. Дякуємо за перевірку.\n\nБудь ласка, не забувайте зберігати надійну резервну копію ключа відновлення.",
|
||||
@@ -328,6 +332,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Власні",
|
||||
"editOrder": "Змінити порядок",
|
||||
"mostFrequentlyUsed": "Часто використовувані",
|
||||
"mostRecentlyUsed": "Нещодавно використані",
|
||||
"activeSessions": "Активні сеанси",
|
||||
"somethingWentWrongPleaseTryAgain": "Щось пішло не так, спробуйте, будь ласка, знову",
|
||||
"thisWillLogYouOutOfThisDevice": "Це призведе до виходу на цьому пристрої!",
|
||||
@@ -342,9 +350,9 @@
|
||||
"incorrectCode": "Невірний код",
|
||||
"sorryTheCodeYouveEnteredIsIncorrect": "Вибачте, але введений вами код є невірним",
|
||||
"emailChangedTo": "Адресу електронної пошти змінено на {newEmail}",
|
||||
"authenticationFailedPleaseTryAgain": "Аутентифікація не пройдена. Будь ласка, спробуйте ще раз",
|
||||
"authenticationFailedPleaseTryAgain": "Автентифікація не пройдена. Будь ласка, спробуйте ще раз",
|
||||
"authenticationSuccessful": "Автентифікацію виконано!",
|
||||
"twofactorAuthenticationSuccessfullyReset": "Двофакторна аутентифікація успішно скинута",
|
||||
"twofactorAuthenticationSuccessfullyReset": "Двоетапна автентифікація успішно скинута",
|
||||
"incorrectRecoveryKey": "Неправильний ключ відновлення",
|
||||
"theRecoveryKeyYouEnteredIsIncorrect": "Ви ввели неправильний ключ відновлення",
|
||||
"enterPassword": "Введіть пароль",
|
||||
@@ -366,9 +374,9 @@
|
||||
"focusOnSearchBar": "Сфокусуватися на пошуку після запуску програми",
|
||||
"confirmUpdatingkey": "Ви впевнені у тому, що бажаєте змінити секретний ключ?",
|
||||
"minimizeAppOnCopy": "Згорнути програму після копіювання",
|
||||
"editCodeAuthMessage": "Аутентифікуйтесь, щоб змінити код",
|
||||
"deleteCodeAuthMessage": "Аутентифікуйтесь, щоб видалити код",
|
||||
"showQRAuthMessage": "Аутентифікуйтесь, щоб показати QR-код",
|
||||
"editCodeAuthMessage": "Авторизуйтесь, щоб змінити код",
|
||||
"deleteCodeAuthMessage": "Авторизуйтесь, щоб видалити код",
|
||||
"showQRAuthMessage": "Авторизуйтесь, щоб показати QR-код",
|
||||
"confirmAccountDeleteTitle": "Підтвердіть видалення облікового запису",
|
||||
"confirmAccountDeleteMessage": "Цей обліковий запис є зв'язаним з іншими програмами Ente, якщо ви використовуєте якісь з них.\n\nВаші завантажені дані у всіх програмах Ente будуть заплановані до видалення, а обліковий запис буде видалено назавжди.",
|
||||
"androidBiometricHint": "Підтвердити ідентифікацію",
|
||||
@@ -387,11 +395,11 @@
|
||||
"@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": "Необхідна аутентифікація",
|
||||
"androidSignInTitle": "Необхідна автентифікація",
|
||||
"@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": "Потрібна біометрична аутентифікація",
|
||||
"androidBiometricRequiredTitle": "Потрібна біометрична автентифікація",
|
||||
"@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."
|
||||
},
|
||||
@@ -407,7 +415,7 @@
|
||||
"@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": "Біометрична аутентифікація не налаштована на вашому пристрої. Перейдіть в 'Налаштування > Безпека', щоб додати біометричну аутентифікацію.",
|
||||
"androidGoToSettingsDescription": "Біометрична автентифікація не налаштована на вашому пристрої. Перейдіть в «Налаштування > Безпека», щоб додати біометричну автентифікацію.",
|
||||
"@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."
|
||||
},
|
||||
@@ -415,7 +423,7 @@
|
||||
"@iOSLockOut": {
|
||||
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
|
||||
},
|
||||
"iOSGoToSettingsDescription": "Біометрична аутентифікація не налаштована на вашому пристрої. Увімкніть TouchID або FaceID на вашому телефоні.",
|
||||
"iOSGoToSettingsDescription": "Біометрична автентифікація не налаштована на вашому пристрої. Увімкніть TouchID або FaceID на вашому телефоні.",
|
||||
"@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."
|
||||
},
|
||||
@@ -449,6 +457,7 @@
|
||||
"unpinText": "Відкріпити",
|
||||
"pinnedCodeMessage": "{code} закріплено",
|
||||
"unpinnedCodeMessage": "{code} відкріплено",
|
||||
"pinned": "Закріплено",
|
||||
"tags": "Мітки",
|
||||
"createNewTag": "Створити нову мітку",
|
||||
"tag": "Мітка",
|
||||
@@ -485,5 +494,13 @@
|
||||
"appLockNotEnabled": "Блокування програм не увімкнено",
|
||||
"appLockNotEnabledDescription": "Увімкніть блокування програм від безпеки > Блокування програм",
|
||||
"authToViewPasskey": "Будь ласка, авторизуйтеся для перегляду ключа доступу",
|
||||
"appLockOfflineModeWarning": "Ви обрали продовжити без резервних копій. Якщо ви забудете свій пароль, доступ до ваших даних буде заблоковано."
|
||||
"appLockOfflineModeWarning": "Ви обрали продовжити без резервних копій. Якщо ви забудете свій пароль, доступ до ваших даних буде заблоковано.",
|
||||
"duplicateCodes": "Дублікати кодів",
|
||||
"noDuplicates": "✨ Немає дублікатів",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "У вас немає дублікатів кодів, які можна очистити",
|
||||
"deduplicateCodes": "Дедуплікувати коди",
|
||||
"deselectAll": "Зняти виділення",
|
||||
"selectAll": "Вибрати все",
|
||||
"deleteDuplicates": "Видалити дублікати",
|
||||
"plainHTML": "Звичайний HTML"
|
||||
}
|
||||
@@ -88,6 +88,8 @@
|
||||
"useRecoveryKey": "Dùng khóa khôi phục",
|
||||
"incorrectPasswordTitle": "Mật khẩu không đúng",
|
||||
"welcomeBack": "Chào mừng trở lại!",
|
||||
"emailAlreadyRegistered": "Email đã được đăng kí.",
|
||||
"emailNotRegistered": "Email chưa được đăng kí.",
|
||||
"madeWithLoveAtPrefix": "được làm bằng ❤️ tại ",
|
||||
"supportDevs": "Đăng ký <bold-green>ente</bold-green> để hỗ trợ dự án này.",
|
||||
"supportDiscount": "Sử dụng mã giảm giá \"AUTH\" để được giảm 10% trong năm đầu tiên",
|
||||
@@ -258,6 +260,10 @@
|
||||
"areYouSureYouWantToLogout": "Bạn có chắc chắn muốn đăng xuất?",
|
||||
"yesLogout": "Có, đăng xuất",
|
||||
"exit": "Thoát",
|
||||
"theme": "Chủ đề",
|
||||
"lightTheme": "Sáng",
|
||||
"darkTheme": "Tối",
|
||||
"systemTheme": "Hệ thống",
|
||||
"verifyingRecoveryKey": "Đang xác minh khóa khôi phục...",
|
||||
"recoveryKeyVerified": "Khóa khôi phục đã được xác thực",
|
||||
"recoveryKeySuccessBody": "Tuyệt vời! Khóa khôi phục của bạn hợp lệ. Cảm ơn bạn đã xác minh.\n\nHãy nhớ sao lưu khóa khôi phục của bạn một cách an toàn.",
|
||||
@@ -328,6 +334,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "Tùy chỉnh",
|
||||
"editOrder": "Chỉnh sửa đơn hàng",
|
||||
"mostFrequentlyUsed": "Thường dùng",
|
||||
"mostRecentlyUsed": "Dùng gần đây",
|
||||
"activeSessions": "Các phiên làm việc hiện tại",
|
||||
"somethingWentWrongPleaseTryAgain": "Phát hiện có lỗi, xin thử lại",
|
||||
"thisWillLogYouOutOfThisDevice": "Thao tác này sẽ đăng xuất bạn khỏi thiết bị này!",
|
||||
@@ -449,6 +459,7 @@
|
||||
"unpinText": "Bỏ ghim",
|
||||
"pinnedCodeMessage": "{code} đã được ghim",
|
||||
"unpinnedCodeMessage": "{code} đã được bỏ ghim",
|
||||
"pinned": "Đã ghim",
|
||||
"tags": "Thẻ",
|
||||
"createNewTag": "Tạo thẻ mới",
|
||||
"tag": "Thẻ",
|
||||
@@ -485,5 +496,13 @@
|
||||
"appLockNotEnabled": "Khóa ứng dụng chưa được bật",
|
||||
"appLockNotEnabledDescription": "Vui lòng bật khóa ứng dụng từ Bảo mật > Khóa ứng dụng",
|
||||
"authToViewPasskey": "Vui lòng xác thực để xem mã khóa",
|
||||
"appLockOfflineModeWarning": "Bạn đã chọn tiếp tục mà không có bản sao lưu. Nếu bạn quên khóa ứng dụng, bạn sẽ bị khóa khỏi việc truy cập dữ liệu của mình."
|
||||
"appLockOfflineModeWarning": "Bạn đã chọn tiếp tục mà không có bản sao lưu. Nếu bạn quên khóa ứng dụng, bạn sẽ bị khóa khỏi việc truy cập dữ liệu của mình.",
|
||||
"duplicateCodes": "Mã trùng lặp",
|
||||
"noDuplicates": "✨ Không có trùng lặp",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "Bạn không có mã trùng lặp nào có thể được xóa",
|
||||
"deduplicateCodes": "Loại bỏ mã trùng lặp",
|
||||
"deselectAll": "Bỏ chọn tất cả",
|
||||
"selectAll": "Chọn tất cả",
|
||||
"deleteDuplicates": "Xóa trùng lặp",
|
||||
"plainHTML": "HTML thuần"
|
||||
}
|
||||
@@ -88,6 +88,8 @@
|
||||
"useRecoveryKey": "使用恢复密钥",
|
||||
"incorrectPasswordTitle": "密码错误",
|
||||
"welcomeBack": "欢迎回来!",
|
||||
"emailAlreadyRegistered": "电子邮件地址已被注册。",
|
||||
"emailNotRegistered": "电子邮件地址未注册。",
|
||||
"madeWithLoveAtPrefix": "用❤️制作 ",
|
||||
"supportDevs": "订阅 <bold-green>ente</bold-green> 以支持我们",
|
||||
"supportDiscount": "使用优惠码“AUTH”可享受首年 10% 折扣",
|
||||
@@ -258,6 +260,10 @@
|
||||
"areYouSureYouWantToLogout": "您确定要登出吗?",
|
||||
"yesLogout": "是的,登出",
|
||||
"exit": "退出",
|
||||
"theme": "主题",
|
||||
"lightTheme": "浅色",
|
||||
"darkTheme": "深色",
|
||||
"systemTheme": "系统",
|
||||
"verifyingRecoveryKey": "正在验证恢复密钥...",
|
||||
"recoveryKeyVerified": "恢复密钥已验证",
|
||||
"recoveryKeySuccessBody": "太棒了! 您的恢复密钥是有效的。 感谢您的验证。\n\n请记住要安全备份您的恢复密钥。",
|
||||
@@ -328,6 +334,10 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"manualSort": "自定义",
|
||||
"editOrder": "编辑顺序",
|
||||
"mostFrequentlyUsed": "经常使用",
|
||||
"mostRecentlyUsed": "最近使用",
|
||||
"activeSessions": "已登录的设备",
|
||||
"somethingWentWrongPleaseTryAgain": "出了点问题,请重试",
|
||||
"thisWillLogYouOutOfThisDevice": "这将使您登出该设备!",
|
||||
@@ -449,6 +459,7 @@
|
||||
"unpinText": "取消置顶",
|
||||
"pinnedCodeMessage": "{code} 已被置顶",
|
||||
"unpinnedCodeMessage": "{code} 已被取消置顶",
|
||||
"pinned": "已置顶",
|
||||
"tags": "标签",
|
||||
"createNewTag": "创建新标签",
|
||||
"tag": "标签",
|
||||
@@ -485,5 +496,13 @@
|
||||
"appLockNotEnabled": "应用锁未启用",
|
||||
"appLockNotEnabledDescription": "请从“安全”>“应用锁”启用应用锁",
|
||||
"authToViewPasskey": "请验证身份以查看通行密钥",
|
||||
"appLockOfflineModeWarning": "您已选择继续而不备份。如果您忘记了应用锁,您将无法访问数据。"
|
||||
"appLockOfflineModeWarning": "您已选择继续而不备份。如果您忘记了应用锁,您将无法访问数据。",
|
||||
"duplicateCodes": "重复代码",
|
||||
"noDuplicates": "✨ 没有重复",
|
||||
"youveNoDuplicateCodesThatCanBeCleared": "您没有可清除的重复代码",
|
||||
"deduplicateCodes": "删除重复代码",
|
||||
"deselectAll": "取消全选",
|
||||
"selectAll": "全选",
|
||||
"deleteDuplicates": "删除重复项",
|
||||
"plainHTML": "Plain HTML"
|
||||
}
|
||||
@@ -8,18 +8,25 @@ const List<Locale> appSupportedLocales = <Locale>[
|
||||
Locale('ar'),
|
||||
Locale('bg'),
|
||||
Locale('ca'),
|
||||
Locale('cs'),
|
||||
Locale('de'),
|
||||
Locale('el'),
|
||||
Locale('en'),
|
||||
Locale('es', 'ES'),
|
||||
Locale('fa'),
|
||||
Locale('fr'),
|
||||
Locale('hu'),
|
||||
Locale('id'),
|
||||
Locale('it'),
|
||||
Locale('ja'),
|
||||
Locale('ko'),
|
||||
Locale('lt'),
|
||||
Locale('nl'),
|
||||
Locale('pl'),
|
||||
Locale('pt'),
|
||||
Locale('pt', 'BR'),
|
||||
Locale('ru'),
|
||||
Locale('sl'),
|
||||
Locale('sk'),
|
||||
Locale('tr'),
|
||||
Locale('uk'),
|
||||
|
||||
15
auth/lib/models/all_icon_data.dart
Normal file
@@ -0,0 +1,15 @@
|
||||
enum IconType { simpleIcon, customIcon }
|
||||
|
||||
class AllIconData {
|
||||
final String title;
|
||||
final IconType type;
|
||||
final String? color;
|
||||
final String? slug;
|
||||
|
||||
AllIconData({
|
||||
required this.title,
|
||||
required this.type,
|
||||
required this.color,
|
||||
this.slug,
|
||||
});
|
||||
}
|
||||
@@ -256,9 +256,9 @@ class Code {
|
||||
try {
|
||||
final algorithm =
|
||||
uri.queryParameters['algorithm'].toString().toLowerCase();
|
||||
if (algorithm == "sha256") {
|
||||
if (algorithm == "sha256" || "algorithm.sha256" == algorithm) {
|
||||
return Algorithm.sha256;
|
||||
} else if (algorithm == "sha512") {
|
||||
} else if (algorithm == "sha512" || "algorithm.sha512" == algorithm) {
|
||||
return Algorithm.sha512;
|
||||
}
|
||||
} catch (e) {
|
||||
|
||||
@@ -12,6 +12,8 @@ class CodeDisplay {
|
||||
String note;
|
||||
final List<String> tags;
|
||||
int position;
|
||||
String iconSrc;
|
||||
String iconID;
|
||||
|
||||
CodeDisplay({
|
||||
this.pinned = false,
|
||||
@@ -21,8 +23,12 @@ class CodeDisplay {
|
||||
this.tags = const [],
|
||||
this.note = '',
|
||||
this.position = 0,
|
||||
this.iconSrc = '',
|
||||
this.iconID = '',
|
||||
});
|
||||
|
||||
bool get isCustomIcon => (iconSrc != '' && iconID != '');
|
||||
|
||||
// copyWith
|
||||
CodeDisplay copyWith({
|
||||
bool? pinned,
|
||||
@@ -32,6 +38,8 @@ class CodeDisplay {
|
||||
List<String>? tags,
|
||||
String? note,
|
||||
int? position,
|
||||
String? iconSrc,
|
||||
String? iconID,
|
||||
}) {
|
||||
final bool updatedPinned = pinned ?? this.pinned;
|
||||
final bool updatedTrashed = trashed ?? this.trashed;
|
||||
@@ -40,6 +48,8 @@ class CodeDisplay {
|
||||
final List<String> updatedTags = tags ?? this.tags;
|
||||
final String updatedNote = note ?? this.note;
|
||||
final int updatedPosition = position ?? this.position;
|
||||
final String updatedIconSrc = iconSrc ?? this.iconSrc;
|
||||
final String updatedIconID = iconID ?? this.iconID;
|
||||
|
||||
return CodeDisplay(
|
||||
pinned: updatedPinned,
|
||||
@@ -49,6 +59,8 @@ class CodeDisplay {
|
||||
tags: updatedTags,
|
||||
note: updatedNote,
|
||||
position: updatedPosition,
|
||||
iconSrc: updatedIconSrc,
|
||||
iconID: updatedIconID,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -64,6 +76,8 @@ class CodeDisplay {
|
||||
tags: List<String>.from(json['tags'] ?? []),
|
||||
note: json['note'] ?? '',
|
||||
position: json['position'] ?? 0,
|
||||
iconSrc: json['iconSrc'] ?? 'ente',
|
||||
iconID: json['iconID'] ?? '',
|
||||
);
|
||||
}
|
||||
|
||||
@@ -106,6 +120,8 @@ class CodeDisplay {
|
||||
'tags': tags,
|
||||
'note': note,
|
||||
'position': position,
|
||||
'iconSrc': iconSrc,
|
||||
'iconID': iconID,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -90,8 +90,10 @@ class _OnboardingPageState extends State<OnboardingPage> {
|
||||
child: SingleChildScrollView(
|
||||
child: Center(
|
||||
child: ConstrainedBox(
|
||||
constraints:
|
||||
const BoxConstraints.tightFor(height: 800, width: 450),
|
||||
constraints: BoxConstraints(
|
||||
minHeight: MediaQuery.of(context).size.height,
|
||||
maxWidth: 450,
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 40.0,
|
||||
@@ -197,6 +199,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
|
||||
child: Center(
|
||||
child: Text(
|
||||
l10n.useOffline,
|
||||
textAlign: TextAlign.center,
|
||||
style: body.copyWith(
|
||||
color: Theme.of(context)
|
||||
.colorScheme
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'dart:async';
|
||||
import 'package:ente_auth/core/event_bus.dart';
|
||||
import 'package:ente_auth/events/codes_updated_event.dart';
|
||||
import "package:ente_auth/l10n/l10n.dart";
|
||||
import 'package:ente_auth/models/all_icon_data.dart';
|
||||
import 'package:ente_auth/models/code.dart';
|
||||
import 'package:ente_auth/models/code_display.dart';
|
||||
import 'package:ente_auth/onboarding/model/tag_enums.dart';
|
||||
@@ -13,7 +14,10 @@ import 'package:ente_auth/onboarding/view/common/tag_chip.dart';
|
||||
import 'package:ente_auth/store/code_display_store.dart';
|
||||
import 'package:ente_auth/theme/ente_theme.dart';
|
||||
import 'package:ente_auth/ui/components/buttons/button_widget.dart';
|
||||
import 'package:ente_auth/ui/components/custom_icon_widget.dart';
|
||||
import 'package:ente_auth/ui/components/models/button_result.dart';
|
||||
import 'package:ente_auth/ui/custom_icon_page.dart';
|
||||
import 'package:ente_auth/ui/utils/icon_utils.dart';
|
||||
import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:ente_auth/utils/toast_util.dart';
|
||||
import 'package:ente_auth/utils/totp_util.dart';
|
||||
@@ -42,6 +46,9 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
late List<String> selectedTags = [...?widget.code?.display.tags];
|
||||
List<String> allTags = [];
|
||||
StreamSubscription<CodesUpdatedEvent>? _streamSubscription;
|
||||
bool isCustomIcon = false;
|
||||
String _customIconID = "";
|
||||
late IconType _iconSrc;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -81,6 +88,19 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
_limitTextLength(_accountController, _otherTextLimit);
|
||||
_limitTextLength(_secretController, _otherTextLimit);
|
||||
}
|
||||
|
||||
isCustomIcon = widget.code?.display.isCustomIcon ?? false;
|
||||
if (isCustomIcon) {
|
||||
_customIconID = widget.code?.display.iconID ?? "ente";
|
||||
} else {
|
||||
if (widget.code != null) {
|
||||
_customIconID = widget.code!.issuer;
|
||||
}
|
||||
}
|
||||
_iconSrc = widget.code?.display.iconSrc == "simpleIcon"
|
||||
? IconType.simpleIcon
|
||||
: IconType.customIcon;
|
||||
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@@ -120,191 +140,211 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 12.0, horizontal: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Row(
|
||||
if (widget.code != null)
|
||||
GestureDetector(
|
||||
onTap: () async {
|
||||
await navigateToCustomIconPage();
|
||||
},
|
||||
child: CustomIconWidget(iconData: _customIconID),
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
FieldLabel(l10n.codeIssuerHint),
|
||||
Expanded(
|
||||
child: TextFormField(
|
||||
// The validator receives the text that the user has entered.
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return "Please enter some text";
|
||||
}
|
||||
return null;
|
||||
},
|
||||
decoration: const InputDecoration(
|
||||
contentPadding: EdgeInsets.symmetric(vertical: 12.0),
|
||||
),
|
||||
style: getEnteTextTheme(context).small,
|
||||
controller: _issuerController,
|
||||
autofocus: true,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
FieldLabel(l10n.secret),
|
||||
Expanded(
|
||||
child: TextFormField(
|
||||
// The validator receives the text that the user has entered.
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return "Please enter some text";
|
||||
}
|
||||
return null;
|
||||
},
|
||||
style: getEnteTextTheme(context).small,
|
||||
decoration: InputDecoration(
|
||||
contentPadding:
|
||||
const EdgeInsets.symmetric(vertical: 12.0),
|
||||
suffixIcon: GestureDetector(
|
||||
// padding: EdgeInsets.zero,
|
||||
onTap: () {
|
||||
setState(() {
|
||||
_secretKeyObscured = !_secretKeyObscured;
|
||||
});
|
||||
Row(
|
||||
children: [
|
||||
FieldLabel(l10n.codeIssuerHint),
|
||||
Expanded(
|
||||
child: TextFormField(
|
||||
// The validator receives the text that the user has entered.
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return "Please enter some text";
|
||||
}
|
||||
return null;
|
||||
},
|
||||
child: _secretKeyObscured
|
||||
? const Icon(
|
||||
Icons.visibility_off_rounded,
|
||||
size: 18,
|
||||
)
|
||||
: const Icon(
|
||||
Icons.visibility_rounded,
|
||||
size: 18,
|
||||
),
|
||||
decoration: const InputDecoration(
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(vertical: 12.0),
|
||||
),
|
||||
style: getEnteTextTheme(context).small,
|
||||
controller: _issuerController,
|
||||
autofocus: true,
|
||||
),
|
||||
),
|
||||
obscureText: _secretKeyObscured,
|
||||
controller: _secretController,
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
FieldLabel(l10n.account),
|
||||
Expanded(
|
||||
child: TextFormField(
|
||||
// The validator receives the text that the user has entered.
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return "Please enter some text";
|
||||
}
|
||||
return null;
|
||||
},
|
||||
decoration: const InputDecoration(
|
||||
contentPadding: EdgeInsets.symmetric(vertical: 12.0),
|
||||
Row(
|
||||
children: [
|
||||
FieldLabel(l10n.secret),
|
||||
Expanded(
|
||||
child: TextFormField(
|
||||
// The validator receives the text that the user has entered.
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return "Please enter some text";
|
||||
}
|
||||
return null;
|
||||
},
|
||||
style: getEnteTextTheme(context).small,
|
||||
decoration: InputDecoration(
|
||||
contentPadding:
|
||||
const EdgeInsets.symmetric(vertical: 12.0),
|
||||
suffixIcon: GestureDetector(
|
||||
// padding: EdgeInsets.zero,
|
||||
onTap: () {
|
||||
setState(() {
|
||||
_secretKeyObscured = !_secretKeyObscured;
|
||||
});
|
||||
},
|
||||
child: _secretKeyObscured
|
||||
? const Icon(
|
||||
Icons.visibility_off_rounded,
|
||||
size: 18,
|
||||
)
|
||||
: const Icon(
|
||||
Icons.visibility_rounded,
|
||||
size: 18,
|
||||
),
|
||||
),
|
||||
),
|
||||
obscureText: _secretKeyObscured,
|
||||
controller: _secretController,
|
||||
),
|
||||
),
|
||||
style: getEnteTextTheme(context).small,
|
||||
controller: _accountController,
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Row(
|
||||
children: [
|
||||
FieldLabel(l10n.notes),
|
||||
Expanded(
|
||||
child: TextFormField(
|
||||
// The validator receives the text that the user has entered.
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return "Please enter some text";
|
||||
}
|
||||
if (value.length > _notesLimit) {
|
||||
return "Notes can't be more than 1000 characters";
|
||||
}
|
||||
return null;
|
||||
},
|
||||
maxLength: _notesLimit,
|
||||
minLines: 1,
|
||||
maxLines: 5,
|
||||
decoration: const InputDecoration(
|
||||
contentPadding: EdgeInsets.symmetric(vertical: 12.0),
|
||||
Row(
|
||||
children: [
|
||||
FieldLabel(l10n.account),
|
||||
Expanded(
|
||||
child: TextFormField(
|
||||
// The validator receives the text that the user has entered.
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return "Please enter some text";
|
||||
}
|
||||
return null;
|
||||
},
|
||||
decoration: const InputDecoration(
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(vertical: 12.0),
|
||||
),
|
||||
style: getEnteTextTheme(context).small,
|
||||
controller: _accountController,
|
||||
),
|
||||
),
|
||||
style: getEnteTextTheme(context).small,
|
||||
controller: _notesController,
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Wrap(
|
||||
spacing: 12,
|
||||
alignment: WrapAlignment.start,
|
||||
children: [
|
||||
...allTags.map(
|
||||
(e) => TagChip(
|
||||
label: e,
|
||||
action: TagChipAction.check,
|
||||
state: selectedTags.contains(e)
|
||||
? TagChipState.selected
|
||||
: TagChipState.unselected,
|
||||
onTap: () {
|
||||
if (selectedTags.contains(e)) {
|
||||
selectedTags.remove(e);
|
||||
} else {
|
||||
selectedTags.add(e);
|
||||
}
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Row(
|
||||
children: [
|
||||
FieldLabel(l10n.notes),
|
||||
Expanded(
|
||||
child: TextFormField(
|
||||
// The validator receives the text that the user has entered.
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return "Please enter some text";
|
||||
}
|
||||
if (value.length > _notesLimit) {
|
||||
return "Notes can't be more than 1000 characters";
|
||||
}
|
||||
return null;
|
||||
},
|
||||
maxLength: _notesLimit,
|
||||
minLines: 1,
|
||||
maxLines: 5,
|
||||
decoration: const InputDecoration(
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(vertical: 12.0),
|
||||
),
|
||||
style: getEnteTextTheme(context).small,
|
||||
controller: _notesController,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
AddChip(
|
||||
onTap: () {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AddTagDialog(
|
||||
onTap: (tag) {
|
||||
final exist = allTags.contains(tag);
|
||||
if (exist && selectedTags.contains(tag)) {
|
||||
return Navigator.pop(context);
|
||||
}
|
||||
if (!exist) allTags.add(tag);
|
||||
selectedTags.add(tag);
|
||||
setState(() {});
|
||||
Navigator.pop(context);
|
||||
const SizedBox(height: 12),
|
||||
Wrap(
|
||||
spacing: 12,
|
||||
alignment: WrapAlignment.start,
|
||||
children: [
|
||||
...allTags.map(
|
||||
(e) => TagChip(
|
||||
label: e,
|
||||
action: TagChipAction.check,
|
||||
state: selectedTags.contains(e)
|
||||
? TagChipState.selected
|
||||
: TagChipState.unselected,
|
||||
onTap: () {
|
||||
if (selectedTags.contains(e)) {
|
||||
selectedTags.remove(e);
|
||||
} else {
|
||||
selectedTags.add(e);
|
||||
}
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
),
|
||||
AddChip(
|
||||
onTap: () {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AddTagDialog(
|
||||
onTap: (tag) {
|
||||
final exist = allTags.contains(tag);
|
||||
if (exist && selectedTags.contains(tag)) {
|
||||
return Navigator.pop(context);
|
||||
}
|
||||
if (!exist) allTags.add(tag);
|
||||
selectedTags.add(tag);
|
||||
setState(() {});
|
||||
Navigator.pop(context);
|
||||
},
|
||||
);
|
||||
},
|
||||
barrierColor: Colors.black.withOpacity(0.85),
|
||||
barrierDismissible: false,
|
||||
);
|
||||
},
|
||||
barrierColor: Colors.black.withOpacity(0.85),
|
||||
barrierDismissible: false,
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 40),
|
||||
SizedBox(
|
||||
width: 400,
|
||||
child: OutlinedButton(
|
||||
style: OutlinedButton.styleFrom(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||
),
|
||||
onPressed: () async {
|
||||
if ((_accountController.text.trim().isEmpty &&
|
||||
_issuerController.text.trim().isEmpty) ||
|
||||
_secretController.text.trim().isEmpty) {
|
||||
String message;
|
||||
if (_secretController.text.trim().isEmpty) {
|
||||
message = context.l10n.secretCanNotBeEmpty;
|
||||
} else {
|
||||
message =
|
||||
context.l10n.bothIssuerAndAccountCanNotBeEmpty;
|
||||
}
|
||||
_showIncorrectDetailsDialog(
|
||||
context,
|
||||
message: message,
|
||||
);
|
||||
return;
|
||||
}
|
||||
await _saveCode();
|
||||
},
|
||||
child: Text(l10n.saveAction),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(
|
||||
height: 40,
|
||||
),
|
||||
SizedBox(
|
||||
width: 400,
|
||||
child: OutlinedButton(
|
||||
onPressed: () async {
|
||||
if ((_accountController.text.trim().isEmpty &&
|
||||
_issuerController.text.trim().isEmpty) ||
|
||||
_secretController.text.trim().isEmpty) {
|
||||
String message;
|
||||
if (_secretController.text.trim().isEmpty) {
|
||||
message = context.l10n.secretCanNotBeEmpty;
|
||||
} else {
|
||||
message =
|
||||
context.l10n.bothIssuerAndAccountCanNotBeEmpty;
|
||||
}
|
||||
_showIncorrectDetailsDialog(context, message: message);
|
||||
return;
|
||||
}
|
||||
await _saveCode();
|
||||
},
|
||||
child: Text(l10n.saveAction),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -324,6 +364,17 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
widget.code?.display.copyWith(tags: selectedTags) ??
|
||||
CodeDisplay(tags: selectedTags);
|
||||
display.note = notes;
|
||||
|
||||
if (widget.code!.issuer != issuer) {
|
||||
display.iconID = issuer.toLowerCase();
|
||||
}
|
||||
if (widget.code!.display.iconID != _customIconID.toLowerCase()) {
|
||||
display.iconID = _customIconID.toLowerCase();
|
||||
}
|
||||
|
||||
display.iconSrc =
|
||||
_iconSrc == IconType.simpleIcon ? 'simpleIcon' : 'customIcon';
|
||||
|
||||
if (widget.code != null && widget.code!.secret != secret) {
|
||||
ButtonResult? result = await showChoiceActionSheet(
|
||||
context,
|
||||
@@ -373,4 +424,28 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
|
||||
message ?? context.l10n.pleaseVerifyDetails,
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> navigateToCustomIconPage() async {
|
||||
final allIcons = IconUtils.instance.getAllIcons();
|
||||
String currentIcon;
|
||||
if (widget.code!.display.isCustomIcon) {
|
||||
currentIcon = widget.code!.display.iconID;
|
||||
} else {
|
||||
currentIcon = widget.code!.issuer;
|
||||
}
|
||||
final AllIconData newCustomIcon = await Navigator.of(context).push(
|
||||
MaterialPageRoute(
|
||||
builder: (context) {
|
||||
return CustomIconPage(
|
||||
currentIcon: currentIcon,
|
||||
allIcons: allIcons,
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
setState(() {
|
||||
_customIconID = newCustomIcon.title;
|
||||
_iconSrc = newCustomIcon.type;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ class ViewQrPage extends StatelessWidget {
|
||||
child: Column(
|
||||
children: [
|
||||
QrImageView(
|
||||
data: code!.rawData,
|
||||
data: code!.rawData
|
||||
.replaceAll('algorithm=Algorithm.', 'algorithm='),
|
||||
eyeStyle: QrEyeStyle(
|
||||
eyeShape: QrEyeShape.square,
|
||||
color: Theme.of(context).colorScheme.onSurface,
|
||||
|
||||
56
auth/lib/services/deduplication_service.dart
Normal file
@@ -0,0 +1,56 @@
|
||||
import 'package:ente_auth/models/code.dart';
|
||||
import 'package:ente_auth/store/code_store.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
class DeduplicationService {
|
||||
final _logger = Logger("DeduplicationService");
|
||||
|
||||
DeduplicationService._privateConstructor();
|
||||
|
||||
static final DeduplicationService instance =
|
||||
DeduplicationService._privateConstructor();
|
||||
|
||||
Future<List<DuplicateCodes>> getDuplicateCodes() async {
|
||||
try {
|
||||
final List<DuplicateCodes> result = await _getDuplicateCodes();
|
||||
return result;
|
||||
} catch (e, s) {
|
||||
_logger.severe("failed to get dedupeCode", e, s);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<DuplicateCodes>> _getDuplicateCodes() async {
|
||||
final codes = await CodeStore.instance.getAllCodes();
|
||||
final List<DuplicateCodes> duplicateCodes = [];
|
||||
Map<String, List<Code>> uniqueCodes = {};
|
||||
|
||||
for (final code in codes) {
|
||||
if (code.hasError || code.isTrashed) continue;
|
||||
|
||||
final uniqueKey = "${code.secret}_${code.issuer}_${code.account}";
|
||||
|
||||
if (uniqueCodes.containsKey(uniqueKey)) {
|
||||
uniqueCodes[uniqueKey]!.add(code);
|
||||
} else {
|
||||
uniqueCodes[uniqueKey] = [code];
|
||||
}
|
||||
}
|
||||
for (final key in uniqueCodes.keys) {
|
||||
if (uniqueCodes[key]!.length > 1) {
|
||||
duplicateCodes.add(DuplicateCodes(key, uniqueCodes[key]!));
|
||||
}
|
||||
}
|
||||
return duplicateCodes;
|
||||
}
|
||||
}
|
||||
|
||||
class DuplicateCodes {
|
||||
String hash;
|
||||
final List<Code> codes;
|
||||
|
||||
DuplicateCodes(
|
||||
this.hash,
|
||||
this.codes,
|
||||
);
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:ente_auth/core/constants.dart';
|
||||
import 'package:ente_auth/core/network.dart';
|
||||
import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
@@ -11,11 +11,13 @@ class PasskeyService {
|
||||
|
||||
final _enteDio = Network.instance.enteDio;
|
||||
|
||||
Future<String> getJwtToken() async {
|
||||
Future<String> getAccountsUrl() async {
|
||||
final response = await _enteDio.get(
|
||||
"/users/accounts-token",
|
||||
);
|
||||
return response.data!["accountsToken"] as String;
|
||||
final accountsUrl = response.data!["accountsUrl"] ?? kAccountsUrl;
|
||||
final jwtToken = response.data!["accountsToken"] as String;
|
||||
return "$accountsUrl/passkeys?token=$jwtToken";
|
||||
}
|
||||
|
||||
Future<bool> isPasskeyRecoveryEnabled() async {
|
||||
@@ -25,10 +27,6 @@ class PasskeyService {
|
||||
return response.data!["isPasskeyRecoveryEnabled"] as bool;
|
||||
}
|
||||
|
||||
String get accountsUrl {
|
||||
return kDebugMode ? "http://localhost:3001" : "https://accounts.ente.io";
|
||||
}
|
||||
|
||||
Future<void> configurePasskeyRecovery(
|
||||
String secret,
|
||||
String userEncryptedSecret,
|
||||
@@ -46,8 +44,7 @@ class PasskeyService {
|
||||
|
||||
Future<void> openPasskeyPage(BuildContext context) async {
|
||||
try {
|
||||
final jwtToken = await getJwtToken();
|
||||
final url = "$accountsUrl/passkeys?token=$jwtToken";
|
||||
final url = await getAccountsUrl();
|
||||
await launchUrlString(
|
||||
url,
|
||||
mode: LaunchMode.externalApplication,
|
||||
|
||||
@@ -38,7 +38,7 @@ class PreferenceService {
|
||||
|
||||
CodeSortKey codeSortKey() {
|
||||
return CodeSortKey
|
||||
.values[_prefs.getInt("codeSortKey") ?? CodeSortKey.manual.index];
|
||||
.values[_prefs.getInt("codeSortKey") ?? CodeSortKey.issuerName.index];
|
||||
}
|
||||
|
||||
Future<void> setCodeSortKey(CodeSortKey key) async {
|
||||
|
||||
@@ -109,7 +109,24 @@ class UserService {
|
||||
} on DioException catch (e) {
|
||||
await dialog.hide();
|
||||
_logger.info(e);
|
||||
if (e.response != null && e.response!.statusCode == 403) {
|
||||
final String? enteErrCode = e.response?.data["code"];
|
||||
if (enteErrCode != null && enteErrCode == "USER_ALREADY_REGISTERED") {
|
||||
unawaited(
|
||||
showErrorDialog(
|
||||
context,
|
||||
context.l10n.oops,
|
||||
context.l10n.emailAlreadyRegistered,
|
||||
),
|
||||
);
|
||||
} else if (enteErrCode != null && enteErrCode == "USER_NOT_REGISTERED") {
|
||||
unawaited(
|
||||
showErrorDialog(
|
||||
context,
|
||||
context.l10n.oops,
|
||||
context.l10n.emailNotRegistered,
|
||||
),
|
||||
);
|
||||
} else if (e.response != null && e.response!.statusCode == 403) {
|
||||
unawaited(
|
||||
showErrorDialog(
|
||||
context,
|
||||
@@ -379,6 +396,7 @@ class UserService {
|
||||
if (response.statusCode == 200) {
|
||||
Widget page;
|
||||
final String passkeySessionID = response.data["passkeySessionID"];
|
||||
final String accountsUrl = response.data["accountsUrl"] ?? kAccountsUrl;
|
||||
String twoFASessionID = response.data["twoFactorSessionID"];
|
||||
if (twoFASessionID.isEmpty &&
|
||||
response.data["twoFactorSessionIDV2"] != null) {
|
||||
@@ -388,6 +406,7 @@ class UserService {
|
||||
page = PasskeyPage(
|
||||
passkeySessionID,
|
||||
totp2FASessionID: twoFASessionID,
|
||||
accountsUrl: accountsUrl,
|
||||
);
|
||||
} else if (twoFASessionID.isNotEmpty) {
|
||||
page = TwoFactorAuthenticationPage(twoFASessionID);
|
||||
@@ -692,6 +711,7 @@ class UserService {
|
||||
if (response.statusCode == 200) {
|
||||
Widget? page;
|
||||
final String passkeySessionID = response.data["passkeySessionID"];
|
||||
final String accountsUrl = response.data["accountsUrl"] ?? kAccountsUrl;
|
||||
String twoFASessionID = response.data["twoFactorSessionID"];
|
||||
if (twoFASessionID.isEmpty &&
|
||||
response.data["twoFactorSessionIDV2"] != null) {
|
||||
@@ -702,6 +722,7 @@ class UserService {
|
||||
page = PasskeyPage(
|
||||
passkeySessionID,
|
||||
totp2FASessionID: twoFASessionID,
|
||||
accountsUrl: accountsUrl,
|
||||
);
|
||||
} else if (twoFASessionID.isNotEmpty) {
|
||||
page = TwoFactorAuthenticationPage(twoFASessionID);
|
||||
|
||||
@@ -70,6 +70,8 @@ class EnteColorScheme {
|
||||
final Color gradientButtonBgColor;
|
||||
final List<Color> gradientButtonBgColors;
|
||||
|
||||
bool get isLightTheme => backgroundBase == backgroundBaseLight;
|
||||
|
||||
const EnteColorScheme(
|
||||
this.backgroundBase,
|
||||
this.backgroundElevated,
|
||||
|
||||
@@ -45,6 +45,8 @@ EnteColorScheme getEnteColorScheme(
|
||||
: Theme.of(context).colorScheme.enteTheme.colorScheme;
|
||||
}
|
||||
|
||||
|
||||
|
||||
EnteTextTheme getEnteTextTheme(
|
||||
BuildContext context, {
|
||||
bool inverse = false,
|
||||
|
||||
@@ -1,58 +1,63 @@
|
||||
import 'package:ente_auth/services/preference_service.dart';
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:ente_auth/theme/ente_theme.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/scheduler.dart';
|
||||
|
||||
class CodeTimerProgressCache {
|
||||
static final Map<int, CodeTimerProgress> _cache = {};
|
||||
|
||||
static CodeTimerProgress getCachedWidget(int period) {
|
||||
if (!_cache.containsKey(period)) {
|
||||
_cache[period] = CodeTimerProgress(period: period);
|
||||
}
|
||||
return _cache[period]!;
|
||||
}
|
||||
}
|
||||
|
||||
class CodeTimerProgress extends StatefulWidget {
|
||||
final int period;
|
||||
|
||||
final bool isCompactMode;
|
||||
const CodeTimerProgress({
|
||||
super.key,
|
||||
required this.period,
|
||||
this.isCompactMode = false,
|
||||
});
|
||||
|
||||
@override
|
||||
State<CodeTimerProgress> createState() => _CodeTimerProgressState();
|
||||
}
|
||||
|
||||
class _CodeTimerProgressState extends State<CodeTimerProgress>
|
||||
with SingleTickerProviderStateMixin {
|
||||
late final Ticker _ticker;
|
||||
class _CodeTimerProgressState extends State<CodeTimerProgress> {
|
||||
late final Timer _timer;
|
||||
late final ValueNotifier<double> _progress;
|
||||
late final int _microSecondsInPeriod;
|
||||
late bool _isCompactMode=false;
|
||||
late final int _periodInMicros;
|
||||
|
||||
// Reduce update frequency
|
||||
final int _updateIntervalMs =
|
||||
(Platform.isAndroid || Platform.isIOS) ? 16 : 500; // approximately 60 FPS
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_microSecondsInPeriod = widget.period * 1000000;
|
||||
_periodInMicros = widget.period * 1000000;
|
||||
_progress = ValueNotifier<double>(0.0);
|
||||
_ticker = createTicker(_updateTimeRemaining);
|
||||
_ticker.start();
|
||||
_isCompactMode = PreferenceService.instance.isCompactMode();
|
||||
_updateTimeRemaining(Duration.zero);
|
||||
_updateTimeRemaining(DateTime.now().microsecondsSinceEpoch);
|
||||
|
||||
_timer = Timer.periodic(Duration(milliseconds: _updateIntervalMs), (timer) {
|
||||
final now = DateTime.now().microsecondsSinceEpoch;
|
||||
_updateTimeRemaining(now);
|
||||
});
|
||||
}
|
||||
|
||||
void _updateTimeRemaining(Duration elapsed) {
|
||||
int timeRemaining = _microSecondsInPeriod -
|
||||
(DateTime.now().microsecondsSinceEpoch % _microSecondsInPeriod);
|
||||
_progress.value = timeRemaining / _microSecondsInPeriod;
|
||||
void _updateTimeRemaining(int currentMicros) {
|
||||
// More efficient time calculation using modulo
|
||||
final elapsed = (currentMicros) % _periodInMicros;
|
||||
final timeRemaining = _periodInMicros - elapsed;
|
||||
_progress.value = timeRemaining / _periodInMicros;
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(covariant CodeTimerProgress oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
if (oldWidget.period != widget.period) {
|
||||
_periodInMicros = widget.period * 1000000;
|
||||
_updateTimeRemaining(DateTime.now().microsecondsSinceEpoch);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_ticker.dispose();
|
||||
_timer.cancel();
|
||||
_progress.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
@@ -60,18 +65,19 @@ class _CodeTimerProgressState extends State<CodeTimerProgress>
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SizedBox(
|
||||
height: _isCompactMode ?1:3,
|
||||
height: widget.isCompactMode ? 1 : 3,
|
||||
child: ValueListenableBuilder<double>(
|
||||
valueListenable: _progress,
|
||||
builder: (context, progress, _) {
|
||||
return CustomPaint(
|
||||
key: Key(progress.toString()), // Add key here
|
||||
painter: _ProgressPainter(
|
||||
progress: progress,
|
||||
color: progress > 0.4
|
||||
? getEnteColorScheme(context).primary700
|
||||
: Colors.orange,
|
||||
),
|
||||
size: Size.infinite,
|
||||
size: const Size.fromHeight(double.infinity),
|
||||
);
|
||||
},
|
||||
),
|
||||
@@ -83,7 +89,10 @@ class _ProgressPainter extends CustomPainter {
|
||||
final double progress;
|
||||
final Color color;
|
||||
|
||||
_ProgressPainter({required this.progress, required this.color});
|
||||
const _ProgressPainter({
|
||||
required this.progress,
|
||||
required this.color,
|
||||
});
|
||||
|
||||
@override
|
||||
void paint(Canvas canvas, Size size) {
|
||||
|
||||
@@ -146,8 +146,10 @@ class _CodeWidgetState extends State<CodeWidget> {
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
if (widget.code.type.isTOTPCompatible)
|
||||
CodeTimerProgressCache.getCachedWidget(
|
||||
widget.code.period,
|
||||
CodeTimerProgress(
|
||||
key: ValueKey('period_${widget.code.period}'),
|
||||
period: widget.code.period,
|
||||
isCompactMode: widget.isCompactMode,
|
||||
),
|
||||
widget.isCompactMode
|
||||
? const SizedBox(height: 4)
|
||||
@@ -445,13 +447,19 @@ class _CodeWidgetState extends State<CodeWidget> {
|
||||
}
|
||||
|
||||
Widget _getIcon() {
|
||||
final String iconData;
|
||||
if (widget.code.display.isCustomIcon) {
|
||||
iconData = widget.code.display.iconID;
|
||||
} else {
|
||||
iconData = widget.code.issuer;
|
||||
}
|
||||
return Padding(
|
||||
padding: _shouldShowLargeIcon
|
||||
? EdgeInsets.only(left: widget.isCompactMode ? 12 : 16)
|
||||
: const EdgeInsets.all(0),
|
||||
child: IconUtils.instance.getIcon(
|
||||
context,
|
||||
safeDecode(widget.code.issuer).trim(),
|
||||
safeDecode(iconData).trim(),
|
||||
width: widget.isCompactMode
|
||||
? (_shouldShowLargeIcon ? 32 : 24)
|
||||
: (_shouldShowLargeIcon ? 42 : 24),
|
||||
|
||||
111
auth/lib/ui/components/custom_icon_widget.dart
Normal file
@@ -0,0 +1,111 @@
|
||||
import 'package:ente_auth/theme/ente_theme.dart';
|
||||
import 'package:ente_auth/ui/utils/icon_utils.dart';
|
||||
import 'package:ente_auth/utils/totp_util.dart';
|
||||
import 'package:figma_squircle/figma_squircle.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class CustomIconWidget extends StatelessWidget {
|
||||
final String iconData;
|
||||
|
||||
CustomIconWidget({
|
||||
super.key,
|
||||
required this.iconData,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SizedBox(
|
||||
height: 90,
|
||||
width: 90,
|
||||
child: Stack(
|
||||
children: [
|
||||
Container(
|
||||
width: 80,
|
||||
height: 80,
|
||||
decoration: ShapeDecoration(
|
||||
shape: SmoothRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 1.5,
|
||||
color: getEnteColorScheme(context)
|
||||
.tagChipSelectedColor
|
||||
.withOpacity(0.5),
|
||||
),
|
||||
borderRadius: SmoothBorderRadius(
|
||||
cornerRadius: 15.5,
|
||||
cornerSmoothing: 1.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 10,
|
||||
vertical: 8,
|
||||
),
|
||||
child: FittedBox(
|
||||
fit: BoxFit.contain,
|
||||
child: IconUtils.instance.getIcon(
|
||||
context,
|
||||
safeDecode(iconData).trim(),
|
||||
width: 50,
|
||||
),
|
||||
),
|
||||
),
|
||||
_getEditIcon(context),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _getEditIcon(BuildContext context) {
|
||||
return Positioned(
|
||||
left: 60,
|
||||
top: 60,
|
||||
child: Center(
|
||||
child: Container(
|
||||
height: 28,
|
||||
width: 28,
|
||||
decoration: ShapeDecoration(
|
||||
color: Colors.white,
|
||||
shadows: const [
|
||||
BoxShadow(
|
||||
offset: Offset(0, 0),
|
||||
blurRadius: 0.84,
|
||||
color: Color.fromRGBO(0, 0, 0, 0.11),
|
||||
),
|
||||
BoxShadow(
|
||||
offset: Offset(0.84, 0.84),
|
||||
blurRadius: 1.68,
|
||||
color: Color.fromRGBO(0, 0, 0, 0.09),
|
||||
),
|
||||
BoxShadow(
|
||||
offset: Offset(2.53, 2.53),
|
||||
blurRadius: 2.53,
|
||||
color: Color.fromRGBO(0, 0, 0, 0.05),
|
||||
),
|
||||
BoxShadow(
|
||||
offset: Offset(5.05, 4.21),
|
||||
blurRadius: 2.53,
|
||||
color: Color.fromRGBO(0, 0, 0, 0.02),
|
||||
),
|
||||
BoxShadow(
|
||||
offset: Offset(7.58, 6.74),
|
||||
blurRadius: 2.53,
|
||||
color: Color.fromRGBO(0, 0, 0, 0.0),
|
||||
),
|
||||
],
|
||||
shape: SmoothRectangleBorder(
|
||||
borderRadius: SmoothBorderRadius(
|
||||
cornerRadius: 8,
|
||||
cornerSmoothing: 1.0,
|
||||
),
|
||||
),
|
||||
),
|
||||
child: Icon(
|
||||
Icons.edit,
|
||||
size: 16,
|
||||
color: Colors.black.withOpacity(0.9),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -21,8 +21,10 @@ Future<ButtonResult?> showDialogWidget({
|
||||
required List<ButtonWidget> buttons,
|
||||
IconData? icon,
|
||||
bool isDismissible = true,
|
||||
bool useRootNavigator = false,
|
||||
}) {
|
||||
return showDialog(
|
||||
useRootNavigator: useRootNavigator,
|
||||
barrierDismissible: isDismissible,
|
||||
barrierColor: backdropFaintDark,
|
||||
context: context,
|
||||
|
||||
259
auth/lib/ui/custom_icon_page.dart
Normal file
@@ -0,0 +1,259 @@
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/models/all_icon_data.dart';
|
||||
import 'package:ente_auth/services/preference_service.dart';
|
||||
import 'package:ente_auth/theme/ente_theme.dart';
|
||||
import 'package:ente_auth/ui/utils/icon_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
class CustomIconPage extends StatefulWidget {
|
||||
final Map<String, AllIconData> allIcons;
|
||||
final String currentIcon;
|
||||
|
||||
const CustomIconPage({
|
||||
super.key,
|
||||
required this.allIcons,
|
||||
required this.currentIcon,
|
||||
});
|
||||
|
||||
@override
|
||||
State<CustomIconPage> createState() => _CustomIconPageState();
|
||||
}
|
||||
|
||||
class _CustomIconPageState extends State<CustomIconPage> {
|
||||
Map<String, AllIconData> _filteredIcons = {};
|
||||
bool _showSearchBox = false;
|
||||
final bool _autoFocusSearch =
|
||||
PreferenceService.instance.shouldAutoFocusOnSearchBar();
|
||||
final TextEditingController _textController = TextEditingController();
|
||||
String _searchText = "";
|
||||
|
||||
// Used to request focus on the search box when clicked the search icon
|
||||
late FocusNode searchBoxFocusNode;
|
||||
final Set<LogicalKeyboardKey> _pressedKeys = <LogicalKeyboardKey>{};
|
||||
final ScrollController _scrollController = ScrollController();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_filteredIcons = widget.allIcons;
|
||||
_showSearchBox = _autoFocusSearch;
|
||||
searchBoxFocusNode = FocusNode();
|
||||
ServicesBinding.instance.keyboard.addHandler(_handleKeyEvent);
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_textController.dispose();
|
||||
searchBoxFocusNode.dispose();
|
||||
_scrollController.dispose();
|
||||
ServicesBinding.instance.keyboard.removeHandler(_handleKeyEvent);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
bool _handleKeyEvent(KeyEvent event) {
|
||||
if (event is KeyDownEvent) {
|
||||
_pressedKeys.add(event.logicalKey);
|
||||
if ((_pressedKeys.contains(LogicalKeyboardKey.controlLeft) ||
|
||||
_pressedKeys.contains(LogicalKeyboardKey.control) ||
|
||||
_pressedKeys.contains(LogicalKeyboardKey.controlRight)) &&
|
||||
event.logicalKey == LogicalKeyboardKey.keyF) {
|
||||
setState(() {
|
||||
_showSearchBox = true;
|
||||
searchBoxFocusNode.requestFocus();
|
||||
_textController.clear();
|
||||
_searchText = "";
|
||||
});
|
||||
return true;
|
||||
}
|
||||
if (event.logicalKey == LogicalKeyboardKey.escape) {
|
||||
setState(() {
|
||||
_textController.clear();
|
||||
_searchText = "";
|
||||
_showSearchBox = false;
|
||||
_applyFilteringAndRefresh();
|
||||
});
|
||||
return true;
|
||||
}
|
||||
} else if (event is KeyUpEvent) {
|
||||
_pressedKeys.remove(event.logicalKey);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void _applyFilteringAndRefresh() {
|
||||
if (_searchText.isEmpty) {
|
||||
setState(() {
|
||||
_filteredIcons = widget.allIcons;
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
final filteredIcons = <String, AllIconData>{};
|
||||
widget.allIcons.forEach((title, iconData) {
|
||||
if (title.toLowerCase().contains(_searchText.toLowerCase())) {
|
||||
filteredIcons[title] = iconData;
|
||||
}
|
||||
});
|
||||
|
||||
setState(() {
|
||||
_filteredIcons = filteredIcons;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final l10n = context.l10n;
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: !_showSearchBox
|
||||
? const Text('Choose icon')
|
||||
: TextField(
|
||||
autocorrect: false,
|
||||
enableSuggestions: false,
|
||||
autofocus: _autoFocusSearch,
|
||||
controller: _textController,
|
||||
onChanged: (value) {
|
||||
_searchText = value;
|
||||
_applyFilteringAndRefresh();
|
||||
},
|
||||
decoration: InputDecoration(
|
||||
hintText: l10n.searchHint,
|
||||
border: InputBorder.none,
|
||||
focusedBorder: InputBorder.none,
|
||||
),
|
||||
focusNode: searchBoxFocusNode,
|
||||
),
|
||||
actions: [
|
||||
IconButton(
|
||||
icon: _showSearchBox
|
||||
? const Icon(Icons.clear)
|
||||
: const Icon(Icons.search),
|
||||
tooltip: l10n.search,
|
||||
onPressed: () {
|
||||
setState(
|
||||
() {
|
||||
_showSearchBox = !_showSearchBox;
|
||||
if (!_showSearchBox) {
|
||||
_textController.clear();
|
||||
_searchText = "";
|
||||
} else {
|
||||
_searchText = _textController.text;
|
||||
|
||||
// Request focus on the search box
|
||||
searchBoxFocusNode.requestFocus();
|
||||
}
|
||||
_applyFilteringAndRefresh();
|
||||
},
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
body: SafeArea(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Scrollbar(
|
||||
controller: _scrollController,
|
||||
thumbVisibility: true,
|
||||
interactive: true,
|
||||
child: GridView.builder(
|
||||
controller: _scrollController,
|
||||
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount: (MediaQuery.sizeOf(context).width ~/ 90)
|
||||
.clamp(1, double.infinity)
|
||||
.toInt(),
|
||||
crossAxisSpacing: 14,
|
||||
mainAxisSpacing: 14,
|
||||
childAspectRatio: 1,
|
||||
),
|
||||
itemCount: _filteredIcons.length,
|
||||
itemBuilder: (context, index) {
|
||||
final title = _filteredIcons.keys.elementAt(index);
|
||||
final iconData = _filteredIcons[title]!;
|
||||
IconType iconType = iconData.type;
|
||||
String? color = iconData.color;
|
||||
String? slug = iconData.slug;
|
||||
Widget iconWidget;
|
||||
if (iconType == IconType.simpleIcon) {
|
||||
final simpleIconPath = normalizeSimpleIconName(title);
|
||||
iconWidget = IconUtils.instance.getSVGIcon(
|
||||
"assets/simple-icons/icons/$simpleIconPath.svg",
|
||||
title,
|
||||
color,
|
||||
40,
|
||||
context,
|
||||
);
|
||||
} else {
|
||||
iconWidget = IconUtils.instance.getSVGIcon(
|
||||
"assets/custom-icons/icons/${slug ?? title}.svg",
|
||||
title,
|
||||
color,
|
||||
40,
|
||||
context,
|
||||
);
|
||||
}
|
||||
|
||||
return GestureDetector(
|
||||
key: ValueKey(title),
|
||||
onTap: () {
|
||||
final newIcon = AllIconData(
|
||||
title: title,
|
||||
type: iconType,
|
||||
color: color,
|
||||
slug: slug,
|
||||
);
|
||||
Navigator.of(context).pop(newIcon);
|
||||
},
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(
|
||||
width: 1.5,
|
||||
color: title.toLowerCase() ==
|
||||
widget.currentIcon.toLowerCase()
|
||||
? getEnteColorScheme(context)
|
||||
.tagChipSelectedColor
|
||||
: Colors.transparent,
|
||||
),
|
||||
borderRadius: const BorderRadius.all(
|
||||
Radius.circular(12.0),
|
||||
),
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
const SizedBox(height: 8),
|
||||
Expanded(
|
||||
child: iconWidget,
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Padding(
|
||||
padding: title.toLowerCase() ==
|
||||
widget.currentIcon.toLowerCase()
|
||||
? const EdgeInsets.only(left: 2, right: 2)
|
||||
: const EdgeInsets.all(0.0),
|
||||
child: Text(
|
||||
'${title[0].toUpperCase()}${title.substring(1)}',
|
||||
style: getEnteTextTheme(context).mini,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
maxLines: 1,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/services/auth_feature_flag.dart';
|
||||
import 'package:ente_auth/theme/ente_theme.dart';
|
||||
import 'package:ente_auth/ui/settings/data/import_page.dart';
|
||||
import 'package:ente_auth/utils/navigation_util.dart';
|
||||
@@ -9,11 +10,13 @@ import 'package:logging/logging.dart';
|
||||
class HomeEmptyStateWidget extends StatelessWidget {
|
||||
final VoidCallback? onScanTap;
|
||||
final VoidCallback? onManuallySetupTap;
|
||||
final VoidCallback? onImportFromGallery;
|
||||
|
||||
const HomeEmptyStateWidget({
|
||||
super.key,
|
||||
required this.onScanTap,
|
||||
required this.onManuallySetupTap,
|
||||
this.onImportFromGallery,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -22,7 +25,10 @@ class HomeEmptyStateWidget extends StatelessWidget {
|
||||
return SingleChildScrollView(
|
||||
child: Center(
|
||||
child: ConstrainedBox(
|
||||
constraints: const BoxConstraints.tightFor(height: 800, width: 450),
|
||||
constraints: BoxConstraints(
|
||||
minHeight: MediaQuery.of(context).size.height,
|
||||
minWidth: 450,
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 40.0, horizontal: 40),
|
||||
child: Column(
|
||||
@@ -46,7 +52,30 @@ class HomeEmptyStateWidget extends StatelessWidget {
|
||||
width: 400,
|
||||
child: OutlinedButton(
|
||||
onPressed: onScanTap,
|
||||
child: Text(l10n.importScanQrCode),
|
||||
style: OutlinedButton.styleFrom(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||
),
|
||||
child: Text(
|
||||
l10n.importScanQrCode,
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 18),
|
||||
if (PlatformUtil.isMobile() &&
|
||||
FeatureFlagService.instance
|
||||
.isInternalUserOrDebugBuild())
|
||||
SizedBox(
|
||||
width: 400,
|
||||
child: OutlinedButton(
|
||||
onPressed: onImportFromGallery,
|
||||
style: OutlinedButton.styleFrom(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||
),
|
||||
child: const Text(
|
||||
"Import from gallery",
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 18),
|
||||
@@ -54,7 +83,13 @@ class HomeEmptyStateWidget extends StatelessWidget {
|
||||
width: 400,
|
||||
child: OutlinedButton(
|
||||
onPressed: onManuallySetupTap,
|
||||
child: Text(l10n.importEnterSetupKey),
|
||||
style: OutlinedButton.styleFrom(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||
),
|
||||
child: Text(
|
||||
l10n.importEnterSetupKey,
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 54),
|
||||
|
||||
@@ -14,10 +14,13 @@ import 'package:ente_auth/models/code.dart';
|
||||
import 'package:ente_auth/onboarding/model/tag_enums.dart';
|
||||
import 'package:ente_auth/onboarding/view/common/tag_chip.dart';
|
||||
import 'package:ente_auth/onboarding/view/setup_enter_secret_key_page.dart';
|
||||
import 'package:ente_auth/services/auth_feature_flag.dart';
|
||||
import 'package:ente_auth/services/preference_service.dart';
|
||||
import 'package:ente_auth/services/user_service.dart';
|
||||
import 'package:ente_auth/store/code_display_store.dart';
|
||||
import 'package:ente_auth/store/code_store.dart';
|
||||
import 'package:ente_auth/theme/ente_theme.dart';
|
||||
import 'package:ente_auth/theme/text_style.dart';
|
||||
import 'package:ente_auth/ui/account/logout_dialog.dart';
|
||||
import 'package:ente_auth/ui/code_error_widget.dart';
|
||||
import 'package:ente_auth/ui/code_widget.dart';
|
||||
@@ -34,8 +37,10 @@ import 'package:ente_auth/ui/settings_page.dart';
|
||||
import 'package:ente_auth/ui/sort_option_menu.dart';
|
||||
import 'package:ente_auth/ui/tools/app_lock.dart';
|
||||
import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:ente_auth/utils/lock_screen_settings.dart';
|
||||
import 'package:ente_auth/utils/platform_util.dart';
|
||||
import 'package:ente_auth/utils/totp_util.dart';
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
@@ -43,6 +48,7 @@ import 'package:flutter_speed_dial/flutter_speed_dial.dart';
|
||||
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:move_to_background/move_to_background.dart';
|
||||
import 'package:scan/scan.dart';
|
||||
|
||||
class HomePage extends StatefulWidget {
|
||||
const HomePage({super.key});
|
||||
@@ -82,6 +88,7 @@ class _HomePageState extends State<HomePage> {
|
||||
bool isCompactMode = false;
|
||||
|
||||
late CodeSortKey _codeSortKey;
|
||||
final Set<LogicalKeyboardKey> _pressedKeys = <LogicalKeyboardKey>{};
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -108,6 +115,40 @@ class _HomePageState extends State<HomePage> {
|
||||
_showSearchBox = _autoFocusSearch;
|
||||
|
||||
searchBoxFocusNode = FocusNode();
|
||||
ServicesBinding.instance.keyboard.addHandler(_handleKeyEvent);
|
||||
}
|
||||
|
||||
bool _handleKeyEvent(KeyEvent event) {
|
||||
if (event is KeyDownEvent) {
|
||||
_pressedKeys.add(event.logicalKey);
|
||||
bool isMetaKeyPressed = Platform.isMacOS || Platform.isIOS
|
||||
? (_pressedKeys.contains(LogicalKeyboardKey.metaLeft) ||
|
||||
_pressedKeys.contains(LogicalKeyboardKey.meta) ||
|
||||
_pressedKeys.contains(LogicalKeyboardKey.metaRight))
|
||||
: (_pressedKeys.contains(LogicalKeyboardKey.controlLeft) ||
|
||||
_pressedKeys.contains(LogicalKeyboardKey.control) ||
|
||||
_pressedKeys.contains(LogicalKeyboardKey.controlRight));
|
||||
|
||||
if (isMetaKeyPressed && event.logicalKey == LogicalKeyboardKey.keyF) {
|
||||
setState(() {
|
||||
_showSearchBox = true;
|
||||
searchBoxFocusNode.requestFocus();
|
||||
});
|
||||
return true;
|
||||
}
|
||||
if (event.logicalKey == LogicalKeyboardKey.escape) {
|
||||
setState(() {
|
||||
_textController.clear();
|
||||
_searchText = "";
|
||||
_showSearchBox = false;
|
||||
_applyFilteringAndRefresh();
|
||||
});
|
||||
return true;
|
||||
}
|
||||
} else if (event is KeyUpEvent) {
|
||||
_pressedKeys.remove(event.logicalKey);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void _loadCodes() {
|
||||
@@ -207,8 +248,9 @@ class _HomePageState extends State<HomePage> {
|
||||
_streamSubscription?.cancel();
|
||||
_triggerLogoutEvent?.cancel();
|
||||
_iconsChangedEvent?.cancel();
|
||||
_textController.dispose();
|
||||
_textController.removeListener(_applyFilteringAndRefresh);
|
||||
|
||||
ServicesBinding.instance.keyboard.removeHandler(_handleKeyEvent);
|
||||
searchBoxFocusNode.dispose();
|
||||
|
||||
super.dispose();
|
||||
@@ -217,10 +259,11 @@ class _HomePageState extends State<HomePage> {
|
||||
void sortFilteredCodes(List<Code> codes, CodeSortKey sortKey) {
|
||||
switch (sortKey) {
|
||||
case CodeSortKey.issuerName:
|
||||
codes.sort((a, b) => a.issuer.compareTo(b.issuer));
|
||||
codes.sort((a, b) => compareAsciiLowerCaseNatural(a.issuer, b.issuer));
|
||||
break;
|
||||
case CodeSortKey.accountName:
|
||||
codes.sort((a, b) => a.account.compareTo(b.account));
|
||||
codes
|
||||
.sort((a, b) => compareAsciiLowerCaseNatural(a.account, b.account));
|
||||
break;
|
||||
case CodeSortKey.mostFrequentlyUsed:
|
||||
codes.sort((a, b) => b.display.tapCount.compareTo(a.display.tapCount));
|
||||
@@ -319,6 +362,8 @@ class _HomePageState extends State<HomePage> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
LockScreenSettings.instance
|
||||
.setLightMode(getEnteColorScheme(context).isLightTheme);
|
||||
final l10n = context.l10n;
|
||||
isCompactMode = PreferenceService.instance.isCompactMode();
|
||||
|
||||
@@ -353,7 +398,7 @@ class _HomePageState extends State<HomePage> {
|
||||
resizeToAvoidBottomInset: false,
|
||||
appBar: AppBar(
|
||||
title: !_showSearchBox
|
||||
? const Text('Ente Auth')
|
||||
? const Text('Ente Auth', style: brandStyleMedium)
|
||||
: TextField(
|
||||
autocorrect: false,
|
||||
enableSuggestions: false,
|
||||
@@ -372,55 +417,52 @@ class _HomePageState extends State<HomePage> {
|
||||
),
|
||||
centerTitle: PlatformUtil.isDesktop() ? false : true,
|
||||
actions: <Widget>[
|
||||
SortCodeMenuWidget(
|
||||
currentKey: PreferenceService.instance.codeSortKey(),
|
||||
onSelected: (newOrder) async {
|
||||
await PreferenceService.instance.setCodeSortKey(newOrder);
|
||||
if (newOrder == CodeSortKey.manual &&
|
||||
newOrder == _codeSortKey) {
|
||||
await navigateToReorderPage(_allCodes!);
|
||||
}
|
||||
setState(() {
|
||||
_codeSortKey = newOrder;
|
||||
});
|
||||
if (mounted) {
|
||||
_applyFilteringAndRefresh();
|
||||
}
|
||||
},
|
||||
),
|
||||
PlatformUtil.isDesktop()
|
||||
? IconButton(
|
||||
icon: const Icon(Icons.lock),
|
||||
tooltip: l10n.appLock,
|
||||
onPressed: () async {
|
||||
await navigateToLockScreen();
|
||||
},
|
||||
)
|
||||
: const SizedBox.shrink(),
|
||||
const SizedBox(
|
||||
width: 4,
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: SortCodeMenuWidget(
|
||||
currentKey: PreferenceService.instance.codeSortKey(),
|
||||
onSelected: (newOrder) async {
|
||||
await PreferenceService.instance.setCodeSortKey(newOrder);
|
||||
if (newOrder == CodeSortKey.manual &&
|
||||
newOrder == _codeSortKey) {
|
||||
await navigateToReorderPage(_allCodes!);
|
||||
}
|
||||
setState(() {
|
||||
_codeSortKey = newOrder;
|
||||
});
|
||||
if (mounted) {
|
||||
_applyFilteringAndRefresh();
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
if (PlatformUtil.isDesktop())
|
||||
IconButton(
|
||||
icon: const Icon(Icons.lock),
|
||||
tooltip: l10n.appLock,
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
onPressed: () async {
|
||||
await navigateToLockScreen();
|
||||
},
|
||||
),
|
||||
IconButton(
|
||||
icon: _showSearchBox
|
||||
? const Icon(Icons.clear)
|
||||
: const Icon(Icons.search),
|
||||
tooltip: l10n.search,
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
onPressed: () {
|
||||
setState(
|
||||
() {
|
||||
_showSearchBox = !_showSearchBox;
|
||||
if (!_showSearchBox) {
|
||||
_textController.clear();
|
||||
_searchText = "";
|
||||
} else {
|
||||
_searchText = _textController.text;
|
||||
|
||||
// Request focus on the search box
|
||||
searchBoxFocusNode.requestFocus();
|
||||
}
|
||||
_applyFilteringAndRefresh();
|
||||
},
|
||||
);
|
||||
setState(() {
|
||||
_showSearchBox = !_showSearchBox;
|
||||
if (!_showSearchBox) {
|
||||
_textController.clear();
|
||||
_searchText = "";
|
||||
} else {
|
||||
_searchText = _textController.text;
|
||||
searchBoxFocusNode.requestFocus();
|
||||
}
|
||||
_applyFilteringAndRefresh();
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
@@ -441,6 +483,7 @@ class _HomePageState extends State<HomePage> {
|
||||
return HomeEmptyStateWidget(
|
||||
onScanTap: _redirectToScannerPage,
|
||||
onManuallySetupTap: _redirectToManualEntryPage,
|
||||
onImportFromGallery: _importFromGallery,
|
||||
);
|
||||
} else {
|
||||
final anyCodeHasError =
|
||||
@@ -656,6 +699,29 @@ class _HomePageState extends State<HomePage> {
|
||||
_applyFilteringAndRefresh();
|
||||
}
|
||||
|
||||
Future<void> _importFromGallery() async {
|
||||
try {
|
||||
final FilePickerResult? result = await FilePicker.platform.pickFiles(
|
||||
type: FileType.image,
|
||||
allowMultiple: false,
|
||||
);
|
||||
if (result != null) {
|
||||
final path = result.files.single.path!;
|
||||
String? res = await Scan.parse(path);
|
||||
final Code? code = res != null ? Code.fromOTPAuthUrl(res) : null;
|
||||
if (code != null) {
|
||||
await CodeStore.instance.addCode(code);
|
||||
if ((_allCodes?.where((e) => !e.hasError).length ?? 0) > 2) {
|
||||
_focusNewCode(code);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e, s) {
|
||||
await showGenericErrorDialog(context: context, error: e);
|
||||
_logger.severe("Error while importing from gallery", e, s);
|
||||
}
|
||||
}
|
||||
|
||||
Widget _getFab() {
|
||||
if (PlatformUtil.isDesktop()) {
|
||||
return FloatingActionButton(
|
||||
@@ -686,6 +752,15 @@ class _HomePageState extends State<HomePage> {
|
||||
labelWidget: SpeedDialLabelWidget(context.l10n.scanAQrCode),
|
||||
onTap: _redirectToScannerPage,
|
||||
),
|
||||
if (PlatformUtil.isMobile() &&
|
||||
FeatureFlagService.instance.isInternalUserOrDebugBuild())
|
||||
SpeedDialChild(
|
||||
child: const Icon(Icons.image),
|
||||
foregroundColor: Theme.of(context).colorScheme.fabForegroundColor,
|
||||
backgroundColor: Theme.of(context).colorScheme.fabBackgroundColor,
|
||||
labelWidget: const SpeedDialLabelWidget("Import from gallery"),
|
||||
onTap: _importFromGallery,
|
||||
),
|
||||
SpeedDialChild(
|
||||
child: const Icon(Icons.keyboard),
|
||||
foregroundColor: Theme.of(context).colorScheme.fabForegroundColor,
|
||||
|
||||
@@ -5,7 +5,6 @@ import 'package:ente_auth/core/configuration.dart';
|
||||
import 'package:ente_auth/core/errors.dart';
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/models/account/two_factor.dart';
|
||||
import 'package:ente_auth/services/passkey_service.dart';
|
||||
import 'package:ente_auth/services/user_service.dart';
|
||||
import 'package:ente_auth/ui/components/buttons/button_widget.dart';
|
||||
import 'package:ente_auth/ui/components/models/button_type.dart';
|
||||
@@ -20,10 +19,12 @@ import 'package:url_launcher/url_launcher_string.dart';
|
||||
class PasskeyPage extends StatefulWidget {
|
||||
final String sessionID;
|
||||
final String totp2FASessionID;
|
||||
final String accountsUrl;
|
||||
|
||||
const PasskeyPage(
|
||||
this.sessionID, {
|
||||
required this.totp2FASessionID,
|
||||
required this.accountsUrl,
|
||||
super.key,
|
||||
});
|
||||
|
||||
@@ -47,9 +48,8 @@ class _PasskeyPageState extends State<PasskeyPage> {
|
||||
}
|
||||
|
||||
Future<void> launchPasskey() async {
|
||||
final String accountsUrl = PasskeyService.instance.accountsUrl;
|
||||
await launchUrlString(
|
||||
"$accountsUrl/passkeys/verify?"
|
||||
"${widget.accountsUrl}/passkeys/verify?"
|
||||
"passkeySessionID=${widget.sessionID}"
|
||||
"&redirect=enteauth://passkey"
|
||||
"&clientPackage=io.ente.auth",
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/models/code.dart';
|
||||
import 'package:ente_auth/services/preference_service.dart';
|
||||
import 'package:ente_auth/store/code_store.dart';
|
||||
import 'package:ente_auth/theme/ente_theme.dart';
|
||||
import 'package:ente_auth/ui/code_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
@@ -16,37 +17,58 @@ class ReorderCodesPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _ReorderCodesPageState extends State<ReorderCodesPage> {
|
||||
int selectedSortOption = 2;
|
||||
bool hasChanged = false;
|
||||
final logger = Logger('ReorderCodesPage');
|
||||
|
||||
final ScrollController _scrollController = ScrollController();
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_scrollController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final bool isCompactMode = PreferenceService.instance.isCompactMode();
|
||||
|
||||
return PopScope(
|
||||
canPop: false,
|
||||
onPopInvokedWithResult: (didPop, result) async {
|
||||
if (!didPop) {
|
||||
final hasSaved = await saveUpadedIndexes();
|
||||
if (hasSaved) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text("Custom order"),
|
||||
leading: IconButton(
|
||||
icon: const Icon(Icons.arrow_back),
|
||||
onPressed: () async {
|
||||
Navigator.of(context).pop();
|
||||
}
|
||||
}
|
||||
},
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(context.l10n.editOrder),
|
||||
leading: IconButton(
|
||||
icon: const Icon(Icons.arrow_back),
|
||||
onPressed: () async {
|
||||
},
|
||||
),
|
||||
actions: [
|
||||
GestureDetector(
|
||||
onTap: () async {
|
||||
final hasSaved = await saveUpadedIndexes();
|
||||
if (hasSaved) {
|
||||
Navigator.of(context).pop();
|
||||
}
|
||||
},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(right: 20),
|
||||
child: Text(
|
||||
context.l10n.save,
|
||||
style: TextStyle(
|
||||
color: hasChanged
|
||||
? getEnteColorScheme(context).textBase
|
||||
: getEnteColorScheme(context).strokeMuted,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
body: ReorderableListView(
|
||||
],
|
||||
),
|
||||
body: Scrollbar(
|
||||
controller: _scrollController,
|
||||
thumbVisibility: true,
|
||||
interactive: true,
|
||||
child: ReorderableListView(
|
||||
scrollController: _scrollController,
|
||||
buildDefaultDragHandles: false,
|
||||
proxyDecorator:
|
||||
(Widget child, int index, Animation<double> animation) {
|
||||
@@ -61,24 +83,18 @@ class _ReorderCodesPageState extends State<ReorderCodesPage> {
|
||||
},
|
||||
children: [
|
||||
for (final code in widget.codes)
|
||||
selectedSortOption == 2
|
||||
? ReorderableDragStartListener(
|
||||
key: ValueKey('${code.hashCode}_${code.generatedID}'),
|
||||
index: widget.codes.indexOf(code),
|
||||
child: CodeWidget(
|
||||
key: ValueKey(code.generatedID),
|
||||
code,
|
||||
isCompactMode: isCompactMode,
|
||||
),
|
||||
)
|
||||
: CodeWidget(
|
||||
key: ValueKey('${code.hashCode}_${code.generatedID}'),
|
||||
code,
|
||||
isCompactMode: isCompactMode,
|
||||
),
|
||||
ReorderableDragStartListener(
|
||||
key: ValueKey('${code.hashCode}_${code.generatedID}'),
|
||||
index: widget.codes.indexOf(code),
|
||||
child: CodeWidget(
|
||||
key: ValueKey(code.generatedID),
|
||||
code,
|
||||
isCompactMode: isCompactMode,
|
||||
),
|
||||
),
|
||||
],
|
||||
onReorder: (oldIndex, newIndex) {
|
||||
if (selectedSortOption == 2) updateCodeIndex(oldIndex, newIndex);
|
||||
updateCodeIndex(oldIndex, newIndex);
|
||||
},
|
||||
),
|
||||
),
|
||||
@@ -97,6 +113,7 @@ class _ReorderCodesPageState extends State<ReorderCodesPage> {
|
||||
if (oldIndex < newIndex) newIndex -= 1;
|
||||
final Code code = widget.codes.removeAt(oldIndex);
|
||||
widget.codes.insert(newIndex, code);
|
||||
hasChanged = true;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:ente_auth/l10n/l10n.dart';
|
||||
import 'package:ente_auth/services/deduplication_service.dart';
|
||||
import 'package:ente_auth/theme/ente_theme.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/settings/common_settings.dart';
|
||||
import 'package:ente_auth/ui/settings/data/duplicate_code_page.dart';
|
||||
import 'package:ente_auth/ui/settings/data/export_widget.dart';
|
||||
import 'package:ente_auth/ui/settings/data/import_page.dart';
|
||||
import 'package:ente_auth/utils/dialog_util.dart';
|
||||
import 'package:ente_auth/utils/navigation_util.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
@@ -53,6 +58,35 @@ class DataSectionWidget extends StatelessWidget {
|
||||
},
|
||||
),
|
||||
sectionOptionSpacing,
|
||||
MenuItemWidget(
|
||||
captionedTextWidget: CaptionedTextWidget(
|
||||
title: l10n.duplicateCodes,
|
||||
),
|
||||
pressedColor: getEnteColorScheme(context).fillFaint,
|
||||
trailingIcon: Icons.chevron_right_outlined,
|
||||
trailingIconIsMuted: true,
|
||||
onTap: () async {
|
||||
final List<DuplicateCodes> duplicateCodes =
|
||||
await DeduplicationService.instance.getDuplicateCodes();
|
||||
if (duplicateCodes.isEmpty) {
|
||||
unawaited(
|
||||
showChoiceDialog(
|
||||
context,
|
||||
title: l10n.noDuplicates,
|
||||
firstButtonLabel: "OK",
|
||||
secondButtonLabel: null,
|
||||
body: l10n.youveNoDuplicateCodesThatCanBeCleared,
|
||||
),
|
||||
);
|
||||
return;
|
||||
}
|
||||
await routeToPage(
|
||||
context,
|
||||
DuplicateCodePage(duplicateCodes: duplicateCodes),
|
||||
);
|
||||
},
|
||||
),
|
||||
sectionOptionSpacing,
|
||||
]);
|
||||
return Column(
|
||||
children: children,
|
||||
|
||||