Compare commits
584 Commits
v1.1.5+for
...
v1.2.0+for
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
92beac8dff | ||
|
|
ed1fdba9a5 | ||
|
|
5e194e3079 | ||
|
|
27c2791d6c | ||
|
|
d6bcc9c156 | ||
|
|
4c85fd4387 | ||
|
|
80d529d503 | ||
|
|
c5a19a2334 | ||
|
|
16857bebd9 | ||
|
|
1c340b7c66 | ||
|
|
7d9d8f0aae | ||
|
|
21fc35230c | ||
|
|
fc67c82040 | ||
|
|
4d04741fe0 | ||
|
|
5c7fe9dcb5 | ||
|
|
c3aa3af650 | ||
|
|
4a695b2a83 | ||
|
|
a8ba50e762 | ||
|
|
f79fc66578 | ||
|
|
4144639b75 | ||
|
|
7ea42c8403 | ||
|
|
af9b527f35 | ||
|
|
df58cdd86e | ||
|
|
507fcea646 | ||
|
|
5cd1e88da9 | ||
|
|
e2293899f0 | ||
|
|
1c743ee3a6 | ||
|
|
daf4c69df4 | ||
|
|
14d3add7b3 | ||
|
|
7e3193a708 | ||
|
|
545aa16cd3 | ||
|
|
4dcf32d13a | ||
|
|
e0aba23e80 | ||
|
|
b19ae9bb10 | ||
|
|
d20f8669e8 | ||
|
|
1567e5aba4 | ||
|
|
6b9b6710cf | ||
|
|
b07858a66d | ||
|
|
c05d0b600e | ||
|
|
0a8d73dc0b | ||
|
|
fd99f3caa1 | ||
|
|
794c4e5227 | ||
|
|
f5df8225d1 | ||
|
|
42c6446125 | ||
|
|
e3486ebf7c | ||
|
|
c0115f068c | ||
|
|
41682d1147 | ||
|
|
dd582c4bee | ||
|
|
3a0d314af0 | ||
|
|
a00ca599c1 | ||
|
|
263b5b10b6 | ||
|
|
1068fa3120 | ||
|
|
569f288c00 | ||
|
|
dfd94511a5 | ||
|
|
2271f336b0 | ||
|
|
4486feee76 | ||
|
|
baaff2573c | ||
|
|
b9c3b23757 | ||
|
|
0c1fd22253 | ||
|
|
466c489b4d | ||
|
|
625f715e26 | ||
|
|
61caec4060 | ||
|
|
df233eb1e2 | ||
|
|
78225c482f | ||
|
|
c55703f0ba | ||
|
|
3b26dd44a0 | ||
|
|
2a1386a87a | ||
|
|
fb32430f96 | ||
|
|
2288c53adc | ||
|
|
84b7b67045 | ||
|
|
d233f039a3 | ||
|
|
8b01955a18 | ||
|
|
427aa1722d | ||
|
|
2a7eb09998 | ||
|
|
f2f48fce79 | ||
|
|
634408b8cb | ||
|
|
f050e3f22d | ||
|
|
8e9531b718 | ||
|
|
00457c1edb | ||
|
|
aa14986fcc | ||
|
|
1493cd9034 | ||
|
|
b2b295ee5b | ||
|
|
58847f80fd | ||
|
|
ed9db7b5fd | ||
|
|
433a7c6b7a | ||
|
|
7692f587ef | ||
|
|
67583150b2 | ||
|
|
ed49422f76 | ||
|
|
63078aaa3e | ||
|
|
9246c43ffe | ||
|
|
15f02863c0 | ||
|
|
be1921879d | ||
|
|
61b43e0112 | ||
|
|
b25b482630 | ||
|
|
1d44875a65 | ||
|
|
0dc5004898 | ||
|
|
0df86e315b | ||
|
|
31d3fa77de | ||
|
|
ec74b18c1a | ||
|
|
de36c31f45 | ||
|
|
43bcf0008e | ||
|
|
ac64087018 | ||
|
|
af77865a46 | ||
|
|
51a4a41147 | ||
|
|
987474462d | ||
|
|
c34ab79c6c | ||
|
|
8bac664a34 | ||
|
|
d77647c354 | ||
|
|
e8ef6ef2c7 | ||
|
|
a87cf640dd | ||
|
|
bcb69f1f47 | ||
|
|
0bdcc9057b | ||
|
|
f92977fddf | ||
|
|
230a59266d | ||
|
|
d97f3ed5c8 | ||
|
|
aae2cd2b65 | ||
|
|
8b8763bffc | ||
|
|
35758e720d | ||
|
|
fa48c80ab1 | ||
|
|
1621dbc67a | ||
|
|
4ece7b883f | ||
|
|
66a5b749fe | ||
|
|
49a80767a7 | ||
|
|
7683b464f3 | ||
|
|
64fbbb2f07 | ||
|
|
9003f690d1 | ||
|
|
8ffaca61bd | ||
|
|
f6c3b10c2b | ||
|
|
8933c0647e | ||
|
|
d68a3a6ef5 | ||
|
|
4475bd039a | ||
|
|
98dc7d0524 | ||
|
|
65948030a6 | ||
|
|
89edfaaa6d | ||
|
|
10372804e4 | ||
|
|
d1dd7d203b | ||
|
|
c6aed0b52e | ||
|
|
5f902d25a9 | ||
|
|
c43bed665d | ||
|
|
d70a2ae5b3 | ||
|
|
1fdf36b4d8 | ||
|
|
5d1cd0f4f6 | ||
|
|
3505460372 | ||
|
|
eeb91e867e | ||
|
|
c87062ee31 | ||
|
|
fb66fa1c6f | ||
|
|
f80af9f5bf | ||
|
|
85157ffe25 | ||
|
|
59f95159b7 | ||
|
|
703dbd4c8a | ||
|
|
1e75f9f1c2 | ||
|
|
d0860333a9 | ||
|
|
64b3951c25 | ||
|
|
e89e6cc3f5 | ||
|
|
3c2985fa6e | ||
|
|
bee01429f2 | ||
|
|
a96431cc00 | ||
|
|
bf9e6f54cf | ||
|
|
63084857a3 | ||
|
|
d8b7038972 | ||
|
|
976e71db25 | ||
|
|
2b59c2c080 | ||
|
|
5929b0c6b9 | ||
|
|
e160a05411 | ||
|
|
78d8f075a9 | ||
|
|
3784873cad | ||
|
|
528f8aaead | ||
|
|
4ba9f1ecaf | ||
|
|
697a666545 | ||
|
|
0ee6798424 | ||
|
|
9a95deb346 | ||
|
|
0155ef2675 | ||
|
|
858195f813 | ||
|
|
b681c7dfeb | ||
|
|
b89f931ffd | ||
|
|
1658e56729 | ||
|
|
2b7d8292ed | ||
|
|
494abdfeee | ||
|
|
426f3fe95b | ||
|
|
b7a96778b8 | ||
|
|
125cd525bf | ||
|
|
ed281a4619 | ||
|
|
f418a5a2c4 | ||
|
|
6d8971df64 | ||
|
|
8dd3343906 | ||
|
|
f65fc9299a | ||
|
|
ac00889001 | ||
|
|
7af0a3f351 | ||
|
|
2734f88206 | ||
|
|
c6cd8ca14b | ||
|
|
2fd61f738f | ||
|
|
d3575b60fe | ||
|
|
dce8808d62 | ||
|
|
db97dadb25 | ||
|
|
34116d9914 | ||
|
|
bc676e6eb3 | ||
|
|
ef2cb31b6c | ||
|
|
c45dc96316 | ||
|
|
f9b34b53c1 | ||
|
|
e128e144b1 | ||
|
|
c68ed6088f | ||
|
|
b66ad0e6f5 | ||
|
|
02a470bd7d | ||
|
|
9407bd9e86 | ||
|
|
825adda664 | ||
|
|
0a22c14eec | ||
|
|
5452da6a65 | ||
|
|
ffb321e36f | ||
|
|
eaecff52c9 | ||
|
|
b141a9ac74 | ||
|
|
a890f21ace | ||
|
|
4e72e5c234 | ||
|
|
1def56057a | ||
|
|
d99f6c7167 | ||
|
|
0d5d169e5f | ||
|
|
90e55c1043 | ||
|
|
780c5c345c | ||
|
|
c2bc0a4055 | ||
|
|
8032de4595 | ||
|
|
bd3f5018ed | ||
|
|
91c4e5e51f | ||
|
|
ca1cb668f3 | ||
|
|
a12ca697ed | ||
|
|
3ccb629a4e | ||
|
|
4db041c28f | ||
|
|
bdcf4a5438 | ||
|
|
c042050295 | ||
|
|
f87a87aba1 | ||
|
|
b3a88c4a7c | ||
|
|
9729663cb4 | ||
|
|
f66e6197d3 | ||
|
|
4ff940030d | ||
|
|
da8b88dfc6 | ||
|
|
ed13b1074d | ||
|
|
c5e985f6a4 | ||
|
|
160bb4e272 | ||
|
|
f89a3e644a | ||
|
|
4cfd0db899 | ||
|
|
c6cb992b92 | ||
|
|
1b3ea6cdbe | ||
|
|
79323e392b | ||
|
|
c6c985c1db | ||
|
|
8988b22a52 | ||
|
|
692ede503c | ||
|
|
3be04343b8 | ||
|
|
521157315b | ||
|
|
b4d7b34767 | ||
|
|
f912e90691 | ||
|
|
61ff2ce7e4 | ||
|
|
0316ec340a | ||
|
|
3975e8c280 | ||
|
|
37c40e4a8d | ||
|
|
7dc691deae | ||
|
|
ab5dfe6f62 | ||
|
|
b445e6f79f | ||
|
|
5f0cd72303 | ||
|
|
53dfa08300 | ||
|
|
321c23c52e | ||
|
|
dd6cb4af74 | ||
|
|
54b6aaec09 | ||
|
|
624d21d18b | ||
|
|
5c27155507 | ||
|
|
35552cfbef | ||
|
|
31bbeef24e | ||
|
|
5ee42c0294 | ||
|
|
3d08f768f8 | ||
|
|
603e3d7d65 | ||
|
|
eb8f71aa31 | ||
|
|
c7b5b41128 | ||
|
|
98dbff38ff | ||
|
|
d9317f6eb1 | ||
|
|
4b5dff8742 | ||
|
|
2256ef6232 | ||
|
|
182bc09023 | ||
|
|
a60e5040ea | ||
|
|
c2a6e17fa5 | ||
|
|
85931e2a65 | ||
|
|
da94cd801b | ||
|
|
594570f9a1 | ||
|
|
548a14ab60 | ||
|
|
40016332ff | ||
|
|
2b9746232b | ||
|
|
1fe31e9262 | ||
|
|
b2a152a728 | ||
|
|
f93d9a0c35 | ||
|
|
af9d9c3f48 | ||
|
|
5cae41a500 | ||
|
|
d6c560e015 | ||
|
|
a2679a3841 | ||
|
|
d826e0172b | ||
|
|
f593f5eb58 | ||
|
|
d29565af9c | ||
|
|
7c3cef32ed | ||
|
|
2c15796108 | ||
|
|
553a3ef7e1 | ||
|
|
a7dfb671ce | ||
|
|
929218d74c | ||
|
|
a5ec9695df | ||
|
|
2784828a93 | ||
|
|
84657e9529 | ||
|
|
110375462e | ||
|
|
09e385633e | ||
|
|
f7410a510f | ||
|
|
20511fd39d | ||
|
|
dbacbe0341 | ||
|
|
bd8da39a19 | ||
|
|
675a353494 | ||
|
|
7b23ca1c96 | ||
|
|
61e8c6f435 | ||
|
|
a41b8dbb01 | ||
|
|
fe525f9242 | ||
|
|
7cbae9c0a9 | ||
|
|
93ac0a103f | ||
|
|
3b11787984 | ||
|
|
7b6fcaf3db | ||
|
|
11b838f394 | ||
|
|
38bd5eb68e | ||
|
|
1dc8d66b3f | ||
|
|
9f64e56923 | ||
|
|
a9e84678b3 | ||
|
|
d7c5c0074d | ||
|
|
97e148f4c8 | ||
|
|
e83bd039b3 | ||
|
|
a30d288b13 | ||
|
|
ded14711ac | ||
|
|
cece9d4aa1 | ||
|
|
f7f56c7a9b | ||
|
|
613a9de40e | ||
|
|
9ed8ad1382 | ||
|
|
7498118800 | ||
|
|
b894827607 | ||
|
|
8788fb0b27 | ||
|
|
62d4c62888 | ||
|
|
572d092f88 | ||
|
|
2ff771391c | ||
|
|
087e55277c | ||
|
|
a2d45fbbc5 | ||
|
|
59262fe345 | ||
|
|
ffc36f7346 | ||
|
|
549ace65f5 | ||
|
|
c76bec2298 | ||
|
|
290e47386e | ||
|
|
3d96475c21 | ||
|
|
b62fe06187 | ||
|
|
c0dc2b8392 | ||
|
|
e777bbb215 | ||
|
|
014f9f4d99 | ||
|
|
86bfd3d09f | ||
|
|
21d6f6da4c | ||
|
|
f826e0ceef | ||
|
|
458ad0f51a | ||
|
|
9a0ff42ec2 | ||
|
|
18dae448ec | ||
|
|
fc36a8cc8f | ||
|
|
a390df2b9e | ||
|
|
6f61d3f0e3 | ||
|
|
3a4e8ebdf4 | ||
|
|
537242b277 | ||
|
|
97eece59ea | ||
|
|
fc88d42e50 | ||
|
|
ec74712e55 | ||
|
|
12e1ccf439 | ||
|
|
24b8d5ce7c | ||
|
|
46c9c83b63 | ||
|
|
526a9fec03 | ||
|
|
ca20f3b906 | ||
|
|
af8c8a6248 | ||
|
|
2940e5d3d8 | ||
|
|
c98b001c9f | ||
|
|
1fc1c95d6e | ||
|
|
e4d0c4eda5 | ||
|
|
801d11c8e6 | ||
|
|
8143374929 | ||
|
|
df2ff9f874 | ||
|
|
4bac852d37 | ||
|
|
862a173392 | ||
|
|
bd47b31c65 | ||
|
|
aefb7f2e23 | ||
|
|
e509b8afa4 | ||
|
|
7b94f7258f | ||
|
|
8d81efae4e | ||
|
|
5b0b80277c | ||
|
|
60293d5a65 | ||
|
|
09b4aff9f5 | ||
|
|
7326cbeb14 | ||
|
|
91bd3fa4ea | ||
|
|
3cc6a9905e | ||
|
|
f01bfcd372 | ||
|
|
81b4365a14 | ||
|
|
7ab28a6db6 | ||
|
|
3bb548cf22 | ||
|
|
ba788d1b34 | ||
|
|
f51b01bcd9 | ||
|
|
361c97a9df | ||
|
|
f34153e601 | ||
|
|
67240acb48 | ||
|
|
4395dbfa7c | ||
|
|
48b0207636 | ||
|
|
f7b8ed519c | ||
|
|
eba88f2c0a | ||
|
|
8d95355727 | ||
|
|
e05a67c4ab | ||
|
|
5db91627a1 | ||
|
|
7e473aa8a8 | ||
|
|
1e1edd698d | ||
|
|
aa42a0a4c4 | ||
|
|
ad61596f66 | ||
|
|
bd518b3038 | ||
|
|
db3129ab11 | ||
|
|
57a38a83e4 | ||
|
|
c0de43e2f3 | ||
|
|
c6e29c9ce4 | ||
|
|
35e8f5eddf | ||
|
|
40ed72aeff | ||
|
|
75033cf42e | ||
|
|
4a29a63d50 | ||
|
|
595a6847dc | ||
|
|
64f403b644 | ||
|
|
314517c378 | ||
|
|
b90fc55b3f | ||
|
|
cd57966810 | ||
|
|
8c0851e2b5 | ||
|
|
b9efa434d2 | ||
|
|
adc085a313 | ||
|
|
a2a2f67239 | ||
|
|
c30fba61ca | ||
|
|
f09b37d28f | ||
|
|
6cbc89b01d | ||
|
|
ffd538fbd0 | ||
|
|
1f27f66432 | ||
|
|
25f302f62f | ||
|
|
d54eb6ed73 | ||
|
|
24a6d77777 | ||
|
|
5cbebe7ec6 | ||
|
|
a31c310ffa | ||
|
|
752d0b5ca9 | ||
|
|
170131188a | ||
|
|
3269613139 | ||
|
|
52cc74fb85 | ||
|
|
d7d09b1d56 | ||
|
|
797f2b5929 | ||
|
|
fa5053fe38 | ||
|
|
c682c249bd | ||
|
|
01c229c7c1 | ||
|
|
83f39d6b22 | ||
|
|
715ec6e7c6 | ||
|
|
b6fa34e87f | ||
|
|
6ff14cc7a1 | ||
|
|
d606ce89e0 | ||
|
|
41e80f1d24 | ||
|
|
8decd66e26 | ||
|
|
c033849fb4 | ||
|
|
14054b2198 | ||
|
|
3c3a6712bd | ||
|
|
6a97ed41e0 | ||
|
|
bfedd6c953 | ||
|
|
23d72346b3 | ||
|
|
e9510875ea | ||
|
|
84d7b6c48f | ||
|
|
5f4af7024d | ||
|
|
3b16eb807e | ||
|
|
ef6b52049f | ||
|
|
a7b035bb8e | ||
|
|
645216b8eb | ||
|
|
2b1c18635e | ||
|
|
bb7a76617e | ||
|
|
ab50e7861a | ||
|
|
d52b88c816 | ||
|
|
e5d0a2a14c | ||
|
|
11e9db7ded | ||
|
|
23c1a78d01 | ||
|
|
e524423191 | ||
|
|
7286e71442 | ||
|
|
71681458a1 | ||
|
|
4d4b3c8867 | ||
|
|
681d808a74 | ||
|
|
876a0b27a6 | ||
|
|
9dce3b9a17 | ||
|
|
f77b487520 | ||
|
|
f3c73a5c8a | ||
|
|
37502b3747 | ||
|
|
309e84d14c | ||
|
|
ff464bef9f | ||
|
|
dfa5cd65f3 | ||
|
|
ccba5969a5 | ||
|
|
03baef713d | ||
|
|
a3617349bb | ||
|
|
e57b22d2fc | ||
|
|
6aabaa497d | ||
|
|
6caa142ead | ||
|
|
b01e6e30a4 | ||
|
|
5e3a612828 | ||
|
|
b498e7e83e | ||
|
|
7508643c89 | ||
|
|
24d2189399 | ||
|
|
4e470f34fd | ||
|
|
e3ca6448f2 | ||
|
|
9dadac7d93 | ||
|
|
0715bd0aba | ||
|
|
92772e7ee0 | ||
|
|
f9f6c879e0 | ||
|
|
ec7623f5c5 | ||
|
|
0163242258 | ||
|
|
3f9c8247c6 | ||
|
|
20865ad202 | ||
|
|
b5ac895b15 | ||
|
|
fbd550228b | ||
|
|
238758fc0b | ||
|
|
328a4339a4 | ||
|
|
747d958507 | ||
|
|
8622160e62 | ||
|
|
df1042e87d | ||
|
|
a5c6c11f09 | ||
|
|
7bd602cd45 | ||
|
|
2065468f1f | ||
|
|
7f9061d0c8 | ||
|
|
00a638393e | ||
|
|
f21194f877 | ||
|
|
1772351fc5 | ||
|
|
1030fc5e16 | ||
|
|
bef3ae96f6 | ||
|
|
c9fa5b2104 | ||
|
|
79cd8c0805 | ||
|
|
2b80420794 | ||
|
|
b8e18613b1 | ||
|
|
87289e4804 | ||
|
|
ba3a06a782 | ||
|
|
2764ef0417 | ||
|
|
ae0e89aa31 | ||
|
|
d0e99cc517 | ||
|
|
604fb01d6c | ||
|
|
256a1687d1 | ||
|
|
ea1ae58e54 | ||
|
|
fe9d119fe2 | ||
|
|
4a199533c1 | ||
|
|
7e785f1b6c | ||
|
|
85b4824ea2 | ||
|
|
d39af74bcc | ||
|
|
bfb52af454 | ||
|
|
5630e5d488 | ||
|
|
29780ecf22 | ||
|
|
a8b542feaa | ||
|
|
e85b182da7 | ||
|
|
84e9195869 | ||
|
|
7a739457c9 | ||
|
|
30905a7c36 | ||
|
|
0326a6834a | ||
|
|
7c75a67f9f | ||
|
|
1aa0fbf7d5 | ||
|
|
9adce93645 | ||
|
|
b7392ef62d | ||
|
|
6b55c90a93 | ||
|
|
9e9cd9ea4e | ||
|
|
ef91fb9e06 | ||
|
|
2f49c525b6 | ||
|
|
f78f179071 | ||
|
|
6ed310f8ce | ||
|
|
8da5a32b48 | ||
|
|
74fcdaa223 | ||
|
|
6b77b8fbbb | ||
|
|
9f9fdca53d | ||
|
|
540317017f | ||
|
|
567174fcde | ||
|
|
262bc1dcbe | ||
|
|
b931928434 | ||
|
|
7e2057a847 | ||
|
|
4a9b98f534 | ||
|
|
7bf45581e3 | ||
|
|
61a7fe6217 | ||
|
|
efa1a3f14f | ||
|
|
925866c3f0 | ||
|
|
7291ec6f88 | ||
|
|
16c9203956 | ||
|
|
b08f104663 | ||
|
|
82b7c6c290 | ||
|
|
63009a332f | ||
|
|
95e56db159 | ||
|
|
48f981036b | ||
|
|
79be77f986 | ||
|
|
4fafab19fc | ||
|
|
cd71f6e858 | ||
|
|
63d5068c2c | ||
|
|
a9bc7fdeb7 | ||
|
|
89dc2608bc |
@@ -9,10 +9,10 @@ android {
|
||||
applicationId "org.joinmastodon.android.sk"
|
||||
minSdk 23
|
||||
targetSdk 33
|
||||
versionCode 74
|
||||
versionName "1.1.5+fork.74"
|
||||
versionCode 77
|
||||
versionName "1.2.0+fork.77"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
resConfigs "ar-rSA", "be-rBY", "bn-rBD", "bs-rBA", "ca-rES", "cs-rCZ", "de-rDE", "el-rGR", "es-rES", "eu-rES", "fi-rFI", "fil-rPH", "fr-rFR", "ga-rIE", "gd-rGB", "gl-rES", "hi-rIN", "hr-rHR", "hu-rHU", "hy-rAM", "in-rID", "is-rIS", "it-rIT", "iw-rIL", "ja-rJP", "kab", "ko-rKR", "nl-rNL", "oc-rFR", "pl-rPL", "pt-rBR", "pt-rPT", "ro-rRO", "ru-rRU", "si-rLK", "sl-rSI", "sv-rSE", "th-rTH", "tr-rTR", "uk-rUA", "vi-rVN", "zh-rCN", "zh-rTW"
|
||||
resConfigs "ar-rSA", "be-rBY", "bn-rBD", "bs-rBA", "ca-rES", "cs-rCZ", "da-rDK", "de-rDE", "el-rGR", "es-rES", "eu-rES", "fa-rIR", "fi-rFI", "fil-rPH", "fr-rFR", "ga-rIE", "gd-rGB", "gl-rES", "hi-rIN", "hr-rHR", "hu-rHU", "hy-rAM", "ig-rNG", "in-rID", "is-rIS", "it-rIT", "iw-rIL", "ja-rJP", "kab", "ko-rKR", "my-rMM", "nl-rNL", "no-rNO", "oc-rFR", "pl-rPL", "pt-rBR", "pt-rPT", "ro-rRO", "ru-rRU", "si-rLK", "sl-rSI", "sv-rSE", "th-rTH", "tr-rTR", "uk-rUA", "vi-rVN", "zh-rCN", "zh-rTW"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
|
||||
@@ -43,6 +43,7 @@ public class GlobalUserPreferences{
|
||||
public static boolean bottomEncoding;
|
||||
public static boolean collapseLongPosts;
|
||||
public static boolean spectatorMode;
|
||||
public static boolean autoHideFab;
|
||||
public static String publishButtonText;
|
||||
public static ThemePreference theme;
|
||||
public static ColorPreference color;
|
||||
@@ -91,6 +92,7 @@ public class GlobalUserPreferences{
|
||||
bottomEncoding=prefs.getBoolean("bottomEncoding", false);
|
||||
collapseLongPosts=prefs.getBoolean("collapseLongPosts", true);
|
||||
spectatorMode=prefs.getBoolean("spectatorMode", false);
|
||||
autoHideFab=prefs.getBoolean("autoHideFab", true);
|
||||
publishButtonText=prefs.getString("publishButtonText", "");
|
||||
theme=ThemePreference.values()[prefs.getInt("theme", 0)];
|
||||
recentLanguages=fromJson(prefs.getString("recentLanguages", null), recentLanguagesType, new HashMap<>());
|
||||
@@ -131,6 +133,7 @@ public class GlobalUserPreferences{
|
||||
.putBoolean("prefixRepliesWithRe", prefixRepliesWithRe)
|
||||
.putBoolean("collapseLongPosts", collapseLongPosts)
|
||||
.putBoolean("spectatorMode", spectatorMode)
|
||||
.putBoolean("autoHideFab", autoHideFab)
|
||||
.putString("publishButtonText", publishButtonText)
|
||||
.putBoolean("bottomEncoding", bottomEncoding)
|
||||
.putInt("theme", theme.ordinal())
|
||||
|
||||
@@ -3,6 +3,10 @@ package org.joinmastodon.android.fragments;
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.animation.TranslateAnimation;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.api.requests.accounts.GetAccountStatuses;
|
||||
|
||||
@@ -16,6 +16,7 @@ import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowInsets;
|
||||
import android.view.animation.TranslateAnimation;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.Toolbar;
|
||||
|
||||
@@ -31,12 +32,10 @@ import org.joinmastodon.android.model.Poll;
|
||||
import org.joinmastodon.android.model.Relationship;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.ui.BetterItemAnimator;
|
||||
import org.joinmastodon.android.ui.PhotoLayoutHelper;
|
||||
import org.joinmastodon.android.ui.TileGridLayoutManager;
|
||||
import org.joinmastodon.android.ui.displayitems.ExtendedFooterStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.GapStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.HeaderStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.ImageStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.MediaGridStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.PollFooterStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.PollOptionStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.StatusDisplayItem;
|
||||
@@ -44,8 +43,10 @@ import org.joinmastodon.android.ui.displayitems.TextStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.WarningFilteredStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.photoviewer.PhotoViewer;
|
||||
import org.joinmastodon.android.ui.photoviewer.PhotoViewerHost;
|
||||
import org.joinmastodon.android.ui.utils.MediaAttachmentViewController;
|
||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||
import org.joinmastodon.android.ui.views.ImageAttachmentFrameLayout;
|
||||
import org.joinmastodon.android.ui.views.MediaGridLayout;
|
||||
import org.joinmastodon.android.utils.TypedObjectPool;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -56,7 +57,6 @@ import java.util.stream.Collectors;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import me.grishka.appkit.Nav;
|
||||
@@ -75,10 +75,12 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
protected DisplayItemsAdapter adapter;
|
||||
protected String accountID;
|
||||
protected PhotoViewer currentPhotoViewer;
|
||||
protected ImageButton fab;
|
||||
protected int scrollDiff = 0;
|
||||
protected HashMap<String, Account> knownAccounts=new HashMap<>();
|
||||
protected HashMap<String, Relationship> relationships=new HashMap<>();
|
||||
protected Rect tmpRect=new Rect();
|
||||
protected ImageButton fab;
|
||||
protected TypedObjectPool<MediaGridStatusDisplayItem.GridItemType, MediaAttachmentViewController> attachmentViewsPool=new TypedObjectPool<>(this::makeNewMediaAttachmentView);
|
||||
|
||||
public BaseStatusListFragment(){
|
||||
super(20);
|
||||
@@ -188,21 +190,21 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openPhotoViewer(String parentID, Status _status, int attachmentIndex){
|
||||
final Status status=_status.reblog!=null ? _status.reblog : _status;
|
||||
public void openPhotoViewer(String parentID, Status _status, int attachmentIndex, MediaGridStatusDisplayItem.Holder gridHolder){
|
||||
final Status status=_status.getContentStatus();
|
||||
currentPhotoViewer=new PhotoViewer(getActivity(), status.mediaAttachments, attachmentIndex, new PhotoViewer.Listener(){
|
||||
private ImageStatusDisplayItem.Holder<?> transitioningHolder;
|
||||
private MediaAttachmentViewController transitioningHolder;
|
||||
|
||||
@Override
|
||||
public void setPhotoViewVisibility(int index, boolean visible){
|
||||
ImageStatusDisplayItem.Holder<?> holder=findPhotoViewHolder(index);
|
||||
MediaAttachmentViewController holder=findPhotoViewHolder(index);
|
||||
if(holder!=null)
|
||||
holder.photo.setAlpha(visible ? 1f : 0f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean startPhotoViewTransition(int index, @NonNull Rect outRect, @NonNull int[] outCornerRadius){
|
||||
ImageStatusDisplayItem.Holder<?> holder=findPhotoViewHolder(index);
|
||||
MediaAttachmentViewController holder=findPhotoViewHolder(index);
|
||||
if(holder!=null){
|
||||
transitioningHolder=holder;
|
||||
View view=transitioningHolder.photo;
|
||||
@@ -210,7 +212,8 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
view.getLocationOnScreen(pos);
|
||||
outRect.set(pos[0], pos[1], pos[0]+view.getWidth(), pos[1]+view.getHeight());
|
||||
list.setClipChildren(false);
|
||||
transitioningHolder.itemView.setElevation(1f);
|
||||
gridHolder.setClipChildren(false);
|
||||
transitioningHolder.view.setElevation(1f);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -237,15 +240,16 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
view.setTranslationY(0f);
|
||||
view.setScaleX(1f);
|
||||
view.setScaleY(1f);
|
||||
transitioningHolder.itemView.setElevation(0f);
|
||||
transitioningHolder.view.setElevation(0f);
|
||||
if(list!=null)
|
||||
list.setClipChildren(true);
|
||||
gridHolder.setClipChildren(true);
|
||||
transitioningHolder=null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Drawable getPhotoViewCurrentDrawable(int index){
|
||||
ImageStatusDisplayItem.Holder<?> holder=findPhotoViewHolder(index);
|
||||
MediaAttachmentViewController holder=findPhotoViewHolder(index);
|
||||
if(holder!=null)
|
||||
return holder.photo.getDrawable();
|
||||
return null;
|
||||
@@ -261,23 +265,8 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
requestPermissions(permissions, PhotoViewer.PERMISSION_REQUEST);
|
||||
}
|
||||
|
||||
private ImageStatusDisplayItem.Holder<?> findPhotoViewHolder(int index){
|
||||
if(list==null)
|
||||
return null;
|
||||
int offset=0;
|
||||
for(StatusDisplayItem item:displayItems){
|
||||
if(item.parentID.equals(parentID)){
|
||||
if(item instanceof ImageStatusDisplayItem){
|
||||
RecyclerView.ViewHolder holder=list.findViewHolderForAdapterPosition(getMainAdapterOffset()+offset+index);
|
||||
if(holder instanceof ImageStatusDisplayItem.Holder<?> imgHolder){
|
||||
return imgHolder;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
offset++;
|
||||
}
|
||||
return null;
|
||||
private MediaAttachmentViewController findPhotoViewHolder(int index){
|
||||
return gridHolder.getViewController(index);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -285,11 +274,42 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState){
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
fab=view.findViewById(R.id.fab);
|
||||
list.addOnScrollListener(new RecyclerView.OnScrollListener(){
|
||||
@Override
|
||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy){
|
||||
if(currentPhotoViewer!=null)
|
||||
currentPhotoViewer.offsetView(-dx, -dy);
|
||||
|
||||
if (fab!=null && GlobalUserPreferences.autoHideFab) {
|
||||
if (dy > 0 && fab.getVisibility() == View.VISIBLE) {
|
||||
TranslateAnimation animate = new TranslateAnimation(
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
fab.getHeight() * 2);
|
||||
animate.setDuration(300);
|
||||
animate.setFillAfter(true);
|
||||
fab.startAnimation(animate);
|
||||
fab.setVisibility(View.INVISIBLE);
|
||||
scrollDiff = 0;
|
||||
} else if (dy < 0 && fab.getVisibility() != View.VISIBLE) {
|
||||
if (list.getChildLayoutPosition(list.getChildAt(0)) == 0 || scrollDiff > 400) {
|
||||
fab.setVisibility(View.VISIBLE);
|
||||
TranslateAnimation animate = new TranslateAnimation(
|
||||
0,
|
||||
0,
|
||||
fab.getHeight() * 2,
|
||||
0);
|
||||
animate.setDuration(300);
|
||||
animate.setFillAfter(true);
|
||||
fab.startAnimation(animate);
|
||||
scrollDiff = 0;
|
||||
} else {
|
||||
scrollDiff += Math.abs(dy);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
list.addItemDecoration(new StatusListItemDecoration());
|
||||
@@ -327,38 +347,12 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
updateToolbar();
|
||||
|
||||
if (withComposeButton()) {
|
||||
fab = view.findViewById(R.id.fab);
|
||||
fab.setVisibility(View.VISIBLE);
|
||||
fab.setOnClickListener(this::onFabClick);
|
||||
fab.setOnLongClickListener(this::onFabLongClick);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RecyclerView.LayoutManager onCreateLayoutManager(){
|
||||
GridLayoutManager lm=new TileGridLayoutManager(getActivity(), 1000);
|
||||
lm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup(){
|
||||
@Override
|
||||
public int getSpanSize(int position){
|
||||
position-=getMainAdapterOffset();
|
||||
if(position>=0 && position<displayItems.size()){
|
||||
StatusDisplayItem item=displayItems.get(position);
|
||||
if(item instanceof ImageStatusDisplayItem imgItem){
|
||||
PhotoLayoutHelper.TiledLayoutResult layout=imgItem.tiledLayout;
|
||||
PhotoLayoutHelper.TiledLayoutResult.Tile tile=imgItem.thisTile;
|
||||
int spans=0;
|
||||
for(int i=0;i<tile.colSpan;i++){
|
||||
spans+=layout.columnSizes[tile.startCol+i];
|
||||
}
|
||||
return spans;
|
||||
}
|
||||
}
|
||||
return 1000;
|
||||
}
|
||||
});
|
||||
return lm;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged(Configuration newConfig){
|
||||
super.onConfigurationChanged(newConfig);
|
||||
@@ -477,7 +471,7 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
revealSpoiler(status, holder.getItemID());
|
||||
}
|
||||
|
||||
public void onRevealSpoilerClick(ImageStatusDisplayItem.Holder<?> holder){
|
||||
public void onRevealSpoilerClick(MediaGridStatusDisplayItem.Holder holder){
|
||||
Status status=holder.getItem().status;
|
||||
revealSpoiler(status, holder.getItemID());
|
||||
}
|
||||
@@ -525,13 +519,14 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
|
||||
protected void updateImagesSpoilerState(Status status, String itemID){
|
||||
ArrayList<Integer> updatedPositions=new ArrayList<>();
|
||||
for(ImageStatusDisplayItem.Holder photo:(List<ImageStatusDisplayItem.Holder>)findAllHoldersOfType(itemID, ImageStatusDisplayItem.Holder.class)){
|
||||
photo.setRevealed(status.spoilerRevealed);
|
||||
updatedPositions.add(photo.getAbsoluteAdapterPosition()-getMainAdapterOffset());
|
||||
MediaGridStatusDisplayItem.Holder mediaGrid=findHolderOfType(itemID, MediaGridStatusDisplayItem.Holder.class);
|
||||
if(mediaGrid!=null){
|
||||
mediaGrid.setRevealed(status.spoilerRevealed);
|
||||
updatedPositions.add(mediaGrid.getAbsoluteAdapterPosition()-getMainAdapterOffset());
|
||||
}
|
||||
int i=0;
|
||||
for(StatusDisplayItem item:displayItems){
|
||||
if(itemID.equals(item.parentID) && item instanceof ImageStatusDisplayItem && !updatedPositions.contains(i)){
|
||||
if(itemID.equals(item.parentID) && item instanceof MediaGridStatusDisplayItem && !updatedPositions.contains(i)){
|
||||
adapter.notifyItemChanged(i);
|
||||
}
|
||||
i++;
|
||||
@@ -674,6 +669,15 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
return UiUtils.pickAccountForCompose(getActivity(), accountID);
|
||||
}
|
||||
|
||||
private MediaAttachmentViewController makeNewMediaAttachmentView(MediaGridStatusDisplayItem.GridItemType type){
|
||||
return new MediaAttachmentViewController(getActivity(), type);
|
||||
}
|
||||
|
||||
public TypedObjectPool<MediaGridStatusDisplayItem.GridItemType, MediaAttachmentViewController> getAttachmentViewsPool(){
|
||||
return attachmentViewsPool;
|
||||
}
|
||||
|
||||
|
||||
protected class DisplayItemsAdapter extends UsableRecyclerView.Adapter<BindableViewHolder<StatusDisplayItem>> implements ImageLoaderRecyclerAdapter{
|
||||
|
||||
public DisplayItemsAdapter(){
|
||||
@@ -711,16 +715,6 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
public ImageLoaderRequest getImageRequest(int position, int image){
|
||||
return displayItems.get(position).getImageRequest(image);
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void onViewDetachedFromWindow(@NonNull BindableViewHolder<StatusDisplayItem> holder){
|
||||
// if(holder instanceof ImageLoaderViewHolder){
|
||||
// int count=holder.getItem().getImageCount();
|
||||
// for(int i=0;i<count;i++){
|
||||
// ((ImageLoaderViewHolder) holder).clearImage(i);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
private class StatusListItemDecoration extends RecyclerView.ItemDecoration{
|
||||
@@ -754,25 +748,21 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
for(int i=0;i<parent.getChildCount();i++){
|
||||
View child=parent.getChildAt(i);
|
||||
RecyclerView.ViewHolder holder=parent.getChildViewHolder(child);
|
||||
if(holder instanceof ImageStatusDisplayItem.Holder<?> imgHolder){
|
||||
if(holder instanceof MediaGridStatusDisplayItem.Holder imgHolder){
|
||||
if(!imgHolder.getItem().status.spoilerRevealed && TextUtils.isEmpty(imgHolder.getItem().status.spoilerText)){
|
||||
hiddenMediaPaint.setColor(0x80000000);
|
||||
PhotoLayoutHelper.TiledLayoutResult.Tile tile=imgHolder.getItem().thisTile;
|
||||
float hGap=tile.startCol>0 ? V.dp(1) : 0;
|
||||
float vGap=tile.startRow>0 ? V.dp(1) : 0;
|
||||
c.drawRect(child.getX()-hGap, child.getY()-vGap, child.getX()+child.getWidth(), child.getY()+child.getHeight(), hiddenMediaPaint);
|
||||
c.drawRect(child.getX(), child.getY(), child.getX()+child.getWidth(), child.getY()+child.getHeight(), hiddenMediaPaint);
|
||||
}
|
||||
}
|
||||
}
|
||||
for(int i=0;i<parent.getChildCount();i++){
|
||||
View child=parent.getChildAt(i);
|
||||
RecyclerView.ViewHolder holder=parent.getChildViewHolder(child);
|
||||
if(holder instanceof ImageStatusDisplayItem.Holder<?> imgHolder){
|
||||
if(holder instanceof MediaGridStatusDisplayItem.Holder imgHolder){
|
||||
if(!imgHolder.getItem().status.spoilerRevealed){
|
||||
PhotoLayoutHelper.TiledLayoutResult.Tile tile=imgHolder.getItem().thisTile;
|
||||
if(tile.startCol==0 && tile.startRow==0 && TextUtils.isEmpty(imgHolder.getItem().status.spoilerText)){
|
||||
if(TextUtils.isEmpty(imgHolder.getItem().status.spoilerText)){
|
||||
int listWidth=getListWidthForMediaLayout();
|
||||
int width=Math.min(listWidth, V.dp(ImageAttachmentFrameLayout.MAX_WIDTH));
|
||||
int width=Math.min(listWidth, V.dp(MediaGridLayout.MAX_WIDTH));
|
||||
if(currentMediaHiddenLayoutsWidth!=width)
|
||||
rebuildMediaHiddenLayouts(width-V.dp(32));
|
||||
c.save();
|
||||
@@ -797,47 +787,6 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state){
|
||||
RecyclerView.ViewHolder holder=parent.getChildViewHolder(view);
|
||||
if(holder instanceof ImageStatusDisplayItem.Holder){
|
||||
int listWidth=getListWidthForMediaLayout();
|
||||
int width=Math.min(listWidth, V.dp(ImageAttachmentFrameLayout.MAX_WIDTH));
|
||||
PhotoLayoutHelper.TiledLayoutResult layout=((ImageStatusDisplayItem.Holder<?>) holder).getItem().tiledLayout;
|
||||
PhotoLayoutHelper.TiledLayoutResult.Tile tile=((ImageStatusDisplayItem.Holder<?>) holder).getItem().thisTile;
|
||||
if(tile.startCol+tile.colSpan<layout.columnSizes.length){
|
||||
outRect.right=V.dp(1);
|
||||
}
|
||||
if(tile.startRow+tile.rowSpan<layout.rowSizes.length){
|
||||
outRect.bottom=V.dp(1);
|
||||
}
|
||||
|
||||
// For a view that spans rows, compensate its additional height so the row it's in stays the right height
|
||||
if(tile.rowSpan>1){
|
||||
outRect.bottom=-(Math.round(tile.height/1000f*width)-Math.round(layout.rowSizes[tile.startRow]/1000f*width));
|
||||
}
|
||||
// ...and for its siblings, offset those on rows below first to the right where they belong
|
||||
if(tile.startCol>0 && layout.tiles[0].rowSpan>1 && tile.startRow>layout.tiles[0].startRow){
|
||||
int xOffset=Math.round(layout.tiles[0].width/1000f*listWidth);
|
||||
outRect.left=xOffset;
|
||||
outRect.right=-xOffset;
|
||||
}
|
||||
|
||||
// If the width of the media block is smaller than that of the RecyclerView, offset the views horizontally to center them
|
||||
if(listWidth>width){
|
||||
outRect.left+=(listWidth-V.dp(ImageAttachmentFrameLayout.MAX_WIDTH))/2;
|
||||
if(tile.startCol>0){
|
||||
int spanOffset=0;
|
||||
for(int i=0;i<tile.startCol;i++){
|
||||
spanOffset+=layout.columnSizes[i];
|
||||
}
|
||||
outRect.left-=Math.round(spanOffset/1000f*listWidth);
|
||||
outRect.left+=Math.round(spanOffset/1000f*width);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void rebuildMediaHiddenLayouts(int width){
|
||||
currentMediaHiddenLayoutsWidth=width;
|
||||
String title=getString(R.string.sensitive_content);
|
||||
|
||||
@@ -109,7 +109,7 @@ import org.joinmastodon.android.ui.text.ComposeAutocompleteSpan;
|
||||
import org.joinmastodon.android.ui.text.ComposeHashtagOrMentionSpan;
|
||||
import org.joinmastodon.android.ui.text.HtmlParser;
|
||||
import org.joinmastodon.android.ui.utils.SimpleTextWatcher;
|
||||
import org.joinmastodon.android.ui.utils.TransferSpeedTracker;
|
||||
import org.joinmastodon.android.utils.TransferSpeedTracker;
|
||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||
import org.joinmastodon.android.ui.views.ComposeEditText;
|
||||
import org.joinmastodon.android.ui.views.ComposeMediaLayout;
|
||||
@@ -971,9 +971,11 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
||||
}
|
||||
|
||||
private void onCustomEmojiClick(Emoji emoji){
|
||||
int start=mainEditText.getSelectionStart();
|
||||
String prefix=start>0 && !Character.isWhitespace(mainEditText.getText().charAt(start-1)) ? " :" : ":";
|
||||
mainEditText.getText().replace(start, mainEditText.getSelectionEnd(), prefix+emoji.shortcode+':');
|
||||
if(getActivity().getCurrentFocus() instanceof EditText edit){
|
||||
int start=edit.getSelectionStart();
|
||||
String prefix=start>0 && !Character.isWhitespace(edit.getText().charAt(start-1)) ? " :" : ":";
|
||||
edit.getText().replace(start, edit.getSelectionEnd(), prefix+emoji.shortcode+':');
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -358,7 +358,7 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
|
||||
addListsToOverflowMenu();
|
||||
addHashtagsToOverflowMenu();
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && !UiUtils.isEMUI()) {
|
||||
m.setGroupDividerEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,9 +19,7 @@ import org.joinmastodon.android.model.Notification;
|
||||
import org.joinmastodon.android.model.PaginatedResponse;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.ui.displayitems.AccountCardStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.AccountStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.HeaderStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.ImageStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.StatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.TextStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.utils.DiscoverInfoBannerHelper;
|
||||
@@ -40,7 +38,6 @@ import java.util.stream.Stream;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import me.grishka.appkit.Nav;
|
||||
import me.grishka.appkit.api.SimpleCallback;
|
||||
import me.grishka.appkit.utils.V;
|
||||
|
||||
public class NotificationsListFragment extends BaseStatusListFragment<Notification>{
|
||||
private boolean onlyMentions;
|
||||
@@ -98,13 +95,6 @@ public class NotificationsListFragment extends BaseStatusListFragment<Notificati
|
||||
HeaderStatusDisplayItem titleItem=extraText!=null ? new HeaderStatusDisplayItem(n.id, n.account, n.createdAt, this, accountID, n.status, extraText, n, null) : null;
|
||||
if(n.status!=null){
|
||||
ArrayList<StatusDisplayItem> items=StatusDisplayItem.buildItems(this, n.status, accountID, n, knownAccounts, titleItem!=null, titleItem==null, n, false, Filter.FilterContext.NOTIFICATIONS);
|
||||
if(titleItem!=null){
|
||||
for(StatusDisplayItem item:items){
|
||||
if(item instanceof ImageStatusDisplayItem imgItem){
|
||||
imgItem.horizontalInset=V.dp(32);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(titleItem!=null)
|
||||
items.add(0, titleItem);
|
||||
return items;
|
||||
@@ -127,6 +117,8 @@ public class NotificationsListFragment extends BaseStatusListFragment<Notificati
|
||||
knownAccounts.put(s.account.id, s.account);
|
||||
if(s.status!=null && !knownAccounts.containsKey(s.status.account.id))
|
||||
knownAccounts.put(s.status.account.id, s.status.account);
|
||||
if(s.status!=null && s.status.reblog!=null && !knownAccounts.containsKey(s.status.reblog.account.id))
|
||||
knownAccounts.put(s.status.reblog.account.id, s.status.reblog.account);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -19,24 +19,30 @@ import android.os.Bundle;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.TextUtils;
|
||||
import android.text.style.ImageSpan;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.SubMenu;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewOutlineProvider;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.WindowInsets;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.view.animation.TranslateAnimation;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import android.widget.Toolbar;
|
||||
|
||||
import org.joinmastodon.android.GlobalUserPreferences;
|
||||
@@ -142,10 +148,11 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
private Uri editNewAvatar, editNewCover;
|
||||
private String profileAccountID;
|
||||
private boolean refreshing;
|
||||
private View fab;
|
||||
private ImageButton fab;
|
||||
private WindowInsets childInsets;
|
||||
private PhotoViewer currentPhotoViewer;
|
||||
private boolean editModeLoading;
|
||||
protected int scrollDiff = 0;
|
||||
|
||||
private static final int MAX_FIELDS=4;
|
||||
|
||||
@@ -298,6 +305,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
});
|
||||
|
||||
actionButton.setOnClickListener(this::onActionButtonClick);
|
||||
actionButton.setOnLongClickListener(this::onActionButtonLongClick);
|
||||
notifyButton.setOnClickListener(this::onNotifyButtonClick);
|
||||
avatar.setOnClickListener(this::onAvatarClick);
|
||||
cover.setOnClickListener(this::onCoverClick);
|
||||
@@ -489,8 +497,10 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
for (Account.Role role : account.roles) {
|
||||
TextView roleText = new TextView(getActivity(), null, 0, R.style.role_label);
|
||||
roleText.setText(role.name);
|
||||
GradientDrawable bg = (GradientDrawable) roleText.getBackground().mutate();
|
||||
bg.setStroke(V.dp(2), Color.parseColor(role.color));
|
||||
if (!TextUtils.isEmpty(role.color) && role.color.startsWith("#")) try {
|
||||
GradientDrawable bg = (GradientDrawable) roleText.getBackground().mutate();
|
||||
bg.setStroke(V.dp(2), Color.parseColor(role.color));
|
||||
} catch (Exception ignored) {}
|
||||
rolesView.addView(roleText);
|
||||
}
|
||||
}
|
||||
@@ -599,6 +609,16 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
return;
|
||||
inflater.inflate(isOwnProfile ? R.menu.profile_own : R.menu.profile, menu);
|
||||
UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.bookmarks, R.id.followed_hashtags);
|
||||
boolean hasMultipleAccounts = AccountSessionManager.getInstance().getLoggedInAccounts().size() > 1;
|
||||
MenuItem openWithAccounts = menu.findItem(R.id.open_with_account);
|
||||
openWithAccounts.setVisible(hasMultipleAccounts);
|
||||
SubMenu accountsMenu = openWithAccounts.getSubMenu();
|
||||
if (hasMultipleAccounts) {
|
||||
accountsMenu.clear();
|
||||
UiUtils.populateAccountsMenu(accountID, accountsMenu, s-> UiUtils.openURL(
|
||||
getActivity(), s.getID(), account.url, false
|
||||
));
|
||||
}
|
||||
menu.findItem(R.id.share).setTitle(getString(R.string.share_user, account.getShortUsername()));
|
||||
if(isOwnProfile)
|
||||
return;
|
||||
@@ -734,6 +754,10 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
notifyButton.setContentDescription(getString(relationship.notifying ? R.string.sk_user_post_notifications_on : R.string.sk_user_post_notifications_off, '@'+account.username));
|
||||
}
|
||||
|
||||
public ImageButton getFab() {
|
||||
return fab;
|
||||
}
|
||||
|
||||
private void onScrollChanged(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY){
|
||||
int topBarsH=getToolbar().getHeight()+statusBarHeight;
|
||||
if(scrollY>avatarBorder.getTop()-topBarsH){
|
||||
@@ -764,6 +788,37 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
if(currentPhotoViewer!=null){
|
||||
currentPhotoViewer.offsetView(0, oldScrollY-scrollY);
|
||||
}
|
||||
|
||||
if (GlobalUserPreferences.autoHideFab) {
|
||||
int dy = scrollY - oldScrollY;
|
||||
if (dy > 0 && fab.getVisibility() == View.VISIBLE) {
|
||||
TranslateAnimation animate = new TranslateAnimation(
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
fab.getHeight() * 2);
|
||||
animate.setDuration(300);
|
||||
animate.setFillAfter(true);
|
||||
fab.startAnimation(animate);
|
||||
fab.setVisibility(View.INVISIBLE);
|
||||
scrollDiff = 0;
|
||||
} else if (dy < 0 && fab.getVisibility() != View.VISIBLE) {
|
||||
if (v.getScrollY() == 0 || scrollDiff > 400) {
|
||||
fab.setVisibility(View.VISIBLE);
|
||||
TranslateAnimation animate = new TranslateAnimation(
|
||||
0,
|
||||
0,
|
||||
fab.getHeight() * 2,
|
||||
0);
|
||||
animate.setDuration(300);
|
||||
animate.setFillAfter(true);
|
||||
fab.startAnimation(animate);
|
||||
scrollDiff = 0;
|
||||
} else {
|
||||
scrollDiff += Math.abs(dy);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Fragment getFragmentForPage(int page){
|
||||
@@ -792,6 +847,31 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
}
|
||||
}
|
||||
|
||||
private boolean onActionButtonLongClick(View v) {
|
||||
if (isOwnProfile || AccountSessionManager.getInstance().getLoggedInAccounts().size() < 2) return false;
|
||||
UiUtils.pickAccount(getActivity(), accountID, R.string.sk_follow_as, R.drawable.ic_fluent_person_add_28_regular, session -> {
|
||||
UiUtils.lookupAccount(getActivity(), account, session.getID(), accountID, acc -> {
|
||||
if (acc == null) return;
|
||||
new SetAccountFollowed(acc.id, true, true).setCallback(new Callback<>() {
|
||||
@Override
|
||||
public void onSuccess(Relationship relationship) {
|
||||
Toast.makeText(
|
||||
getActivity(),
|
||||
getString(R.string.sk_followed_as, session.self.getShortUsername()),
|
||||
Toast.LENGTH_SHORT
|
||||
).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(ErrorResponse error) {
|
||||
error.showToast(getActivity());
|
||||
}
|
||||
}).exec(session.getID());
|
||||
});
|
||||
}, null);
|
||||
return true;
|
||||
}
|
||||
|
||||
private void setActionProgressVisible(boolean visible){
|
||||
actionButton.setTextVisible(!visible);
|
||||
actionProgress.setVisibility(visible ? View.VISIBLE : View.GONE);
|
||||
@@ -838,7 +918,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
||||
pager.setUserInputEnabled(false);
|
||||
actionButton.setText(R.string.done);
|
||||
ArrayList<Animator> animators=new ArrayList<>();
|
||||
Drawable overlay=getResources().getDrawable(R.drawable.edit_avatar_overlay).mutate();
|
||||
Drawable overlay=getResources().getDrawable(R.drawable.edit_avatar_overlay, getActivity().getTheme()).mutate();
|
||||
avatar.setForeground(overlay);
|
||||
animators.add(ObjectAnimator.ofInt(overlay, "alpha", 0, 255));
|
||||
|
||||
|
||||
@@ -239,15 +239,20 @@ public class SettingsFragment extends MastodonToolbarFragment{
|
||||
GlobalUserPreferences.showNoAltIndicator=i.checked;
|
||||
GlobalUserPreferences.save();
|
||||
}));
|
||||
items.add(new SwitchItem(R.string.sk_settings_collapse_long_posts, R.drawable.ic_fluent_chevron_down_24_filled, GlobalUserPreferences.collapseLongPosts, i->{
|
||||
items.add(new SwitchItem(R.string.sk_settings_collapse_long_posts, R.drawable.ic_fluent_chevron_down_24_regular, GlobalUserPreferences.collapseLongPosts, i->{
|
||||
GlobalUserPreferences.collapseLongPosts=i.checked;
|
||||
GlobalUserPreferences.save();
|
||||
}));
|
||||
items.add(new SwitchItem(R.string.sk_spectator_mode, R.drawable.ic_fluent_eye_24_regular, GlobalUserPreferences.spectatorMode, i->{
|
||||
items.add(new SwitchItem(R.string.sk_settings_hide_interaction, R.drawable.ic_fluent_eye_24_regular, GlobalUserPreferences.spectatorMode, i->{
|
||||
GlobalUserPreferences.spectatorMode=i.checked;
|
||||
GlobalUserPreferences.save();
|
||||
needAppRestart=true;
|
||||
}));
|
||||
items.add(new SwitchItem(R.string.sk_settings_hide_fab, R.drawable.ic_fluent_edit_24_regular, GlobalUserPreferences.autoHideFab, i->{
|
||||
GlobalUserPreferences.autoHideFab=i.checked;
|
||||
GlobalUserPreferences.save();
|
||||
needAppRestart=true;
|
||||
}));
|
||||
items.add(new SwitchItem(R.string.sk_settings_translate_only_opened, R.drawable.ic_fluent_translate_24_regular, GlobalUserPreferences.translateButtonOpenedOnly, i->{
|
||||
GlobalUserPreferences.translateButtonOpenedOnly=i.checked;
|
||||
GlobalUserPreferences.save();
|
||||
|
||||
@@ -41,6 +41,8 @@ public abstract class StatusListFragment extends BaseStatusListFragment<Status>{
|
||||
protected void addAccountToKnown(Status s){
|
||||
if(!knownAccounts.containsKey(s.account.id))
|
||||
knownAccounts.put(s.account.id, s.account);
|
||||
if(s.reblog!=null && !knownAccounts.containsKey(s.reblog.account.id))
|
||||
knownAccounts.put(s.reblog.account.id, s.reblog.account);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -248,6 +248,6 @@ public class AccountActivationFragment extends ToolbarFragment{
|
||||
Bundle args=new Bundle();
|
||||
args.putString("account", accountID);
|
||||
// Nav.goClearingStack(getActivity(), HomeFragment.class, args);
|
||||
Nav.goClearingStack(getActivity(), OnboardingProfileSetupFragment.class, args);
|
||||
Nav.goClearingStack(getActivity(), OnboardingFollowSuggestionsFragment.class, args);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,15 +5,12 @@ import android.app.ProgressDialog;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.LocaleList;
|
||||
import android.text.TextUtils;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowInsets;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.joinmastodon.android.R;
|
||||
@@ -23,7 +20,6 @@ import org.joinmastodon.android.api.requests.instance.GetInstance;
|
||||
import org.joinmastodon.android.model.Instance;
|
||||
import org.joinmastodon.android.model.catalog.CatalogInstance;
|
||||
import org.joinmastodon.android.ui.M3AlertDialogBuilder;
|
||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.NodeList;
|
||||
@@ -31,6 +27,8 @@ import org.xml.sax.InputSource;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.IDN;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
@@ -50,7 +48,6 @@ import me.grishka.appkit.fragments.BaseRecyclerFragment;
|
||||
import me.grishka.appkit.utils.BindableViewHolder;
|
||||
import me.grishka.appkit.utils.MergeRecyclerAdapter;
|
||||
import me.grishka.appkit.utils.V;
|
||||
import me.grishka.appkit.views.UsableRecyclerView;
|
||||
import okhttp3.Call;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
@@ -112,46 +109,10 @@ abstract class InstanceCatalogFragment extends BaseRecyclerFragment<CatalogInsta
|
||||
}
|
||||
|
||||
protected List<CatalogInstance> sortInstances(List<CatalogInstance> result){
|
||||
Map<String, List<CatalogInstance>> byLang=result.stream().collect(Collectors.groupingBy(ci->ci.language));
|
||||
for(List<CatalogInstance> group:byLang.values()){
|
||||
Collections.sort(group, (a, b)->{
|
||||
double aa=Math.abs(DUNBAR-Math.log(a.lastWeekUsers));
|
||||
double bb=Math.abs(DUNBAR-Math.log(b.lastWeekUsers));
|
||||
return Double.compare(aa, bb);
|
||||
});
|
||||
}
|
||||
// get the list of user-configured system languages
|
||||
List<String> userLangs;
|
||||
if(Build.VERSION.SDK_INT<24){
|
||||
userLangs=Collections.singletonList(getResources().getConfiguration().locale.getLanguage());
|
||||
}else{
|
||||
LocaleList ll=getResources().getConfiguration().getLocales();
|
||||
userLangs=new ArrayList<>(ll.size());
|
||||
for(int i=0;i<ll.size();i++){
|
||||
userLangs.add(ll.get(i).getLanguage());
|
||||
}
|
||||
}
|
||||
// add instances in preferred languages to the top of the list, in the order of preference
|
||||
Map<Boolean, List<CatalogInstance>> byLang=result.stream().sorted(Comparator.comparingInt((CatalogInstance ci)->ci.lastWeekUsers).reversed()).collect(Collectors.groupingBy(ci->ci.approvalRequired));
|
||||
ArrayList<CatalogInstance> sortedList=new ArrayList<>();
|
||||
for(String lang:userLangs){
|
||||
List<CatalogInstance> langInstances=byLang.remove(lang);
|
||||
if(langInstances!=null){
|
||||
sortedList.addAll(langInstances);
|
||||
}
|
||||
}
|
||||
// sort the remaining language groups by aggregate lastWeekUsers
|
||||
class InstanceGroup{
|
||||
public int activeUsers;
|
||||
public List<CatalogInstance> instances;
|
||||
}
|
||||
byLang.values().stream().map(il->{
|
||||
InstanceGroup group=new InstanceGroup();
|
||||
group.instances=il;
|
||||
for(CatalogInstance instance:il){
|
||||
group.activeUsers+=instance.lastWeekUsers;
|
||||
}
|
||||
return group;
|
||||
}).sorted(Comparator.comparingInt((InstanceGroup g)->g.activeUsers).reversed()).forEachOrdered(ig->sortedList.addAll(ig.instances));
|
||||
sortedList.addAll(byLang.getOrDefault(false, Collections.emptyList()));
|
||||
sortedList.addAll(byLang.getOrDefault(true, Collections.emptyList()));
|
||||
return sortedList;
|
||||
}
|
||||
|
||||
@@ -208,6 +169,20 @@ abstract class InstanceCatalogFragment extends BaseRecyclerFragment<CatalogInsta
|
||||
cancelLoadingInstanceInfo();
|
||||
}
|
||||
}
|
||||
try{
|
||||
new URI("https://"+domain+"/api/v1/instance"); // Validate the host by trying to parse the URI
|
||||
}catch(URISyntaxException x){
|
||||
showInstanceInfoLoadError(domain, x);
|
||||
if(fakeInstance!=null){
|
||||
fakeInstance.description=getString(R.string.error);
|
||||
if(filteredData.size()>0 && filteredData.get(0)==fakeInstance){
|
||||
if(list.findViewHolderForAdapterPosition(1) instanceof BindableViewHolder<?> ivh){
|
||||
ivh.rebind();
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
loadingInstanceDomain=domain;
|
||||
loadingInstanceRequest=new GetInstance();
|
||||
loadingInstanceRequest.setCallback(new Callback<>(){
|
||||
|
||||
@@ -64,7 +64,7 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple
|
||||
|
||||
private List<String> languages=Collections.emptyList();
|
||||
private PopupMenu langFilterMenu, speedFilterMenu;
|
||||
private SignupSpeedFilter currentSignupSpeedFilter=SignupSpeedFilter.INSTANT;
|
||||
private SignupSpeedFilter currentSignupSpeedFilter=SignupSpeedFilter.ANY;
|
||||
private String currentLanguage=null;
|
||||
private boolean searchQueryMode;
|
||||
private LinearLayout filtersWrap;
|
||||
@@ -75,7 +75,7 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple
|
||||
private FilterChipView categoryGeneral, categorySpecialInterests;
|
||||
private List<FilterChipView> regionalFilters;
|
||||
private CatalogInstance.Region chosenRegion;
|
||||
private CategoryChoice categoryChoice;
|
||||
private CategoryChoice categoryChoice=CategoryChoice.GENERAL;
|
||||
|
||||
public InstanceCatalogSignupFragment(){
|
||||
super(R.layout.fragment_onboarding_common, 10);
|
||||
@@ -371,6 +371,9 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple
|
||||
if(instances.isEmpty()){
|
||||
instances=data.stream().filter(ci->!ci.approvalRequired && ("general".equals(ci.category) || (ci.categories!=null && ci.categories.contains("general")))).collect(Collectors.toList());
|
||||
}
|
||||
if(instances.isEmpty()){
|
||||
instances=data.stream().filter(ci->("general".equals(ci.category) || (ci.categories!=null && ci.categories.contains("general")))).collect(Collectors.toList());
|
||||
}
|
||||
if(instances.isEmpty()){
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2,8 +2,14 @@ package org.joinmastodon.android.fragments.onboarding;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.style.StyleSpan;
|
||||
import android.text.style.TypefaceSpan;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -64,7 +70,7 @@ public class InstanceRulesFragment extends ToolbarFragment{
|
||||
list.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
View headerView=inflater.inflate(R.layout.item_list_header_simple, list, false);
|
||||
TextView text=headerView.findViewById(R.id.text);
|
||||
text.setText(getString(R.string.instance_rules_subtitle, instance.uri));
|
||||
text.setText(Html.fromHtml(getString(R.string.instance_rules_subtitle, "<b>"+Html.escapeHtml(instance.uri)+"</b>")));
|
||||
|
||||
adapter=new MergeRecyclerAdapter();
|
||||
adapter.addAdapter(new SingleViewRecyclerAdapter(headerView));
|
||||
|
||||
@@ -191,6 +191,13 @@ public class OnboardingFollowSuggestionsFragment extends BaseRecyclerFragment<Pa
|
||||
.setCallback(new Callback<>(){
|
||||
@Override
|
||||
public void onSuccess(Relationship result){
|
||||
relationships.put(id, result);
|
||||
for(int i=0;i<list.getChildCount();i++){
|
||||
if(list.getChildViewHolder(list.getChildAt(i)) instanceof SuggestionViewHolder svh && svh.getItem().account.id.equals(id)){
|
||||
svh.rebind();
|
||||
break;
|
||||
}
|
||||
}
|
||||
numRunningFollowRequests--;
|
||||
progress.setProgress(progress.getMax()-accountIdsToFollow.size()-numRunningFollowRequests);
|
||||
followNextAccount(accountIdsToFollow, progress);
|
||||
@@ -209,20 +216,7 @@ public class OnboardingFollowSuggestionsFragment extends BaseRecyclerFragment<Pa
|
||||
private void proceed(){
|
||||
Bundle args=new Bundle();
|
||||
args.putString("account", accountID);
|
||||
Nav.go(getActivity(), HomeFragment.class, args);
|
||||
getActivity().getWindow().getDecorView().postDelayed(()->Nav.finish(this), 500);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canGoBack(){
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onToolbarNavigationClick(){
|
||||
Bundle args=new Bundle();
|
||||
args.putString("account", accountID);
|
||||
Nav.goClearingStack(getActivity(), HomeFragment.class, args);
|
||||
Nav.go(getActivity(), OnboardingProfileSetupFragment.class, args);
|
||||
}
|
||||
|
||||
private class SuggestionsAdapter extends UsableRecyclerView.Adapter<SuggestionViewHolder> implements ImageLoaderRecyclerAdapter{
|
||||
|
||||
@@ -151,8 +151,7 @@ public class OnboardingProfileSetupFragment extends ToolbarFragment implements R
|
||||
AccountSessionManager.getInstance().updateAccountInfo(accountID, result);
|
||||
Bundle args=new Bundle();
|
||||
args.putString("account", accountID);
|
||||
Nav.go(getActivity(), OnboardingFollowSuggestionsFragment.class, args);
|
||||
getActivity().getWindow().getDecorView().postDelayed(()->Nav.finish(OnboardingProfileSetupFragment.this), 500);
|
||||
Nav.goClearingStack(getActivity(), HomeFragment.class, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -182,6 +181,11 @@ public class OnboardingProfileSetupFragment extends ToolbarFragment implements R
|
||||
profileFieldsLayout.startDragging(view);
|
||||
return true;
|
||||
});
|
||||
view.findViewById(R.id.delete).setOnClickListener(v->{
|
||||
profileFieldsLayout.removeView(view);
|
||||
if(addRow.getVisibility()==View.GONE)
|
||||
addRow.setVisibility(View.VISIBLE);
|
||||
});
|
||||
return view;
|
||||
}
|
||||
|
||||
@@ -222,16 +226,4 @@ public class OnboardingProfileSetupFragment extends ToolbarFragment implements R
|
||||
img.setForeground(null);
|
||||
ViewImageLoader.load(img, null, new UrlImageLoaderRequest(uri, size, size));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canGoBack(){
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onToolbarNavigationClick(){
|
||||
Bundle args=new Bundle();
|
||||
args.putString("account", accountID);
|
||||
Nav.goClearingStack(getActivity(), HomeFragment.class, args);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,10 +22,8 @@ import org.joinmastodon.android.events.FinishReportFragmentsEvent;
|
||||
import org.joinmastodon.android.fragments.StatusListFragment;
|
||||
import org.joinmastodon.android.model.Account;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.ui.PhotoLayoutHelper;
|
||||
import org.joinmastodon.android.ui.displayitems.AudioStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.HeaderStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.ImageStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.LinkCardStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.ReblogOrReplyLineStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.StatusDisplayItem;
|
||||
@@ -132,22 +130,7 @@ public class ReportAddPostsChoiceFragment extends StatusListFragment{
|
||||
if(holder.getAbsoluteAdapterPosition()==0)
|
||||
return;
|
||||
outRect.left=V.dp(40);
|
||||
if(holder instanceof ImageStatusDisplayItem.Holder<?> imgHolder){
|
||||
PhotoLayoutHelper.TiledLayoutResult layout=imgHolder.getItem().tiledLayout;
|
||||
PhotoLayoutHelper.TiledLayoutResult.Tile tile=imgHolder.getItem().thisTile;
|
||||
String siblingID;
|
||||
if(holder.getAbsoluteAdapterPosition()<parent.getAdapter().getItemCount()-1){
|
||||
siblingID=displayItems.get(holder.getAbsoluteAdapterPosition()-getMainAdapterOffset()+1).parentID;
|
||||
}else{
|
||||
siblingID=null;
|
||||
}
|
||||
if(tile.startCol>0)
|
||||
outRect.left=0;
|
||||
outRect.left+=V.dp(16);
|
||||
outRect.right=V.dp(16);
|
||||
if(!imgHolder.getItemID().equals(siblingID) || tile.startRow+tile.rowSpan==layout.rowSizes.length)
|
||||
outRect.bottom=V.dp(16);
|
||||
}else if(holder instanceof AudioStatusDisplayItem.Holder){
|
||||
if(holder instanceof AudioStatusDisplayItem.Holder){
|
||||
outRect.bottom=V.dp(16);
|
||||
}else if(holder instanceof LinkCardStatusDisplayItem.Holder){
|
||||
outRect.bottom=V.dp(16);
|
||||
@@ -166,10 +149,6 @@ public class ReportAddPostsChoiceFragment extends StatusListFragment{
|
||||
parent.getDecoratedBoundsWithMargins(child, tmpRect);
|
||||
String id=sdiHolder.getItemID();
|
||||
int height=tmpRect.height();
|
||||
if(holder instanceof ImageStatusDisplayItem.Holder<?> imgHolder){
|
||||
if(imgHolder.getItem().thisTile.startCol+imgHolder.getItem().thisTile.colSpan<imgHolder.getItem().tiledLayout.columnSizes.length)
|
||||
height=0;
|
||||
}
|
||||
if(!(holder instanceof HeaderStatusDisplayItem.Holder) && !(holder instanceof ReblogOrReplyLineStatusDisplayItem.Holder))
|
||||
postsWithKnownNonHeaderHeights.add(id);
|
||||
knownDisplayItemHeights.put(holder.getAbsoluteAdapterPosition(), height);
|
||||
@@ -236,17 +215,6 @@ public class ReportAddPostsChoiceFragment extends StatusListFragment{
|
||||
return adapter;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<StatusDisplayItem> buildDisplayItems(Status s){
|
||||
List<StatusDisplayItem> items=StatusDisplayItem.buildItems(this, s, accountID, s, knownAccounts, true, false, null);
|
||||
for(StatusDisplayItem item:items){
|
||||
if(item instanceof ImageStatusDisplayItem isdi){
|
||||
isdi.horizontalInset=V.dp(40+32);
|
||||
}
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
||||
protected void drawDivider(View child, View bottomSibling, RecyclerView.ViewHolder holder, RecyclerView.ViewHolder siblingHolder, RecyclerView parent, Canvas c, Paint paint){
|
||||
parent.getDecoratedBoundsWithMargins(child, tmpRect);
|
||||
tmpRect.offset(0, Math.round(child.getTranslationY()));
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.util.List;
|
||||
* Represents a user of Mastodon and their associated profile.
|
||||
*/
|
||||
@Parcel
|
||||
public class Account extends BaseModel{
|
||||
public class Account extends BaseModel implements Searchable{
|
||||
// Base attributes
|
||||
|
||||
/**
|
||||
@@ -135,6 +135,11 @@ public class Account extends BaseModel{
|
||||
|
||||
public List<Role> roles;
|
||||
|
||||
@Override
|
||||
public String getQuery() {
|
||||
return url;
|
||||
}
|
||||
|
||||
@Parcel
|
||||
public static class Role {
|
||||
public String name;
|
||||
|
||||
@@ -121,7 +121,7 @@ public class Instance extends BaseModel{
|
||||
ci.domain=uri;
|
||||
ci.normalizedDomain=IDN.toUnicode(uri);
|
||||
ci.description=Html.fromHtml(shortDescription).toString().trim();
|
||||
if(languages!=null){
|
||||
if(languages!=null && languages.size() > 0){
|
||||
ci.language=languages.get(0);
|
||||
ci.languages=languages;
|
||||
}else{
|
||||
|
||||
@@ -16,6 +16,7 @@ public class Poll extends BaseModel{
|
||||
private boolean expired;
|
||||
public boolean multiple;
|
||||
public int votersCount;
|
||||
public int votesCount;
|
||||
public boolean voted;
|
||||
@RequiredField
|
||||
public List<Integer> ownVotes;
|
||||
@@ -41,10 +42,12 @@ public class Poll extends BaseModel{
|
||||
", expired="+expired+
|
||||
", multiple="+multiple+
|
||||
", votersCount="+votersCount+
|
||||
", votesCount="+votesCount+
|
||||
", voted="+voted+
|
||||
", ownVotes="+ownVotes+
|
||||
", options="+options+
|
||||
", emojis="+emojis+
|
||||
", selectedOptions="+selectedOptions+
|
||||
'}';
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package org.joinmastodon.android.model;
|
||||
|
||||
public interface Searchable {
|
||||
String getQuery();
|
||||
}
|
||||
@@ -11,7 +11,7 @@ import java.time.Instant;
|
||||
import java.util.List;
|
||||
|
||||
@Parcel
|
||||
public class Status extends BaseModel implements DisplayItemsParent{
|
||||
public class Status extends BaseModel implements DisplayItemsParent, Searchable{
|
||||
@RequiredField
|
||||
public String id;
|
||||
@RequiredField
|
||||
@@ -163,4 +163,9 @@ public class Status extends BaseModel implements DisplayItemsParent{
|
||||
s.filtered = List.of();
|
||||
return s;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getQuery() {
|
||||
return url;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,8 +11,14 @@ import java.util.List;
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
public class PhotoLayoutHelper{
|
||||
public static final int MAX_WIDTH=1000;
|
||||
public static final int MAX_HEIGHT=1910;
|
||||
|
||||
@NonNull
|
||||
public static TiledLayoutResult processThumbs(int _maxW, int _maxH, List<Attachment> thumbs){
|
||||
public static TiledLayoutResult processThumbs(List<Attachment> thumbs){
|
||||
int _maxW=MAX_WIDTH;
|
||||
int _maxH=MAX_HEIGHT;
|
||||
|
||||
TiledLayoutResult result=new TiledLayoutResult();
|
||||
if(thumbs.size()==1){
|
||||
Attachment att=thumbs.get(0);
|
||||
@@ -45,13 +51,8 @@ public class PhotoLayoutHelper{
|
||||
float avgRatio=!ratios.isEmpty() ? sum(ratios)/ratios.size() : 1.0f;
|
||||
|
||||
float maxW, maxH, marginW=0, marginH=0;
|
||||
if(_maxW>0){
|
||||
maxW=_maxW;
|
||||
maxH=_maxH;
|
||||
}else{
|
||||
maxW=510;
|
||||
maxH=510;
|
||||
}
|
||||
maxW=_maxW;
|
||||
maxH=_maxH;
|
||||
|
||||
float maxRatio=maxW/maxH;
|
||||
|
||||
|
||||
@@ -190,6 +190,7 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
|
||||
String accountID = session.getID();
|
||||
args.putString("account", accountID);
|
||||
UiUtils.lookupStatus(v.getContext(), item.status, accountID, item.accountID, status -> {
|
||||
if (status == null) return;
|
||||
args.putParcelable("replyTo", Parcels.wrap(status));
|
||||
Nav.go(item.parentFragment.getActivity(), ComposeFragment.class, args);
|
||||
});
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
package org.joinmastodon.android.ui.displayitems;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.graphics.Outline;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewOutlineProvider;
|
||||
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
||||
import org.joinmastodon.android.model.Attachment;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.ui.PhotoLayoutHelper;
|
||||
|
||||
import me.grishka.appkit.imageloader.requests.UrlImageLoaderRequest;
|
||||
|
||||
public class GifVStatusDisplayItem extends ImageStatusDisplayItem{
|
||||
public GifVStatusDisplayItem(String parentID, Status status, Attachment attachment, BaseStatusListFragment parentFragment, int index, int totalPhotos, PhotoLayoutHelper.TiledLayoutResult tiledLayout, PhotoLayoutHelper.TiledLayoutResult.Tile thisTile){
|
||||
super(parentID, parentFragment, attachment, status, index, totalPhotos, tiledLayout, thisTile);
|
||||
request=new UrlImageLoaderRequest(attachment.previewUrl, 1000, 1000);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type getType(){
|
||||
return Type.GIFV;
|
||||
}
|
||||
|
||||
public static class Holder extends ImageStatusDisplayItem.Holder<GifVStatusDisplayItem>{
|
||||
|
||||
public Holder(Activity activity, ViewGroup parent){
|
||||
super(activity, R.layout.display_item_gifv, parent);
|
||||
View play=findViewById(R.id.play_button);
|
||||
play.setOutlineProvider(new ViewOutlineProvider(){
|
||||
@Override
|
||||
public void getOutline(View view, Outline outline){
|
||||
outline.setOval(0, 0, view.getWidth(), view.getHeight());
|
||||
outline.setAlpha(.99f); // fixes shadow rendering
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -455,7 +455,9 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
||||
if (hasMultipleAccounts && accountsMenu != null) {
|
||||
openWithAccounts.setVisible(true);
|
||||
accountsMenu.clear();
|
||||
populateAccountsMenu(accountsMenu);
|
||||
UiUtils.populateAccountsMenu(item.accountID, accountsMenu, s-> UiUtils.openURL(
|
||||
item.parentFragment.getActivity(), s.getID(), item.status.url, false
|
||||
));
|
||||
} else if (openWithAccounts != null) {
|
||||
openWithAccounts.setVisible(false);
|
||||
}
|
||||
|
||||
@@ -1,244 +0,0 @@
|
||||
package org.joinmastodon.android.ui.displayitems;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.app.Activity;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.joinmastodon.android.GlobalUserPreferences;
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
||||
import org.joinmastodon.android.model.Attachment;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.ui.PhotoLayoutHelper;
|
||||
import org.joinmastodon.android.ui.drawables.BlurhashCrossfadeDrawable;
|
||||
import org.joinmastodon.android.ui.photoviewer.PhotoViewerHost;
|
||||
import org.joinmastodon.android.ui.views.ImageAttachmentFrameLayout;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
import me.grishka.appkit.imageloader.ImageLoaderViewHolder;
|
||||
import me.grishka.appkit.imageloader.requests.ImageLoaderRequest;
|
||||
import me.grishka.appkit.utils.CubicBezierInterpolator;
|
||||
|
||||
public abstract class ImageStatusDisplayItem extends StatusDisplayItem{
|
||||
public final int index;
|
||||
public final int totalPhotos;
|
||||
protected Attachment attachment;
|
||||
protected ImageLoaderRequest request;
|
||||
public final Status status;
|
||||
public final PhotoLayoutHelper.TiledLayoutResult tiledLayout;
|
||||
public final PhotoLayoutHelper.TiledLayoutResult.Tile thisTile;
|
||||
public int horizontalInset;
|
||||
|
||||
public ImageStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, Attachment photo, Status status, int index, int totalPhotos, PhotoLayoutHelper.TiledLayoutResult tiledLayout, PhotoLayoutHelper.TiledLayoutResult.Tile thisTile){
|
||||
super(parentID, parentFragment);
|
||||
this.attachment=photo;
|
||||
this.status=status;
|
||||
this.index=index;
|
||||
this.totalPhotos=totalPhotos;
|
||||
this.tiledLayout=tiledLayout;
|
||||
this.thisTile=thisTile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getImageCount(){
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageLoaderRequest getImageRequest(int index){
|
||||
return request;
|
||||
}
|
||||
|
||||
public static abstract class Holder<T extends ImageStatusDisplayItem> extends StatusDisplayItem.Holder<T> implements ImageLoaderViewHolder{
|
||||
public final ImageView photo;
|
||||
private ImageAttachmentFrameLayout layout;
|
||||
private BlurhashCrossfadeDrawable crossfadeDrawable=new BlurhashCrossfadeDrawable();
|
||||
private boolean didClear;
|
||||
|
||||
private AnimatorSet currentAnim;
|
||||
private final FrameLayout altTextWrapper;
|
||||
private final TextView altTextButton;
|
||||
private final ImageView noAltTextButton;
|
||||
private final View altTextScroller;
|
||||
private final ImageButton altTextClose;
|
||||
private final TextView altText, noAltText;
|
||||
|
||||
private View altOrNoAltButton;
|
||||
private boolean altTextShown;
|
||||
|
||||
public Holder(Activity activity, @LayoutRes int layout, ViewGroup parent){
|
||||
super(activity, layout, parent);
|
||||
photo=findViewById(R.id.photo);
|
||||
photo.setOnClickListener(this::onViewClick);
|
||||
this.layout=(ImageAttachmentFrameLayout)itemView;
|
||||
|
||||
altTextWrapper=findViewById(R.id.alt_text_wrapper);
|
||||
altTextButton=findViewById(R.id.alt_button);
|
||||
noAltTextButton=findViewById(R.id.no_alt_button);
|
||||
altTextScroller=findViewById(R.id.alt_text_scroller);
|
||||
altTextClose=findViewById(R.id.alt_text_close);
|
||||
altText=findViewById(R.id.alt_text);
|
||||
noAltText=findViewById(R.id.no_alt_text);
|
||||
|
||||
altTextButton.setOnClickListener(this::onShowHideClick);
|
||||
noAltTextButton.setOnClickListener(this::onShowHideClick);
|
||||
altTextClose.setOnClickListener(this::onShowHideClick);
|
||||
// altTextScroller.setNestedScrollingEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBind(ImageStatusDisplayItem item){
|
||||
layout.setLayout(item.tiledLayout, item.thisTile, item.horizontalInset);
|
||||
crossfadeDrawable.setSize(item.attachment.getWidth(), item.attachment.getHeight());
|
||||
crossfadeDrawable.setBlurhashDrawable(item.attachment.blurhashPlaceholder);
|
||||
crossfadeDrawable.setCrossfadeAlpha(item.status.spoilerRevealed ? 0f : 1f);
|
||||
photo.setImageDrawable(null);
|
||||
photo.setImageDrawable(crossfadeDrawable);
|
||||
photo.setContentDescription(TextUtils.isEmpty(item.attachment.description) ? item.parentFragment.getString(R.string.media_no_description) : item.attachment.description);
|
||||
didClear=false;
|
||||
|
||||
if (currentAnim != null) currentAnim.cancel();
|
||||
|
||||
boolean altTextMissing = TextUtils.isEmpty(item.attachment.description);
|
||||
altOrNoAltButton = altTextMissing ? noAltTextButton : altTextButton;
|
||||
altTextShown=false;
|
||||
|
||||
altTextScroller.setVisibility(View.GONE);
|
||||
altTextClose.setVisibility(View.GONE);
|
||||
altTextButton.setVisibility(View.VISIBLE);
|
||||
noAltTextButton.setVisibility(View.VISIBLE);
|
||||
altTextButton.setAlpha(1f);
|
||||
noAltTextButton.setAlpha(1f);
|
||||
altTextWrapper.setVisibility(View.VISIBLE);
|
||||
|
||||
if (altTextMissing){
|
||||
if (GlobalUserPreferences.showNoAltIndicator) {
|
||||
noAltTextButton.setVisibility(View.VISIBLE);
|
||||
noAltText.setVisibility(View.VISIBLE);
|
||||
altTextWrapper.setBackgroundResource(R.drawable.bg_image_no_alt_overlay);
|
||||
altTextButton.setVisibility(View.GONE);
|
||||
altText.setVisibility(View.GONE);
|
||||
} else {
|
||||
altTextWrapper.setVisibility(View.GONE);
|
||||
}
|
||||
}else{
|
||||
if (GlobalUserPreferences.showAltIndicator) {
|
||||
noAltTextButton.setVisibility(View.GONE);
|
||||
noAltText.setVisibility(View.GONE);
|
||||
altTextWrapper.setBackgroundResource(R.drawable.bg_image_alt_overlay);
|
||||
altTextButton.setVisibility(View.VISIBLE);
|
||||
altTextButton.setText(R.string.sk_alt_button);
|
||||
altText.setVisibility(View.VISIBLE);
|
||||
altText.setText(item.attachment.description);
|
||||
altText.setPadding(0, 0, 0, 0);
|
||||
} else {
|
||||
altTextWrapper.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void onShowHideClick(View v){
|
||||
boolean show=v.getId()==R.id.alt_button || v.getId()==R.id.no_alt_button;
|
||||
|
||||
if(altTextShown==show)
|
||||
return;
|
||||
if(currentAnim!=null)
|
||||
currentAnim.cancel();
|
||||
|
||||
altTextShown=show;
|
||||
if(show){
|
||||
altTextScroller.setVisibility(View.VISIBLE);
|
||||
altTextClose.setVisibility(View.VISIBLE);
|
||||
}else{
|
||||
altOrNoAltButton.setVisibility(View.VISIBLE);
|
||||
// Hide these views temporarily so FrameLayout measures correctly
|
||||
altTextScroller.setVisibility(View.GONE);
|
||||
altTextClose.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
// This is the current size...
|
||||
int prevLeft=altTextWrapper.getLeft();
|
||||
int prevRight=altTextWrapper.getRight();
|
||||
int prevTop=altTextWrapper.getTop();
|
||||
altTextWrapper.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener(){
|
||||
@Override
|
||||
public boolean onPreDraw(){
|
||||
altTextWrapper.getViewTreeObserver().removeOnPreDrawListener(this);
|
||||
|
||||
// ...and this is after the layout pass, right now the FrameLayout has its final size, but we animate that change
|
||||
if(!show){
|
||||
// Show these views again so they're visible for the duration of the animation.
|
||||
// No one would notice they were missing during measure/layout.
|
||||
altTextScroller.setVisibility(View.VISIBLE);
|
||||
altTextClose.setVisibility(View.VISIBLE);
|
||||
}
|
||||
AnimatorSet set=new AnimatorSet();
|
||||
set.playTogether(
|
||||
ObjectAnimator.ofInt(altTextWrapper, "left", prevLeft, altTextWrapper.getLeft()),
|
||||
ObjectAnimator.ofInt(altTextWrapper, "right", prevRight, altTextWrapper.getRight()),
|
||||
ObjectAnimator.ofInt(altTextWrapper, "top", prevTop, altTextWrapper.getTop()),
|
||||
ObjectAnimator.ofFloat(altOrNoAltButton, View.ALPHA, show ? 1f : 0f, show ? 0f : 1f),
|
||||
ObjectAnimator.ofFloat(altTextScroller, View.ALPHA, show ? 0f : 1f, show ? 1f : 0f),
|
||||
ObjectAnimator.ofFloat(altTextClose, View.ALPHA, show ? 0f : 1f, show ? 1f : 0f)
|
||||
);
|
||||
set.setDuration(300);
|
||||
set.setInterpolator(CubicBezierInterpolator.DEFAULT);
|
||||
set.addListener(new AnimatorListenerAdapter(){
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation){
|
||||
if(show){
|
||||
altOrNoAltButton.setVisibility(View.GONE);
|
||||
}else{
|
||||
altTextScroller.setVisibility(View.GONE);
|
||||
altTextClose.setVisibility(View.GONE);
|
||||
}
|
||||
currentAnim=null;
|
||||
}
|
||||
});
|
||||
set.start();
|
||||
currentAnim=set;
|
||||
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setImage(int index, Drawable drawable){
|
||||
crossfadeDrawable.setImageDrawable(drawable);
|
||||
if(didClear && item.status.spoilerRevealed)
|
||||
crossfadeDrawable.animateAlpha(0f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearImage(int index){
|
||||
crossfadeDrawable.setCrossfadeAlpha(1f);
|
||||
crossfadeDrawable.setImageDrawable(null);
|
||||
didClear=true;
|
||||
}
|
||||
|
||||
private void onViewClick(View v){
|
||||
if(!item.status.spoilerRevealed){
|
||||
item.parentFragment.onRevealSpoilerClick(this);
|
||||
}else if(item.parentFragment instanceof PhotoViewerHost){
|
||||
Status contentStatus=item.status.reblog!=null ? item.status.reblog : item.status;
|
||||
((PhotoViewerHost) item.parentFragment).openPhotoViewer(item.parentID, item.status, contentStatus.mediaAttachments.indexOf(item.attachment));
|
||||
}
|
||||
}
|
||||
|
||||
public void setRevealed(boolean revealed){
|
||||
crossfadeDrawable.animateAlpha(revealed ? 0f : 1f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,311 @@
|
||||
package org.joinmastodon.android.ui.displayitems;
|
||||
|
||||
import static org.joinmastodon.android.ui.utils.MediaAttachmentViewController.altWrapPadding;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.app.Activity;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.joinmastodon.android.GlobalUserPreferences;
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
||||
import org.joinmastodon.android.model.Attachment;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.ui.PhotoLayoutHelper;
|
||||
import org.joinmastodon.android.ui.photoviewer.PhotoViewerHost;
|
||||
import org.joinmastodon.android.ui.utils.MediaAttachmentViewController;
|
||||
import org.joinmastodon.android.ui.views.FrameLayoutThatOnlyMeasuresFirstChild;
|
||||
import org.joinmastodon.android.ui.views.MediaGridLayout;
|
||||
import org.joinmastodon.android.utils.TypedObjectPool;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import me.grishka.appkit.imageloader.ImageLoaderViewHolder;
|
||||
import me.grishka.appkit.imageloader.requests.ImageLoaderRequest;
|
||||
import me.grishka.appkit.imageloader.requests.UrlImageLoaderRequest;
|
||||
import me.grishka.appkit.utils.CubicBezierInterpolator;
|
||||
|
||||
public class MediaGridStatusDisplayItem extends StatusDisplayItem{
|
||||
private static final String TAG="MediaGridDisplayItem";
|
||||
|
||||
private final PhotoLayoutHelper.TiledLayoutResult tiledLayout;
|
||||
private final TypedObjectPool<GridItemType, MediaAttachmentViewController> viewPool;
|
||||
private final List<Attachment> attachments;
|
||||
private final ArrayList<ImageLoaderRequest> requests=new ArrayList<>();
|
||||
public final Status status;
|
||||
|
||||
public MediaGridStatusDisplayItem(String parentID, BaseStatusListFragment<?> parentFragment, PhotoLayoutHelper.TiledLayoutResult tiledLayout, List<Attachment> attachments, Status status){
|
||||
super(parentID, parentFragment);
|
||||
this.tiledLayout=tiledLayout;
|
||||
this.viewPool=parentFragment.getAttachmentViewsPool();
|
||||
this.attachments=attachments;
|
||||
this.status=status;
|
||||
for(Attachment att:attachments){
|
||||
requests.add(new UrlImageLoaderRequest(switch(att.type){
|
||||
case IMAGE -> att.url;
|
||||
case VIDEO, GIFV -> att.previewUrl;
|
||||
default -> throw new IllegalStateException("Unexpected value: "+att.type);
|
||||
}, 1000, 1000));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type getType(){
|
||||
return Type.MEDIA_GRID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getImageCount(){
|
||||
return requests.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImageLoaderRequest getImageRequest(int index){
|
||||
return requests.get(index);
|
||||
}
|
||||
|
||||
public enum GridItemType{
|
||||
PHOTO,
|
||||
VIDEO,
|
||||
GIFV
|
||||
}
|
||||
|
||||
public static class Holder extends StatusDisplayItem.Holder<MediaGridStatusDisplayItem> implements ImageLoaderViewHolder{
|
||||
private final FrameLayout wrapper;
|
||||
private final MediaGridLayout layout;
|
||||
private final View.OnClickListener clickListener=this::onViewClick, altTextClickListener=this::onAltTextClick;
|
||||
private final ArrayList<MediaAttachmentViewController> controllers=new ArrayList<>();
|
||||
|
||||
private final FrameLayout altTextWrapper;
|
||||
private final TextView altTextButton;
|
||||
private final ImageView noAltTextButton;
|
||||
private final View altTextScroller;
|
||||
private final ImageButton altTextClose;
|
||||
private final TextView altText, noAltText;
|
||||
|
||||
private int altTextIndex=-1;
|
||||
private Animator altTextAnimator;
|
||||
|
||||
public Holder(Activity activity, ViewGroup parent){
|
||||
super(new FrameLayoutThatOnlyMeasuresFirstChild(activity));
|
||||
wrapper=(FrameLayout)itemView;
|
||||
layout=new MediaGridLayout(activity);
|
||||
wrapper.addView(layout);
|
||||
|
||||
activity.getLayoutInflater().inflate(R.layout.overlay_image_alt_text, wrapper);
|
||||
altTextWrapper=findViewById(R.id.alt_text_wrapper);
|
||||
altTextButton=findViewById(R.id.alt_button);
|
||||
noAltTextButton=findViewById(R.id.no_alt_button);
|
||||
altTextScroller=findViewById(R.id.alt_text_scroller);
|
||||
altTextClose=findViewById(R.id.alt_text_close);
|
||||
altText=findViewById(R.id.alt_text);
|
||||
noAltText=findViewById(R.id.no_alt_text);
|
||||
altTextClose.setOnClickListener(this::onAltTextCloseClick);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBind(MediaGridStatusDisplayItem item){
|
||||
if(altTextAnimator!=null)
|
||||
altTextAnimator.cancel();
|
||||
|
||||
layout.setTiledLayout(item.tiledLayout);
|
||||
for(MediaAttachmentViewController c:controllers){
|
||||
item.viewPool.reuse(c.type, c);
|
||||
}
|
||||
layout.removeAllViews();
|
||||
controllers.clear();
|
||||
int i=0;
|
||||
for(Attachment att:item.attachments){
|
||||
MediaAttachmentViewController c=item.viewPool.obtain(switch(att.type){
|
||||
case IMAGE -> GridItemType.PHOTO;
|
||||
case VIDEO -> GridItemType.VIDEO;
|
||||
case GIFV -> GridItemType.GIFV;
|
||||
default -> throw new IllegalStateException("Unexpected value: "+att.type);
|
||||
});
|
||||
if(c.view.getLayoutParams()==null)
|
||||
c.view.setLayoutParams(new MediaGridLayout.LayoutParams(item.tiledLayout.tiles[i]));
|
||||
else
|
||||
((MediaGridLayout.LayoutParams) c.view.getLayoutParams()).tile=item.tiledLayout.tiles[i];
|
||||
layout.addView(c.view);
|
||||
c.view.setOnClickListener(clickListener);
|
||||
c.view.setTag(i);
|
||||
if(c.btnsWrap!=null){
|
||||
c.btnsWrap.setOnClickListener(altTextClickListener);
|
||||
c.btnsWrap.setTag(i);
|
||||
c.btnsWrap.setAlpha(1f);
|
||||
}
|
||||
controllers.add(c);
|
||||
c.bind(att, item.status);
|
||||
i++;
|
||||
}
|
||||
altTextButton.setVisibility(View.VISIBLE);
|
||||
noAltTextButton.setVisibility(View.VISIBLE);
|
||||
altTextWrapper.setVisibility(View.GONE);
|
||||
altTextIndex=-1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setImage(int index, Drawable drawable){
|
||||
controllers.get(index).setImage(drawable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearImage(int index){
|
||||
controllers.get(index).clearImage();
|
||||
}
|
||||
|
||||
private void onViewClick(View v){
|
||||
int index=(Integer)v.getTag();
|
||||
if(!item.status.spoilerRevealed){
|
||||
item.parentFragment.onRevealSpoilerClick(this);
|
||||
}else if(item.parentFragment instanceof PhotoViewerHost){
|
||||
((PhotoViewerHost) item.parentFragment).openPhotoViewer(item.parentID, item.status, index, this);
|
||||
}
|
||||
}
|
||||
|
||||
private void onAltTextClick(View v){
|
||||
if(altTextAnimator!=null)
|
||||
altTextAnimator.cancel();
|
||||
v.setVisibility(View.INVISIBLE);
|
||||
int index=(Integer)v.getTag();
|
||||
altTextIndex=index;
|
||||
Attachment att=item.attachments.get(index);
|
||||
boolean hasAltText = !TextUtils.isEmpty(att.description);
|
||||
altTextButton.setVisibility(hasAltText && GlobalUserPreferences.showAltIndicator ? View.VISIBLE : View.GONE);
|
||||
noAltTextButton.setVisibility(!hasAltText && GlobalUserPreferences.showNoAltIndicator ? View.VISIBLE : View.GONE);
|
||||
altText.setVisibility(hasAltText && GlobalUserPreferences.showAltIndicator ? View.VISIBLE : View.GONE);
|
||||
noAltText.setVisibility(!hasAltText && GlobalUserPreferences.showNoAltIndicator ? View.VISIBLE : View.GONE);
|
||||
altText.setText(att.description);
|
||||
altTextWrapper.setVisibility(View.VISIBLE);
|
||||
altTextWrapper.setBackgroundResource(hasAltText ? R.drawable.bg_image_alt_overlay : R.drawable.bg_image_no_alt_overlay);
|
||||
altTextWrapper.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener(){
|
||||
@Override
|
||||
public boolean onPreDraw(){
|
||||
altTextWrapper.getViewTreeObserver().removeOnPreDrawListener(this);
|
||||
|
||||
int[] loc={0, 0};
|
||||
v.getLocationInWindow(loc);
|
||||
int btnL=loc[0], btnT=loc[1];
|
||||
wrapper.getLocationInWindow(loc);
|
||||
btnL-=loc[0];
|
||||
btnT-=loc[1];
|
||||
|
||||
ArrayList<Animator> anims=new ArrayList<>();
|
||||
anims.add(ObjectAnimator.ofFloat(altTextButton, View.ALPHA, 1, 0));
|
||||
anims.add(ObjectAnimator.ofFloat(noAltTextButton, View.ALPHA, 1, 0));
|
||||
anims.add(ObjectAnimator.ofFloat(altTextScroller, View.ALPHA, 0, 1));
|
||||
anims.add(ObjectAnimator.ofFloat(altTextClose, View.ALPHA, 0, 1));
|
||||
anims.add(ObjectAnimator.ofInt(altTextWrapper, "left", btnL+altWrapPadding[0], altTextWrapper.getLeft()));
|
||||
anims.add(ObjectAnimator.ofInt(altTextWrapper, "top", btnT+altWrapPadding[1], altTextWrapper.getTop()));
|
||||
anims.add(ObjectAnimator.ofInt(altTextWrapper, "right", btnL+v.getWidth()-altWrapPadding[2], altTextWrapper.getRight()));
|
||||
anims.add(ObjectAnimator.ofInt(altTextWrapper, "bottom", btnT+v.getHeight()-altWrapPadding[3], altTextWrapper.getBottom()));
|
||||
for(Animator a:anims)
|
||||
a.setDuration(300);
|
||||
|
||||
for(MediaAttachmentViewController c:controllers){
|
||||
if(c.btnsWrap!=null && c.btnsWrap!=v){
|
||||
anims.add(ObjectAnimator.ofFloat(c.btnsWrap, View.ALPHA, 1, 0).setDuration(150));
|
||||
}
|
||||
}
|
||||
|
||||
AnimatorSet set=new AnimatorSet();
|
||||
set.playTogether(anims);
|
||||
set.setInterpolator(CubicBezierInterpolator.DEFAULT);
|
||||
set.addListener(new AnimatorListenerAdapter(){
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation){
|
||||
altTextAnimator=null;
|
||||
for(MediaAttachmentViewController c:controllers){
|
||||
if(c.btnsWrap!=null){
|
||||
c.btnsWrap.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
altTextAnimator=set;
|
||||
set.start();
|
||||
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void onAltTextCloseClick(View v){
|
||||
if(altTextAnimator!=null)
|
||||
altTextAnimator.cancel();
|
||||
|
||||
View btn=controllers.get(altTextIndex).btnsWrap;
|
||||
for(MediaAttachmentViewController c:controllers){
|
||||
if(c.btnsWrap!=null && c.btnsWrap!=btn) {
|
||||
c.btnsWrap.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
int[] loc={0, 0};
|
||||
btn.getLocationInWindow(loc);
|
||||
int btnL=loc[0], btnT=loc[1];
|
||||
wrapper.getLocationInWindow(loc);
|
||||
btnL-=loc[0];
|
||||
btnT-=loc[1];
|
||||
|
||||
ArrayList<Animator> anims=new ArrayList<>();
|
||||
anims.add(ObjectAnimator.ofFloat(altTextButton, View.ALPHA, 1));
|
||||
anims.add(ObjectAnimator.ofFloat(noAltTextButton, View.ALPHA, 1));
|
||||
anims.add(ObjectAnimator.ofFloat(altTextScroller, View.ALPHA, 0));
|
||||
anims.add(ObjectAnimator.ofFloat(altTextClose, View.ALPHA, 0));
|
||||
anims.add(ObjectAnimator.ofInt(altTextWrapper, "left", btnL+altWrapPadding[0]));
|
||||
anims.add(ObjectAnimator.ofInt(altTextWrapper, "top", btnT+altWrapPadding[1]));
|
||||
anims.add(ObjectAnimator.ofInt(altTextWrapper, "right", btnL+btn.getWidth()-altWrapPadding[2]));
|
||||
anims.add(ObjectAnimator.ofInt(altTextWrapper, "bottom", btnT+btn.getHeight()-altWrapPadding[3]));
|
||||
for(Animator a:anims)
|
||||
a.setDuration(300);
|
||||
|
||||
for(MediaAttachmentViewController c:controllers){
|
||||
// if(c.btnsWrap!=null && c.btnsWrap!=btn){
|
||||
anims.add(ObjectAnimator.ofFloat(c.btnsWrap, View.ALPHA, 1).setDuration(150));
|
||||
// }
|
||||
}
|
||||
|
||||
AnimatorSet set=new AnimatorSet();
|
||||
set.playTogether(anims);
|
||||
set.setInterpolator(CubicBezierInterpolator.DEFAULT);
|
||||
set.addListener(new AnimatorListenerAdapter(){
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation){
|
||||
altTextAnimator=null;
|
||||
altTextWrapper.setVisibility(View.GONE);
|
||||
btn.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
altTextAnimator=set;
|
||||
set.start();
|
||||
}
|
||||
|
||||
public void setRevealed(boolean revealed){
|
||||
for(MediaAttachmentViewController c:controllers){
|
||||
c.setRevealed(revealed);
|
||||
}
|
||||
}
|
||||
|
||||
public MediaAttachmentViewController getViewController(int index){
|
||||
return controllers.get(index);
|
||||
}
|
||||
|
||||
public void setClipChildren(boolean clip){
|
||||
layout.setClipChildren(clip);
|
||||
wrapper.setClipChildren(clip);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
package org.joinmastodon.android.ui.displayitems;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.app.Activity;
|
||||
import android.text.TextUtils;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.joinmastodon.android.GlobalUserPreferences;
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
||||
import org.joinmastodon.android.model.Attachment;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.ui.PhotoLayoutHelper;
|
||||
|
||||
import me.grishka.appkit.imageloader.requests.UrlImageLoaderRequest;
|
||||
import me.grishka.appkit.utils.CubicBezierInterpolator;
|
||||
import me.grishka.appkit.utils.V;
|
||||
|
||||
public class PhotoStatusDisplayItem extends ImageStatusDisplayItem{
|
||||
public PhotoStatusDisplayItem(String parentID, Status status, Attachment photo, BaseStatusListFragment parentFragment, int index, int totalPhotos, PhotoLayoutHelper.TiledLayoutResult tiledLayout, PhotoLayoutHelper.TiledLayoutResult.Tile thisTile){
|
||||
super(parentID, parentFragment, photo, status, index, totalPhotos, tiledLayout, thisTile);
|
||||
request=new UrlImageLoaderRequest(photo.url, 1000, 1000);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type getType(){
|
||||
return Type.PHOTO;
|
||||
}
|
||||
|
||||
public static class Holder extends ImageStatusDisplayItem.Holder<PhotoStatusDisplayItem> {
|
||||
public Holder(Activity activity, ViewGroup parent) {
|
||||
super(activity, R.layout.display_item_photo, parent);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -35,8 +35,9 @@ public class PollOptionStatusDisplayItem extends StatusDisplayItem{
|
||||
text=HtmlParser.parseCustomEmoji(option.title, poll.emojis);
|
||||
emojiHelper.setText(text);
|
||||
showResults=poll.isExpired() || poll.voted;
|
||||
if(showResults && option.votesCount!=null && poll.votersCount>0){
|
||||
votesFraction=(float)option.votesCount/(float)poll.votersCount;
|
||||
int total=poll.votersCount>0 ? poll.votersCount : poll.votesCount;
|
||||
if(showResults && option.votesCount!=null && total>0){
|
||||
votesFraction=(float)option.votesCount/(float)total;
|
||||
int mostVotedCount=0;
|
||||
for(Poll.Option opt:poll.options)
|
||||
mostVotedCount=Math.max(mostVotedCount, opt.votesCount);
|
||||
|
||||
@@ -27,6 +27,7 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import me.grishka.appkit.imageloader.ImageLoaderViewHolder;
|
||||
import me.grishka.appkit.imageloader.requests.ImageLoaderRequest;
|
||||
import me.grishka.appkit.utils.V;
|
||||
|
||||
public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
||||
private CharSequence text;
|
||||
@@ -37,6 +38,8 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
||||
private int iconEnd;
|
||||
private CustomEmojiHelper emojiHelper=new CustomEmojiHelper();
|
||||
private View.OnClickListener handleClick;
|
||||
private boolean isLastLine = true;
|
||||
private int lineNo = 0;
|
||||
|
||||
public ReblogOrReplyLineStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, CharSequence text, List<Emoji> emojis, @DrawableRes int icon, StatusPrivacy visibility, @Nullable View.OnClickListener handleClick){
|
||||
super(parentID, parentFragment);
|
||||
@@ -51,6 +54,14 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
||||
updateVisibility(visibility);
|
||||
}
|
||||
|
||||
public void setIsLastLine(boolean isLastLine) {
|
||||
this.isLastLine = isLastLine;
|
||||
}
|
||||
|
||||
public void setLineNo(int lineNo) {
|
||||
this.lineNo = lineNo;
|
||||
}
|
||||
|
||||
public void updateVisibility(StatusPrivacy visibility) {
|
||||
this.visibility = visibility;
|
||||
this.iconEnd = visibility != null ? switch (visibility) {
|
||||
@@ -78,18 +89,21 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
||||
|
||||
public static class Holder extends StatusDisplayItem.Holder<ReblogOrReplyLineStatusDisplayItem> implements ImageLoaderViewHolder{
|
||||
private final TextView text;
|
||||
private final View frame;
|
||||
|
||||
public Holder(Activity activity, ViewGroup parent){
|
||||
super(activity, R.layout.display_item_reblog_or_reply_line, parent);
|
||||
text=findViewById(R.id.text);
|
||||
frame=findViewById(R.id.frame);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBind(ReblogOrReplyLineStatusDisplayItem item){
|
||||
text.setText(item.text);
|
||||
text.setCompoundDrawablesRelativeWithIntrinsicBounds(item.icon, 0, item.iconEnd, 0);
|
||||
if(item.handleClick!=null) text.setOnClickListener(item.handleClick);
|
||||
text.setEnabled(!item.inset);
|
||||
text.setClickable(!item.inset);
|
||||
text.setOnClickListener(item.handleClick);
|
||||
text.setEnabled(!item.inset && item.handleClick != null);
|
||||
text.setClickable(!item.inset && item.handleClick != null);
|
||||
Context ctx = itemView.getContext();
|
||||
int visibilityText = item.visibility != null ? switch (item.visibility) {
|
||||
case PUBLIC -> R.string.visibility_public;
|
||||
@@ -100,6 +114,10 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
||||
if (visibilityText != 0) text.setContentDescription(item.text + " (" + ctx.getString(visibilityText) + ")");
|
||||
if(Build.VERSION.SDK_INT<Build.VERSION_CODES.N)
|
||||
UiUtils.fixCompoundDrawableTintOnAndroid6(text);
|
||||
ViewGroup.MarginLayoutParams params = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
params.bottomMargin = V.dp(item.isLastLine ? -12 : -18);
|
||||
params.leftMargin = V.dp(13) * item.lineNo;
|
||||
frame.setLayoutParams(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -12,7 +12,6 @@ import org.joinmastodon.android.api.session.AccountSessionManager;
|
||||
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
||||
import org.joinmastodon.android.fragments.HashtagTimelineFragment;
|
||||
import org.joinmastodon.android.fragments.HomeTabFragment;
|
||||
import org.joinmastodon.android.fragments.HomeTimelineFragment;
|
||||
import org.joinmastodon.android.fragments.ListTimelineFragment;
|
||||
import org.joinmastodon.android.fragments.ProfileFragment;
|
||||
import org.joinmastodon.android.fragments.ThreadFragment;
|
||||
@@ -20,7 +19,6 @@ import org.joinmastodon.android.model.Account;
|
||||
import org.joinmastodon.android.model.Attachment;
|
||||
import org.joinmastodon.android.model.DisplayItemsParent;
|
||||
import org.joinmastodon.android.model.Filter;
|
||||
import org.joinmastodon.android.model.Hashtag;
|
||||
import org.joinmastodon.android.model.Notification;
|
||||
import org.joinmastodon.android.model.Poll;
|
||||
import org.joinmastodon.android.model.ScheduledStatus;
|
||||
@@ -33,8 +31,6 @@ import org.parceler.Parcels;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import me.grishka.appkit.Nav;
|
||||
@@ -68,10 +64,7 @@ public abstract class StatusDisplayItem{
|
||||
case HEADER -> new HeaderStatusDisplayItem.Holder(activity, parent);
|
||||
case REBLOG_OR_REPLY_LINE -> new ReblogOrReplyLineStatusDisplayItem.Holder(activity, parent);
|
||||
case TEXT -> new TextStatusDisplayItem.Holder(activity, parent);
|
||||
case PHOTO -> new PhotoStatusDisplayItem.Holder(activity, parent);
|
||||
case GIFV -> new GifVStatusDisplayItem.Holder(activity, parent);
|
||||
case AUDIO -> new AudioStatusDisplayItem.Holder(activity, parent);
|
||||
case VIDEO -> new VideoStatusDisplayItem.Holder(activity, parent);
|
||||
case POLL_OPTION -> new PollOptionStatusDisplayItem.Holder(activity, parent);
|
||||
case POLL_FOOTER -> new PollFooterStatusDisplayItem.Holder(activity, parent);
|
||||
case CARD -> new LinkCardStatusDisplayItem.Holder(activity, parent);
|
||||
@@ -81,6 +74,7 @@ public abstract class StatusDisplayItem{
|
||||
case HASHTAG -> new HashtagStatusDisplayItem.Holder(activity, parent);
|
||||
case GAP -> new GapStatusDisplayItem.Holder(activity, parent);
|
||||
case EXTENDED_FOOTER -> new ExtendedFooterStatusDisplayItem.Holder(activity, parent);
|
||||
case MEDIA_GRID -> new MediaGridStatusDisplayItem.Holder(activity, parent);
|
||||
case WARNING -> new WarningFilteredStatusDisplayItem.Holder(activity, parent);
|
||||
};
|
||||
}
|
||||
@@ -120,18 +114,10 @@ public abstract class StatusDisplayItem{
|
||||
args.putParcelable("profileAccount", Parcels.wrap(status.account));
|
||||
Nav.go(fragment.getActivity(), ProfileFragment.class, args);
|
||||
}));
|
||||
}else if(status.inReplyToAccountId!=null && knownAccounts.containsKey(status.inReplyToAccountId)){
|
||||
Account account=Objects.requireNonNull(knownAccounts.get(status.inReplyToAccountId));
|
||||
items.add(new ReblogOrReplyLineStatusDisplayItem(parentID, fragment, fragment.getString(R.string.in_reply_to, account.displayName), account.emojis, R.drawable.ic_fluent_arrow_reply_20_filled, null, i->{
|
||||
args.putParcelable("profileAccount", Parcels.wrap(account));
|
||||
Nav.go(fragment.getActivity(), ProfileFragment.class, args);
|
||||
}));
|
||||
} else if (
|
||||
!(status.tags.isEmpty() ||
|
||||
fragment instanceof HashtagTimelineFragment ||
|
||||
fragment instanceof ListTimelineFragment
|
||||
) && fragment.getParentFragment() instanceof HomeTabFragment home
|
||||
) {
|
||||
} else if (!(status.tags.isEmpty() ||
|
||||
fragment instanceof HashtagTimelineFragment ||
|
||||
fragment instanceof ListTimelineFragment
|
||||
) && fragment.getParentFragment() instanceof HomeTabFragment home) {
|
||||
home.getHashtags().stream()
|
||||
.filter(followed -> status.tags.stream()
|
||||
.anyMatch(hashtag -> followed.name.equalsIgnoreCase(hashtag.name)))
|
||||
@@ -146,6 +132,32 @@ public abstract class StatusDisplayItem{
|
||||
}
|
||||
)));
|
||||
}
|
||||
|
||||
if(statusForContent.inReplyToAccountId!=null){
|
||||
Account account = knownAccounts.get(statusForContent.inReplyToAccountId);
|
||||
View.OnClickListener handleClick = account == null ? null : i -> {
|
||||
args.putParcelable("profileAccount", Parcels.wrap(account));
|
||||
Nav.go(fragment.getActivity(), ProfileFragment.class, args);
|
||||
};
|
||||
String text = account != null ? fragment.getString(R.string.in_reply_to, account.displayName) : fragment.getString(R.string.sk_in_reply);
|
||||
items.add(new ReblogOrReplyLineStatusDisplayItem(
|
||||
parentID, fragment, text, account == null ? List.of() : account.emojis,
|
||||
R.drawable.ic_fluent_arrow_reply_20_filled, null, handleClick
|
||||
));
|
||||
}
|
||||
|
||||
int l = 0;
|
||||
ReblogOrReplyLineStatusDisplayItem lastLine = null;
|
||||
for (StatusDisplayItem item : items) {
|
||||
if (item instanceof ReblogOrReplyLineStatusDisplayItem line) {
|
||||
line.setLineNo(l);
|
||||
line.setIsLastLine(false);
|
||||
lastLine = line;
|
||||
l++;
|
||||
}
|
||||
}
|
||||
if (lastLine != null) lastLine.setIsLastLine(true);
|
||||
|
||||
HeaderStatusDisplayItem header;
|
||||
items.add(header=new HeaderStatusDisplayItem(parentID, statusForContent.account, statusForContent.createdAt, fragment, accountID, statusForContent, null, notification, scheduledStatus));
|
||||
if(!TextUtils.isEmpty(statusForContent.content))
|
||||
@@ -154,20 +166,8 @@ public abstract class StatusDisplayItem{
|
||||
header.needBottomPadding=true;
|
||||
List<Attachment> imageAttachments=statusForContent.mediaAttachments.stream().filter(att->att.type.isImage()).collect(Collectors.toList());
|
||||
if(!imageAttachments.isEmpty()){
|
||||
int photoIndex=0;
|
||||
PhotoLayoutHelper.TiledLayoutResult layout=PhotoLayoutHelper.processThumbs(1000, 1910, imageAttachments);
|
||||
for(Attachment attachment:imageAttachments){
|
||||
if(attachment.type==Attachment.Type.IMAGE){
|
||||
items.add(new PhotoStatusDisplayItem(parentID, statusForContent, attachment, fragment, photoIndex, imageAttachments.size(), layout, layout.tiles[photoIndex]));
|
||||
}else if(attachment.type==Attachment.Type.GIFV){
|
||||
items.add(new GifVStatusDisplayItem(parentID, statusForContent, attachment, fragment, photoIndex, imageAttachments.size(), layout, layout.tiles[photoIndex]));
|
||||
}else if(attachment.type==Attachment.Type.VIDEO){
|
||||
items.add(new VideoStatusDisplayItem(parentID, statusForContent, attachment, fragment, photoIndex, imageAttachments.size(), layout, layout.tiles[photoIndex]));
|
||||
}else{
|
||||
throw new IllegalStateException("This isn't supposed to happen, type is "+attachment.type);
|
||||
}
|
||||
photoIndex++;
|
||||
}
|
||||
PhotoLayoutHelper.TiledLayoutResult layout=PhotoLayoutHelper.processThumbs(imageAttachments);
|
||||
items.add(new MediaGridStatusDisplayItem(parentID, fragment, layout, imageAttachments, statusForContent));
|
||||
}
|
||||
for(Attachment att:statusForContent.mediaAttachments){
|
||||
if(att.type==Attachment.Type.AUDIO){
|
||||
@@ -211,9 +211,6 @@ public abstract class StatusDisplayItem{
|
||||
HEADER,
|
||||
REBLOG_OR_REPLY_LINE,
|
||||
TEXT,
|
||||
PHOTO,
|
||||
VIDEO,
|
||||
GIFV,
|
||||
AUDIO,
|
||||
POLL_OPTION,
|
||||
POLL_FOOTER,
|
||||
@@ -223,8 +220,9 @@ public abstract class StatusDisplayItem{
|
||||
ACCOUNT,
|
||||
HASHTAG,
|
||||
GAP,
|
||||
WARNING,
|
||||
EXTENDED_FOOTER
|
||||
EXTENDED_FOOTER,
|
||||
MEDIA_GRID,
|
||||
WARNING
|
||||
}
|
||||
|
||||
public static abstract class Holder<T extends StatusDisplayItem> extends BindableViewHolder<T> implements UsableRecyclerView.DisableableClickable{
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
package org.joinmastodon.android.ui.displayitems;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.graphics.Outline;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewOutlineProvider;
|
||||
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
||||
import org.joinmastodon.android.model.Attachment;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.ui.PhotoLayoutHelper;
|
||||
|
||||
import me.grishka.appkit.imageloader.requests.UrlImageLoaderRequest;
|
||||
|
||||
public class VideoStatusDisplayItem extends ImageStatusDisplayItem{
|
||||
public VideoStatusDisplayItem(String parentID, Status status, Attachment attachment, BaseStatusListFragment parentFragment, int index, int totalPhotos, PhotoLayoutHelper.TiledLayoutResult tiledLayout, PhotoLayoutHelper.TiledLayoutResult.Tile thisTile){
|
||||
super(parentID, parentFragment, attachment, status, index, totalPhotos, tiledLayout, thisTile);
|
||||
request=new UrlImageLoaderRequest(attachment.previewUrl, 1000, 1000);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type getType(){
|
||||
return Type.VIDEO;
|
||||
}
|
||||
|
||||
public static class Holder extends ImageStatusDisplayItem.Holder<VideoStatusDisplayItem>{
|
||||
|
||||
public Holder(Activity activity, ViewGroup parent){
|
||||
super(activity, R.layout.display_item_video, parent);
|
||||
View play=findViewById(R.id.play_button);
|
||||
play.setOutlineProvider(new ViewOutlineProvider(){
|
||||
@Override
|
||||
public void getOutline(View view, Outline outline){
|
||||
outline.setOval(0, 0, view.getWidth(), view.getHeight());
|
||||
outline.setAlpha(.99f); // fixes shadow rendering
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
package org.joinmastodon.android.ui.photoviewer;
|
||||
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.ui.displayitems.MediaGridStatusDisplayItem;
|
||||
|
||||
public interface PhotoViewerHost{
|
||||
void openPhotoViewer(String parentID, Status status, int attachmentIndex);
|
||||
void openPhotoViewer(String parentID, Status status, int attachmentIndex, MediaGridStatusDisplayItem.Holder gridHolder);
|
||||
}
|
||||
|
||||
@@ -8,24 +8,25 @@ import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.text.Layout;
|
||||
import android.text.Spanned;
|
||||
import android.view.GestureDetector;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.SoundEffectConstants;
|
||||
import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||
|
||||
import me.grishka.appkit.utils.V;
|
||||
|
||||
public class ClickableLinksDelegate {
|
||||
|
||||
private Paint hlPaint;
|
||||
private final Paint hlPaint;
|
||||
private Path hlPath;
|
||||
private LinkSpan selectedSpan;
|
||||
private TextView view;
|
||||
private final TextView view;
|
||||
|
||||
private final Runnable longClickRunnable = () -> {
|
||||
if (selectedSpan != null) selectedSpan.onLongClick(view);
|
||||
};
|
||||
private final GestureDetector gestureDetector;
|
||||
|
||||
public ClickableLinksDelegate(TextView view) {
|
||||
this.view=view;
|
||||
@@ -33,11 +34,45 @@ public class ClickableLinksDelegate {
|
||||
hlPaint.setAntiAlias(true);
|
||||
hlPaint.setPathEffect(new CornerPathEffect(V.dp(3)));
|
||||
// view.setHighlightColor(view.getResources().getColor(android.R.color.holo_blue_light));
|
||||
gestureDetector = new GestureDetector(view.getContext(), new LinkGestureListener(), view.getHandler());
|
||||
}
|
||||
|
||||
public boolean onTouch(MotionEvent event) {
|
||||
long eventDuration = event.getEventTime() - event.getDownTime();
|
||||
if(event.getAction()==MotionEvent.ACTION_DOWN){
|
||||
if(event.getAction()==MotionEvent.ACTION_CANCEL){
|
||||
// the gestureDetector does not provide a callback for CANCEL, therefore:
|
||||
// remove background color of view before passing event to gestureDetector
|
||||
resetAndInvalidate();
|
||||
}
|
||||
return gestureDetector.onTouchEvent(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* remove highlighting from span and let the system redraw the view
|
||||
*/
|
||||
private void resetAndInvalidate() {
|
||||
hlPath=null;
|
||||
selectedSpan=null;
|
||||
view.invalidate();
|
||||
}
|
||||
|
||||
public void onDraw(Canvas canvas){
|
||||
if(hlPath!=null){
|
||||
canvas.save();
|
||||
canvas.translate(0, view.getPaddingTop());
|
||||
canvas.drawPath(hlPath, hlPaint);
|
||||
canvas.restore();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* GestureListener for spans that represent URLs.
|
||||
* onDown: on start of touch event, set highlighting
|
||||
* onSingleTapUp: when there was a (short) tap, call onClick and reset highlighting
|
||||
* onLongPress: copy URL to clipboard, let user know, reset highlighting
|
||||
*/
|
||||
private class LinkGestureListener extends GestureDetector.SimpleOnGestureListener {
|
||||
@Override
|
||||
public boolean onDown(@NonNull MotionEvent event) {
|
||||
int line=-1;
|
||||
Rect rect=new Rect();
|
||||
Layout l=view.getLayout();
|
||||
@@ -52,8 +87,7 @@ public class ClickableLinksDelegate {
|
||||
return false;
|
||||
}
|
||||
CharSequence text=view.getText();
|
||||
if(text instanceof Spanned){
|
||||
Spanned s=(Spanned)text;
|
||||
if(text instanceof Spanned s){
|
||||
LinkSpan[] spans=s.getSpans(0, s.length()-1, LinkSpan.class);
|
||||
if(spans.length>0){
|
||||
for(LinkSpan span:spans){
|
||||
@@ -70,7 +104,6 @@ public class ClickableLinksDelegate {
|
||||
}
|
||||
hlPath=new Path();
|
||||
selectedSpan=span;
|
||||
view.postDelayed(longClickRunnable, ViewConfiguration.getLongPressTimeout());
|
||||
hlPaint.setColor((span.getColor() & 0x00FFFFFF) | 0x33000000);
|
||||
//l.getSelectionPath(start, end, hlPath);
|
||||
for(int j=lstart;j<=lend;j++){
|
||||
@@ -96,35 +129,26 @@ public class ClickableLinksDelegate {
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onDown(event);
|
||||
}
|
||||
if(event.getAction()==MotionEvent.ACTION_UP && selectedSpan!=null){
|
||||
if (eventDuration <= ViewConfiguration.getLongPressTimeout()) {
|
||||
|
||||
@Override
|
||||
public boolean onSingleTapUp(@NonNull MotionEvent event) {
|
||||
if(selectedSpan!=null){
|
||||
view.playSoundEffect(SoundEffectConstants.CLICK);
|
||||
selectedSpan.onClick(view.getContext());
|
||||
resetAndInvalidate();
|
||||
return true;
|
||||
}
|
||||
view.removeCallbacks(longClickRunnable);
|
||||
hlPath=null;
|
||||
selectedSpan=null;
|
||||
view.invalidate();
|
||||
return false;
|
||||
}
|
||||
if(event.getAction()==MotionEvent.ACTION_CANCEL){
|
||||
hlPath=null;
|
||||
selectedSpan=null;
|
||||
view.removeCallbacks(longClickRunnable);
|
||||
view.invalidate();
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void onDraw(Canvas canvas){
|
||||
if(hlPath!=null){
|
||||
canvas.save();
|
||||
canvas.translate(0, view.getPaddingTop());
|
||||
canvas.drawPath(hlPath, hlPaint);
|
||||
canvas.restore();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLongPress(@NonNull MotionEvent event) {
|
||||
if (selectedSpan == null) return;
|
||||
UiUtils.copyText(view, selectedSpan.getType() == LinkSpan.Type.URL ? selectedSpan.getLink() : selectedSpan.getText());
|
||||
//reset view
|
||||
resetAndInvalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,14 +46,14 @@ public class LinkSpan extends CharacterStyle {
|
||||
}
|
||||
}
|
||||
|
||||
public void onLongClick(View view) {
|
||||
UiUtils.copyText(view, getType() == Type.URL ? link : text);
|
||||
}
|
||||
|
||||
public String getLink(){
|
||||
return link;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public Type getType(){
|
||||
return type;
|
||||
}
|
||||
|
||||
@@ -8,10 +8,8 @@ import android.view.View;
|
||||
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
||||
import org.joinmastodon.android.fragments.NotificationsListFragment;
|
||||
import org.joinmastodon.android.ui.PhotoLayoutHelper;
|
||||
import org.joinmastodon.android.ui.displayitems.ImageStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.LinkCardStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.MediaGridStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.displayitems.StatusDisplayItem;
|
||||
|
||||
import java.util.List;
|
||||
@@ -87,21 +85,11 @@ public class InsetStatusItemDecoration extends RecyclerView.ItemDecoration{
|
||||
boolean topSiblingInset=pos>0 && displayItems.get(pos-1).inset;
|
||||
boolean bottomSiblingInset=pos<displayItems.size()-1 && displayItems.get(pos+1).inset;
|
||||
int pad;
|
||||
if(holder instanceof ImageStatusDisplayItem.Holder || holder instanceof LinkCardStatusDisplayItem.Holder)
|
||||
if(holder instanceof MediaGridStatusDisplayItem.Holder || holder instanceof LinkCardStatusDisplayItem.Holder)
|
||||
pad=V.dp(16);
|
||||
else
|
||||
pad=V.dp(12);
|
||||
boolean insetLeft=true, insetRight=true;
|
||||
if(holder instanceof ImageStatusDisplayItem.Holder<?> img){
|
||||
PhotoLayoutHelper.TiledLayoutResult layout=img.getItem().tiledLayout;
|
||||
PhotoLayoutHelper.TiledLayoutResult.Tile tile=img.getItem().thisTile;
|
||||
// only inset those items that are on the edges of the layout
|
||||
insetLeft=tile.startCol==0;
|
||||
insetRight=tile.startCol+tile.colSpan==layout.columnSizes.length;
|
||||
// inset all items in the bottom row
|
||||
if(tile.startRow+tile.rowSpan==layout.rowSizes.length)
|
||||
bottomSiblingInset=false;
|
||||
}
|
||||
if(insetLeft)
|
||||
outRect.left=pad;
|
||||
if(insetRight)
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
package org.joinmastodon.android.ui.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import org.joinmastodon.android.GlobalUserPreferences;
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.model.Attachment;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.ui.displayitems.MediaGridStatusDisplayItem;
|
||||
import org.joinmastodon.android.ui.drawables.BlurhashCrossfadeDrawable;
|
||||
|
||||
public class MediaAttachmentViewController{
|
||||
public final View view;
|
||||
public final MediaGridStatusDisplayItem.GridItemType type;
|
||||
public final ImageView photo;
|
||||
public final View altButton, noAltButton, btnsWrap;
|
||||
public static int[] altWrapPadding = null;
|
||||
private BlurhashCrossfadeDrawable crossfadeDrawable=new BlurhashCrossfadeDrawable();
|
||||
private final Context context;
|
||||
private boolean didClear;
|
||||
private Status status;
|
||||
|
||||
public MediaAttachmentViewController(Context context, MediaGridStatusDisplayItem.GridItemType type){
|
||||
view=context.getSystemService(LayoutInflater.class).inflate(switch(type){
|
||||
case PHOTO -> R.layout.display_item_photo;
|
||||
case VIDEO -> R.layout.display_item_video;
|
||||
case GIFV -> R.layout.display_item_gifv;
|
||||
}, null);
|
||||
photo=view.findViewById(R.id.photo);
|
||||
altButton=view.findViewById(R.id.alt_button);
|
||||
noAltButton=view.findViewById(R.id.no_alt_button);
|
||||
btnsWrap=view.findViewById(R.id.alt_badges);
|
||||
this.type=type;
|
||||
this.context=context;
|
||||
if (altWrapPadding == null) {
|
||||
altWrapPadding = new int[] { btnsWrap.getPaddingLeft(), btnsWrap.getPaddingTop(), btnsWrap.getPaddingRight(), btnsWrap.getPaddingBottom() };
|
||||
}
|
||||
}
|
||||
|
||||
public void bind(Attachment attachment, Status status){
|
||||
this.status=status;
|
||||
crossfadeDrawable.setSize(attachment.getWidth(), attachment.getHeight());
|
||||
crossfadeDrawable.setBlurhashDrawable(attachment.blurhashPlaceholder);
|
||||
crossfadeDrawable.setCrossfadeAlpha(status.spoilerRevealed ? 0f : 1f);
|
||||
photo.setImageDrawable(null);
|
||||
photo.setImageDrawable(crossfadeDrawable);
|
||||
boolean hasAltText = !TextUtils.isEmpty(attachment.description);
|
||||
photo.setContentDescription(!hasAltText ? context.getString(R.string.media_no_description) : attachment.description);
|
||||
if(btnsWrap!=null){
|
||||
btnsWrap.setVisibility(View.VISIBLE);
|
||||
altButton.setVisibility(hasAltText && GlobalUserPreferences.showAltIndicator ? View.VISIBLE : View.GONE);
|
||||
noAltButton.setVisibility(!hasAltText && GlobalUserPreferences.showNoAltIndicator ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
didClear=false;
|
||||
}
|
||||
|
||||
public void setImage(Drawable drawable){
|
||||
crossfadeDrawable.setImageDrawable(drawable);
|
||||
if(didClear && status.spoilerRevealed)
|
||||
crossfadeDrawable.animateAlpha(0f);
|
||||
}
|
||||
|
||||
public void clearImage(){
|
||||
crossfadeDrawable.setCrossfadeAlpha(1f);
|
||||
crossfadeDrawable.setImageDrawable(null);
|
||||
didClear=true;
|
||||
}
|
||||
|
||||
public void setRevealed(boolean revealed){
|
||||
crossfadeDrawable.animateAlpha(revealed ? 0f : 1f);
|
||||
}
|
||||
}
|
||||
@@ -87,6 +87,7 @@ import org.joinmastodon.android.model.Notification;
|
||||
import org.joinmastodon.android.model.Relationship;
|
||||
import org.joinmastodon.android.model.ScheduledStatus;
|
||||
import org.joinmastodon.android.model.SearchResults;
|
||||
import org.joinmastodon.android.model.Searchable;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.model.StatusPrivacy;
|
||||
import org.joinmastodon.android.ui.M3AlertDialogBuilder;
|
||||
@@ -107,8 +108,10 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.BiPredicate;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -692,10 +695,7 @@ public class UiUtils {
|
||||
button.setBackground(ta.getDrawable(0));
|
||||
ta.recycle();
|
||||
ta=button.getContext().obtainStyledAttributes(styleRes, new int[]{android.R.attr.textColor});
|
||||
if(relationship.blocking)
|
||||
button.setTextColor(button.getResources().getColorStateList(R.color.error_600));
|
||||
else
|
||||
button.setTextColor(ta.getColorStateList(0));
|
||||
button.setTextColor(ta.getColorStateList(0));
|
||||
ta.recycle();
|
||||
}
|
||||
|
||||
@@ -988,6 +988,8 @@ public class UiUtils {
|
||||
public static void pickInteractAs(Context context, String accountID, Status sourceStatus, Predicate<Status> checkInteracted, InteractionPerformer interactionPerformer, @StringRes int interactAsRes, @StringRes int interactedAsAccountRes, @StringRes int alreadyInteractedRes, @DrawableRes int iconRes) {
|
||||
pickAccount(context, accountID, interactAsRes, iconRes, session -> {
|
||||
lookupStatus(context, sourceStatus, session.getID(), accountID, status -> {
|
||||
if (status == null) return;
|
||||
|
||||
if (checkInteracted.test(status)) {
|
||||
Toast.makeText(context, alreadyInteractedRes, Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
@@ -1003,18 +1005,33 @@ public class UiUtils {
|
||||
}, null);
|
||||
}
|
||||
|
||||
public static void lookupStatus(Context context, Status queryStatus, String targetAccountID, @Nullable String sourceAccountID, Consumer<Status> statusConsumer) {
|
||||
public static void lookupStatus(Context context, Status queryStatus, String targetAccountID, @Nullable String sourceAccountID, Consumer<Status> resultConsumer) {
|
||||
lookup(context, queryStatus, targetAccountID, sourceAccountID, GetSearchResults.Type.STATUSES, resultConsumer, results ->
|
||||
!results.statuses.isEmpty() ? Optional.of(results.statuses.get(0)) : Optional.empty()
|
||||
);
|
||||
}
|
||||
|
||||
public static void lookupAccount(Context context, Account queryAccount, String targetAccountID, @Nullable String sourceAccountID, Consumer<Account> resultConsumer) {
|
||||
lookup(context, queryAccount, targetAccountID, sourceAccountID, GetSearchResults.Type.ACCOUNTS, resultConsumer, results ->
|
||||
!results.accounts.isEmpty() ? Optional.of(results.accounts.get(0)) : Optional.empty()
|
||||
);
|
||||
}
|
||||
|
||||
public static <T extends Searchable> void lookup(Context context, T query, String targetAccountID, @Nullable String sourceAccountID, @Nullable GetSearchResults.Type type, Consumer<T> resultConsumer, Function<SearchResults, Optional<T>> extractResult) {
|
||||
if (sourceAccountID != null && targetAccountID.startsWith(sourceAccountID.substring(0, sourceAccountID.indexOf('_')))) {
|
||||
statusConsumer.accept(queryStatus);
|
||||
resultConsumer.accept(query);
|
||||
return;
|
||||
}
|
||||
|
||||
new GetSearchResults(queryStatus.url, GetSearchResults.Type.STATUSES, true).setCallback(new Callback<>() {
|
||||
new GetSearchResults(query.getQuery(), type, true).setCallback(new Callback<>() {
|
||||
@Override
|
||||
public void onSuccess(SearchResults results) {
|
||||
if (!results.statuses.isEmpty()) statusConsumer.accept(results.statuses.get(0));
|
||||
else
|
||||
Optional<T> result = extractResult.apply(results);
|
||||
if (result.isPresent()) resultConsumer.accept(result.get());
|
||||
else {
|
||||
Toast.makeText(context, R.string.sk_resource_not_found, Toast.LENGTH_SHORT).show();
|
||||
resultConsumer.accept(null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1129,6 +1146,10 @@ public class UiUtils {
|
||||
return !TextUtils.isEmpty(getSystemProperty("ro.miui.ui.version.code"));
|
||||
}
|
||||
|
||||
public static boolean isEMUI() {
|
||||
return !TextUtils.isEmpty(getSystemProperty("ro.build.version.emui"));
|
||||
}
|
||||
|
||||
public static int alphaBlendColors(int color1, int color2, float alpha) {
|
||||
float alpha0 = 1f - alpha;
|
||||
int r = Math.round(((color1 >> 16) & 0xFF) * alpha0 + ((color2 >> 16) & 0xFF) * alpha);
|
||||
@@ -1251,6 +1272,17 @@ public class UiUtils {
|
||||
return intent;
|
||||
}
|
||||
|
||||
public static void populateAccountsMenu(String excludeAccountID, Menu menu, Consumer<AccountSession> onClick) {
|
||||
List<AccountSession> sessions=AccountSessionManager.getInstance().getLoggedInAccounts();
|
||||
sessions.stream().filter(s -> !s.getID().equals(excludeAccountID)).forEach(s -> {
|
||||
String username = "@"+s.self.username+"@"+s.domain;
|
||||
menu.add(username).setOnMenuItemClickListener((c) -> {
|
||||
onClick.accept(s);
|
||||
return true;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Wraps a View.OnClickListener to filter multiple clicks in succession.
|
||||
* Useful for buttons that perform some action that changes their state asynchronously.
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package org.joinmastodon.android.ui.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
public class FrameLayoutThatOnlyMeasuresFirstChild extends FrameLayout{
|
||||
public FrameLayoutThatOnlyMeasuresFirstChild(Context context){
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public FrameLayoutThatOnlyMeasuresFirstChild(Context context, AttributeSet attrs){
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public FrameLayoutThatOnlyMeasuresFirstChild(Context context, AttributeSet attrs, int defStyle){
|
||||
super(context, attrs, defStyle);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
|
||||
if(getChildCount()==0)
|
||||
return;
|
||||
View child0=getChildAt(0);
|
||||
measureChild(child0, widthMeasureSpec, heightMeasureSpec);
|
||||
super.onMeasure(child0.getMeasuredWidth() | MeasureSpec.EXACTLY, child0.getMeasuredHeight() | MeasureSpec.EXACTLY);
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
package org.joinmastodon.android.ui.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import org.joinmastodon.android.ui.PhotoLayoutHelper;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import me.grishka.appkit.utils.V;
|
||||
|
||||
public class ImageAttachmentFrameLayout extends FrameLayout{
|
||||
public static final int MAX_WIDTH=400; // dp
|
||||
|
||||
private PhotoLayoutHelper.TiledLayoutResult tileLayout;
|
||||
private PhotoLayoutHelper.TiledLayoutResult.Tile tile;
|
||||
private int horizontalInset;
|
||||
|
||||
public ImageAttachmentFrameLayout(@NonNull Context context){
|
||||
super(context);
|
||||
}
|
||||
|
||||
public ImageAttachmentFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs){
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public ImageAttachmentFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr){
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
|
||||
if(isInEditMode()){
|
||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||
return;
|
||||
}
|
||||
int w=Math.min(((View)getParent()).getMeasuredWidth(), V.dp(MAX_WIDTH))-horizontalInset;
|
||||
int actualHeight=Math.round(tile.height/1000f*w)+V.dp(1)*(tile.rowSpan-1);
|
||||
int actualWidth=Math.round(tile.width/1000f*w);
|
||||
if(tile.startCol+tile.colSpan<tileLayout.columnSizes.length)
|
||||
actualWidth-=V.dp(1);
|
||||
heightMeasureSpec=actualHeight | MeasureSpec.EXACTLY;
|
||||
widthMeasureSpec=actualWidth | MeasureSpec.EXACTLY;
|
||||
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
||||
}
|
||||
|
||||
public void setLayout(PhotoLayoutHelper.TiledLayoutResult layout, PhotoLayoutHelper.TiledLayoutResult.Tile tile, int horizontalInset){
|
||||
tileLayout=layout;
|
||||
this.tile=tile;
|
||||
this.horizontalInset=horizontalInset;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package org.joinmastodon.android.ui.views;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import org.joinmastodon.android.ui.PhotoLayoutHelper;
|
||||
|
||||
import me.grishka.appkit.utils.V;
|
||||
|
||||
public class MediaGridLayout extends ViewGroup{
|
||||
private static final String TAG="MediaGridLayout";
|
||||
|
||||
public static final int MAX_WIDTH=400; // dp
|
||||
private static final int GAP=1; // dp
|
||||
private PhotoLayoutHelper.TiledLayoutResult tiledLayout;
|
||||
private int[] columnStarts=new int[10], columnEnds=new int[10], rowStarts=new int[10], rowEnds=new int[10];
|
||||
|
||||
public MediaGridLayout(Context context){
|
||||
this(context, null);
|
||||
}
|
||||
|
||||
public MediaGridLayout(Context context, AttributeSet attrs){
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public MediaGridLayout(Context context, AttributeSet attrs, int defStyle){
|
||||
super(context, attrs, defStyle);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
|
||||
if(tiledLayout==null){
|
||||
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), 0);
|
||||
return;
|
||||
}
|
||||
int width=Math.min(V.dp(MAX_WIDTH), MeasureSpec.getSize(widthMeasureSpec));
|
||||
int height=Math.round(width*(tiledLayout.height/(float)PhotoLayoutHelper.MAX_WIDTH));
|
||||
|
||||
int offset=0;
|
||||
for(int i=0;i<tiledLayout.columnSizes.length;i++){
|
||||
columnStarts[i]=offset;
|
||||
offset+=Math.round(tiledLayout.columnSizes[i]/(float)tiledLayout.width*width);
|
||||
columnEnds[i]=offset;
|
||||
offset+=V.dp(GAP);
|
||||
}
|
||||
columnEnds[tiledLayout.columnSizes.length-1]=width;
|
||||
offset=0;
|
||||
for(int i=0;i<tiledLayout.rowSizes.length;i++){
|
||||
rowStarts[i]=offset;
|
||||
offset+=Math.round(tiledLayout.rowSizes[i]/(float)tiledLayout.height*height);
|
||||
rowEnds[i]=offset;
|
||||
offset+=V.dp(GAP);
|
||||
}
|
||||
rowEnds[tiledLayout.rowSizes.length-1]=height;
|
||||
|
||||
for(int i=0;i<getChildCount();i++){
|
||||
View child=getChildAt(i);
|
||||
LayoutParams lp=(LayoutParams) child.getLayoutParams();
|
||||
int colSpan=Math.max(1, lp.tile.colSpan)-1;
|
||||
int rowSpan=Math.max(1, lp.tile.rowSpan)-1;
|
||||
int w=columnEnds[lp.tile.startCol+colSpan]-columnStarts[lp.tile.startCol];
|
||||
int h=rowEnds[lp.tile.startRow+rowSpan]-rowStarts[lp.tile.startRow];
|
||||
child.measure(w | MeasureSpec.EXACTLY, h | MeasureSpec.EXACTLY);
|
||||
}
|
||||
|
||||
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), height);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int l, int t, int r, int b){
|
||||
if(tiledLayout==null)
|
||||
return;
|
||||
|
||||
int maxWidth=V.dp(MAX_WIDTH);
|
||||
int xOffset=0;
|
||||
if(r-l>maxWidth){
|
||||
xOffset=(r-l)/2-maxWidth/2;
|
||||
}
|
||||
|
||||
for(int i=0;i<getChildCount();i++){
|
||||
View child=getChildAt(i);
|
||||
LayoutParams lp=(LayoutParams) child.getLayoutParams();
|
||||
int colSpan=Math.max(1, lp.tile.colSpan)-1;
|
||||
int rowSpan=Math.max(1, lp.tile.rowSpan)-1;
|
||||
child.layout(columnStarts[lp.tile.startCol]+xOffset, rowStarts[lp.tile.startRow], columnEnds[lp.tile.startCol+colSpan]+xOffset, rowEnds[lp.tile.startRow+rowSpan]);
|
||||
}
|
||||
}
|
||||
|
||||
public void setTiledLayout(PhotoLayoutHelper.TiledLayoutResult tiledLayout){
|
||||
this.tiledLayout=tiledLayout;
|
||||
requestLayout();
|
||||
}
|
||||
|
||||
public static class LayoutParams extends ViewGroup.LayoutParams{
|
||||
public PhotoLayoutHelper.TiledLayoutResult.Tile tile;
|
||||
|
||||
public LayoutParams(PhotoLayoutHelper.TiledLayoutResult.Tile tile){
|
||||
super(WRAP_CONTENT, WRAP_CONTENT);
|
||||
this.tile=tile;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.joinmastodon.android.ui.utils;
|
||||
package org.joinmastodon.android.utils;
|
||||
|
||||
import android.os.SystemClock;
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package org.joinmastodon.android.utils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class TypedObjectPool<K, V>{
|
||||
private final Function<K, V> producer;
|
||||
private final HashMap<K, LinkedList<V>> pool=new HashMap<>();
|
||||
|
||||
public TypedObjectPool(Function<K, V> producer){
|
||||
this.producer=producer;
|
||||
}
|
||||
|
||||
public V obtain(K type){
|
||||
LinkedList<V> tp=pool.get(type);
|
||||
if(tp==null)
|
||||
pool.put(type, tp=new LinkedList<>());
|
||||
|
||||
V value=tp.poll();
|
||||
if(value==null)
|
||||
value=producer.apply(type);
|
||||
return value;
|
||||
}
|
||||
|
||||
public void reuse(K type, V obj){
|
||||
Objects.requireNonNull(obj);
|
||||
Objects.requireNonNull(type);
|
||||
|
||||
LinkedList<V> tp=pool.get(type);
|
||||
if(tp==null)
|
||||
pool.put(type, tp=new LinkedList<>());
|
||||
tp.add(obj);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<selector>
|
||||
<item android:state_focused="true">
|
||||
<shape>
|
||||
<stroke android:color="?colorM3Primary" android:width="2dp"/>
|
||||
<corners android:radius="4dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
<item>
|
||||
<shape>
|
||||
<stroke android:color="?colorM3Outline" android:width="1dp"/>
|
||||
<corners android:radius="4dp"/>
|
||||
</shape>
|
||||
</item>
|
||||
</selector>
|
||||
</item>
|
||||
</layer-list>
|
||||
@@ -4,5 +4,5 @@
|
||||
android:shape="rectangle">
|
||||
<corners android:radius="4sp" />
|
||||
<solid android:color="?colorBackgroundLight" />
|
||||
<stroke android:width="2dp" android:color="#00ff00" />
|
||||
<stroke android:width="2dp" android:color="?android:colorAccent" />
|
||||
</shape>
|
||||
9
mastodon/src/main/res/drawable/ic_delete_24px.xml
Normal file
9
mastodon/src/main/res/drawable/ic_delete_24px.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M7,21Q6.175,21 5.588,20.413Q5,19.825 5,19V6H4V4H9V3H15V4H20V6H19V19Q19,19.825 18.413,20.413Q17.825,21 17,21ZM17,6H7V19Q7,19 7,19Q7,19 7,19H17Q17,19 17,19Q17,19 17,19ZM9,17H11V8H9ZM13,17H15V8H13ZM7,6V19Q7,19 7,19Q7,19 7,19Q7,19 7,19Q7,19 7,19Z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,3 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
|
||||
<path android:pathData="M4.22 8.47c0.293-0.293 0.767-0.293 1.06 0L12 15.19l6.72-6.72c0.293-0.293 0.767-0.293 1.06 0 0.293 0.293 0.293 0.767 0 1.06l-7.25 7.25c-0.293 0.293-0.767 0.293-1.06 0L4.22 9.53c-0.293-0.293-0.293-0.767 0-1.06z" android:fillColor="@color/fluent_default_icon_tint"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,3 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="28dp" android:height="28dp" android:viewportWidth="28" android:viewportHeight="28">
|
||||
<path android:pathData="M15.114 25.719c-0.396-0.408-0.746-0.861-1.04-1.35C13.418 24.453 12.725 24.5 12 24.5c-5.111 0-8.5-2.111-8.5-4.785V19l0.007-0.145C3.58 18.095 4.22 17.5 5 17.5h8.624c0.234-0.535 0.529-1.038 0.875-1.5H5c-1.657 0-3 1.343-3 3v0.715C2 23.433 6.21 26 12 26c1.101 0 2.145-0.098 3.114-0.281zM18 8c0-3.314-2.686-6-6-6S6 4.686 6 8s2.686 6 6 6 6-2.686 6-6zM7.5 8c0-2.485 2.015-4.5 4.5-4.5s4.5 2.015 4.5 4.5-2.015 4.5-4.5 4.5S7.5 10.485 7.5 8zm13 19c3.59 0 6.5-2.91 6.5-6.5S24.09 14 20.5 14 14 16.91 14 20.5s2.91 6.5 6.5 6.5zm0-11c0.276 0 0.5 0.224 0.5 0.5V20h3.5c0.276 0 0.5 0.224 0.5 0.5S24.776 21 24.5 21H21v3.5c0 0.276-0.224 0.5-0.5 0.5S20 24.776 20 24.5V21h-3.5c-0.276 0-0.5-0.224-0.5-0.5s0.224-0.5 0.5-0.5H20v-3.5c0-0.276 0.224-0.5 0.5-0.5z" android:fillColor="@color/fluent_default_icon_tint"/>
|
||||
</vector>
|
||||
@@ -1,79 +1,34 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- This is hidden from screenreaders because that same alt text is set as content description on the ImageView -->
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/alt_text_wrapper"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start|bottom"
|
||||
android:layout_margin="12dp"
|
||||
android:importantForAccessibility="noHideDescendants"
|
||||
android:background="@drawable/bg_image_alt_overlay">
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/alt_badges"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start|bottom"
|
||||
android:padding="12dp"
|
||||
android:importantForAccessibility="noHideDescendants">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/no_alt_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="4dp"
|
||||
android:src="@drawable/ic_fluent_important_20_filled"
|
||||
android:tint="?colorGray25" />
|
||||
<ImageView
|
||||
android:id="@+id/no_alt_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:padding="4dp"
|
||||
android:src="@drawable/ic_fluent_important_20_filled"
|
||||
android:background="@drawable/bg_image_no_alt_overlay"
|
||||
android:tint="?colorGray25" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/alt_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="@style/m3_label_large"
|
||||
android:textColor="?colorGray25"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="false"
|
||||
android:paddingHorizontal="5dp"
|
||||
android:paddingVertical="1dp"
|
||||
android:text="@string/sk_alt_button"/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/alt_text_close"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="end|top"
|
||||
android:src="@drawable/ic_baseline_close_24"
|
||||
android:tint="#FFF"
|
||||
android:background="?android:actionBarItemBackground"/>
|
||||
|
||||
<org.joinmastodon.android.ui.views.NestableScrollView
|
||||
android:id="@+id/alt_text_scroller"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="40dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/alt_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:textAppearance="@style/m3_body_medium"
|
||||
android:textColor="?colorGray25"
|
||||
tools:text="Alt text goes here"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/no_alt_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginStart="14dp"
|
||||
android:textAppearance="@style/m3_label_large"
|
||||
android:textColor="?colorGray25"
|
||||
android:text="@string/sk_no_alt_text"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</org.joinmastodon.android.ui.views.NestableScrollView>
|
||||
<TextView
|
||||
android:id="@+id/alt_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:textAppearance="@style/m3_label_large"
|
||||
android:textColor="?colorGray25"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="false"
|
||||
android:paddingHorizontal="5dp"
|
||||
android:paddingVertical="1dp"
|
||||
android:background="@drawable/bg_image_alt_overlay"
|
||||
android:text="@string/sk_alt_button"/>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -8,9 +8,10 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start|center_vertical"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_weight="1"
|
||||
android:padding="16dp"
|
||||
android:textAppearance="@style/m3_title_medium"
|
||||
android:textColor="?android:textColorSecondary"
|
||||
@@ -20,11 +21,11 @@
|
||||
android:id="@+id/reveal_btn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end|center_vertical"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:padding="16dp"
|
||||
android:text="@string/tap_to_reveal"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
android:textColor="?android:textColorSecondary" />
|
||||
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<org.joinmastodon.android.ui.views.ImageAttachmentFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
@@ -27,4 +27,4 @@
|
||||
|
||||
<include layout="@layout/alt_badge" />
|
||||
|
||||
</org.joinmastodon.android.ui.views.ImageAttachmentFrameLayout>
|
||||
</FrameLayout>
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
android:visibility="gone"
|
||||
android:background="?android:actionBarItemBackground"
|
||||
android:contentDescription="@string/sk_delete_notification"
|
||||
android:tooltipText="@string/sk_delete_notification"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/ic_fluent_dismiss_20_filled"
|
||||
android:tint="?android:textColorSecondary" />
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<org.joinmastodon.android.ui.views.ImageAttachmentFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
@@ -12,4 +13,4 @@
|
||||
|
||||
<include layout="@layout/alt_badge" />
|
||||
|
||||
</org.joinmastodon.android.ui.views.ImageAttachmentFrameLayout>
|
||||
</FrameLayout>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/frame"
|
||||
android:layout_marginBottom="-12dp">
|
||||
|
||||
<TextView
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<org.joinmastodon.android.ui.views.ImageAttachmentFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
@@ -20,4 +20,4 @@
|
||||
|
||||
<include layout="@layout/alt_badge" />
|
||||
|
||||
</org.joinmastodon.android.ui.views.ImageAttachmentFrameLayout>
|
||||
</FrameLayout>
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toEndOf="@id/self_avatar"
|
||||
android:layout_marginTop="2sp"
|
||||
android:paddingTop="4sp"
|
||||
android:minHeight="24sp"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
@@ -101,9 +101,9 @@
|
||||
android:id="@+id/self_extra_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="2sp"
|
||||
android:layout_marginStart="8sp"
|
||||
android:layout_toEndOf="@id/self_name"
|
||||
android:paddingTop="4sp"
|
||||
android:ellipsize="end"
|
||||
android:fontFamily="sans-serif"
|
||||
android:singleLine="true"
|
||||
|
||||
@@ -9,7 +9,8 @@
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1">
|
||||
android:layout_weight="1"
|
||||
android:fillViewport="true">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -28,6 +29,11 @@
|
||||
android:textColor="?colorM3OnSurface"
|
||||
android:text="@string/confirm_email_subtitle"/>
|
||||
|
||||
<Space
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="0px"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="230dp"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -37,6 +43,11 @@
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/confirm_email_art"/>
|
||||
|
||||
<Space
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="0px"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
@@ -40,17 +40,17 @@
|
||||
android:background="@drawable/bg_onboarding_panel">
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_skip"
|
||||
android:id="@+id/btn_next"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
style="@style/Widget.Mastodon.M3.Button.Tonal"
|
||||
android:text="@string/skip"/>
|
||||
android:text="@string/follow_all"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_next"
|
||||
android:id="@+id/btn_skip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
@@ -58,7 +58,7 @@
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
style="@style/Widget.Mastodon.M3.Button.Filled"
|
||||
android:text="@string/follow_all"/>
|
||||
android:text="@string/skip"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
android:contentDescription="@string/clear"
|
||||
android:stateListAnimator="@null"
|
||||
android:elevation="0dp"
|
||||
android:tint="?colorM3OnSurfaceVariant"
|
||||
android:src="@drawable/ic_m3_cancel"/>
|
||||
|
||||
</org.joinmastodon.android.ui.views.FloatingHintEditTextLayout>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:inputType="textFilter|textNoSuggestions"
|
||||
android:inputType="textUri|textNoSuggestions"
|
||||
android:singleLine="true"
|
||||
android:imeOptions="actionGo"
|
||||
android:drawableStart="@drawable/ic_fluent_globe_20_regular"
|
||||
|
||||
@@ -2,32 +2,43 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="56dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="8dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="8dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:clipToPadding="false"
|
||||
android:background="?colorM3Background">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/dragger_thingy"
|
||||
android:layout_width="56dp"
|
||||
android:layout_height="56dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:scaleType="center"
|
||||
android:tint="?colorM3OnSurface"
|
||||
android:contentDescription="@string/reorder"
|
||||
android:src="@drawable/ic_drag_handle_24px"/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/delete"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginStart="8dp"
|
||||
android:scaleType="center"
|
||||
android:tint="?colorM3OnSurface"
|
||||
android:background="?android:actionBarItemBackground"
|
||||
android:contentDescription="@string/delete"
|
||||
android:src="@drawable/ic_delete_24px"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginTop="6dp"
|
||||
android:layout_toStartOf="@id/dragger_thingy"
|
||||
android:background="@null"
|
||||
android:padding="0dp"
|
||||
android:textAppearance="@style/m3_body_large"
|
||||
android:textColor="?colorM3OnSurfaceVariant"
|
||||
android:textColorHint="?colorM3OnSurfaceVariant"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_toEndOf="@id/dragger_thingy"
|
||||
android:layout_toStartOf="@id/delete"
|
||||
style="@style/Widget.Mastodon.M3.EditText"
|
||||
android:inputType="textCapSentences"
|
||||
android:hint="@string/field_content"
|
||||
android:saveEnabled="false"
|
||||
@@ -36,14 +47,13 @@
|
||||
<EditText
|
||||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="20dp"
|
||||
android:layout_toStartOf="@id/dragger_thingy"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_toEndOf="@id/dragger_thingy"
|
||||
android:layout_toStartOf="@id/delete"
|
||||
android:layout_below="@id/content"
|
||||
android:background="@null"
|
||||
android:padding="0dp"
|
||||
android:textAppearance="@style/m3_body_medium"
|
||||
android:textColor="?colorM3OnSurfaceVariant"
|
||||
android:textColorHint="?colorM3OnSurfaceVariant"
|
||||
style="@style/Widget.Mastodon.M3.EditText"
|
||||
android:inputType="textCapSentences"
|
||||
android:hint="@string/field_label"
|
||||
android:saveEnabled="false"
|
||||
|
||||
77
mastodon/src/main/res/layout/overlay_image_alt_text.xml
Normal file
77
mastodon/src/main/res/layout/overlay_image_alt_text.xml
Normal file
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/alt_text_wrapper"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start|bottom"
|
||||
android:layout_margin="12dp"
|
||||
android:importantForAccessibility="noHideDescendants"
|
||||
android:background="@drawable/bg_image_alt_overlay">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/no_alt_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="4dp"
|
||||
android:src="@drawable/ic_fluent_important_20_filled"
|
||||
android:tint="?colorGray25" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/alt_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="@style/m3_label_large"
|
||||
android:textColor="?colorGray25"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="false"
|
||||
android:paddingHorizontal="5dp"
|
||||
android:paddingVertical="1dp"
|
||||
android:text="@string/sk_alt_button"/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/alt_text_close"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="end|top"
|
||||
android:src="@drawable/ic_baseline_close_24"
|
||||
android:tint="#FFF"
|
||||
android:background="?android:actionBarItemBackground"/>
|
||||
|
||||
<org.joinmastodon.android.ui.views.NestableScrollView
|
||||
android:id="@+id/alt_text_scroller"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="40dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/alt_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:textAppearance="@style/m3_body_medium"
|
||||
android:textColor="#FFF"
|
||||
tools:text="Alt text goes here"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/no_alt_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginStart="14dp"
|
||||
android:textAppearance="@style/m3_label_large"
|
||||
android:textColor="?colorGray25"
|
||||
android:text="@string/sk_no_alt_text"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</org.joinmastodon.android.ui.views.NestableScrollView>
|
||||
|
||||
</FrameLayout>
|
||||
@@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/open_with_account" android:title="@string/sk_open_with_account" android:icon="@drawable/ic_fluent_person_swap_24_regular">
|
||||
<menu android:id="@+id/accounts" />
|
||||
</item>
|
||||
<item android:id="@+id/share" android:title="@string/share_user" android:icon="@drawable/ic_fluent_share_24_regular"/>
|
||||
<item android:id="@+id/mute" android:title="@string/mute_user" android:icon="@drawable/ic_fluent_speaker_off_24_regular"/>
|
||||
<item android:id="@+id/block" android:title="@string/block_user" android:icon="@drawable/ic_fluent_person_prohibited_24_regular"/>
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/followed_hashtags" android:title="@string/sk_hashtags_you_follow" android:icon="@drawable/ic_fluent_number_symbol_24_regular" android:showAsAction="always"/>
|
||||
<item android:id="@+id/bookmarks" android:title="@string/bookmarks" android:icon="@drawable/ic_fluent_bookmark_multiple_24_regular" android:showAsAction="always"/>
|
||||
<item android:id="@+id/open_with_account" android:title="@string/sk_open_with_account" android:icon="@drawable/ic_fluent_person_swap_24_regular">
|
||||
<menu android:id="@+id/accounts" />
|
||||
</item>
|
||||
<item android:id="@+id/manage_user_lists" android:title="@string/sk_your_lists" android:icon="@drawable/ic_fluent_people_24_regular"/>
|
||||
<item android:id="@+id/favorites" android:title="@string/your_favorites" android:icon="@drawable/ic_fluent_star_24_regular"/>
|
||||
<item android:id="@+id/scheduled" android:title="@string/sk_unsent_posts" android:icon="@drawable/ic_fluent_folder_open_24_regular"/>
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">الخطوات الأولى</string>
|
||||
<string name="get_started">إنشاء حساب</string>
|
||||
<string name="already_have_account">لدي حساب بالفعل</string>
|
||||
<string name="log_in">تسجيلُ الدخول</string>
|
||||
<string name="next">التالي</string>
|
||||
<string name="loading_instance">جارٍ جلب معلومات الخادم…</string>
|
||||
<string name="error">خطأ</string>
|
||||
<string name="not_a_mastodon_instance">لا يبدو أنّ %s كخادم ماستدون.</string>
|
||||
<string name="ok">حسنًا</string>
|
||||
<string name="preparing_auth">جَارٍ الإعدَادُ لِلمُصادَقَة…</string>
|
||||
<string name="finishing_auth">يُنهي المصادقة…</string>
|
||||
@@ -226,15 +229,16 @@
|
||||
<string name="back">العودة</string>
|
||||
<string name="instance_catalog_title">يتكوّن ماستدون من مستخدمين موزّعين عبر خوادم مختلفة.</string>
|
||||
<string name="instance_catalog_subtitle">اختر خادمًا بناءً على اهتماماتك، منطقتك أو يمكنك حتى اختيارُ مجتمعٍ ذي غرضٍ عام. وسيضل بامكانك التواصل مع المستخدمين من الخوادم الأخرى.</string>
|
||||
<string name="search_communities">ابحث عن خادم أو أدخل رابطه</string>
|
||||
<string name="instance_rules_title">بعض القواعد الأساسية</string>
|
||||
<string name="instance_rules_subtitle">خذ دقيقة لمراجعة القواعد التي حددها وفرضها مديروا %s.</string>
|
||||
<string name="signup_title">دعنا نجهزك في %s</string>
|
||||
<string name="search_communities">اسم الخادم أو عنوان URL</string>
|
||||
<string name="instance_rules_title">قواعد الخادم</string>
|
||||
<string name="instance_rules_subtitle">من خلال المتابعة، أنت توافق على اتباع القواعد التالية التي تم تعيينها وإنفاذها من قبل مشرفي %s.</string>
|
||||
<string name="signup_title">إنشاء حساب</string>
|
||||
<string name="edit_photo">حرّر</string>
|
||||
<string name="display_name">الاسم العلني</string>
|
||||
<string name="display_name">الاسم</string>
|
||||
<string name="username">اسم المستخدم</string>
|
||||
<string name="email">البريد الإلكتروني</string>
|
||||
<string name="password">كلمة المرور</string>
|
||||
<string name="confirm_password">تأكيد كلمة المرور</string>
|
||||
<string name="password_note">ضمّن الأحرف الكبيرة والأحرف الخاصة والأرقام لزيادة قوة كلمة المرور.</string>
|
||||
<string name="category_academia">أكاديمي</string>
|
||||
<string name="category_activism">النشطاء</string>
|
||||
@@ -249,8 +253,10 @@
|
||||
<string name="category_music">موسيقى</string>
|
||||
<string name="category_regional">إقليمي</string>
|
||||
<string name="category_tech">تقني</string>
|
||||
<string name="confirm_email_title">شيءٌ أخير</string>
|
||||
<string name="confirm_email_subtitle">أنقر على الرابط المرسل إليك لاستيثاق حسابك.</string>
|
||||
<string name="confirm_email_title">تحقق من صندوق الوارد الخاص بك</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="confirm_email_subtitle">اضغط على الرابط الذي أرسلناه لك للتحقق من %s. سننتظر هنا.</string>
|
||||
<string name="confirm_email_didnt_get">ألم تحصل على رابط؟</string>
|
||||
<string name="resend">أعد الإرسال</string>
|
||||
<string name="open_email_app">افتح تطبيق البريد الإلكتروني</string>
|
||||
<string name="resent_email">أُرسلت رسالة التأكيد</string>
|
||||
@@ -342,7 +348,7 @@
|
||||
<string name="open_in_browser">افتح في المتصفح</string>
|
||||
<string name="hide_boosts_from_user">اخف ما أعاد %s تدوينه</string>
|
||||
<string name="show_boosts_from_user">أظهر ما أعاد %s تدوينه</string>
|
||||
<string name="signup_reason">لماذا ترغب في الانضمام؟</string>
|
||||
<string name="signup_reason">لماذا تريد الانضمام؟</string>
|
||||
<string name="signup_reason_note">هذا سوف يساعدنا في مراجعة تطبيقك.</string>
|
||||
<string name="clear">امسح</string>
|
||||
<string name="profile_header">الصورة الفوقية</string>
|
||||
@@ -459,8 +465,54 @@
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">جارٍ التنزيل (%s)</string>
|
||||
<string name="install_update">تثبيت</string>
|
||||
<string name="privacy_policy_title">ماستدون وخصوصيتك</string>
|
||||
<string name="privacy_policy_subtitle">على الرغم من أن تطبيق ماستدون لا يجمع أي بيانات، فإن الخادم الذي قمت بالتسجيل من خلاله قد تكون له سياسة مختلفة. خذ دقيقة للمراجعة والموافقة على سياسة خصوصية التطبيق ماستدون وسياسة الخصوصية للخادم الخاص بك.</string>
|
||||
<string name="privacy_policy_title">خصوصيتك</string>
|
||||
<string name="privacy_policy_subtitle">على الرغم من أن تطبيق ماستدون لا يجمع أي بيانات، فإن الخادم الذي قمت بالتسجيل من خلاله قد تكون له سياسة مختلفة.\n\nإذا لم توافق على سياسة %s، يمكنك العودة واختيار خادم مختلف.</string>
|
||||
<string name="i_agree">أنا مُوافِق</string>
|
||||
<string name="empty_list">هذه القائمة فارغة</string>
|
||||
<string name="instance_signup_closed">هذا الخادم لا يقبل التسجيلات الجديدة.</string>
|
||||
<string name="text_copied">نُسِخ إلى الحافظة</string>
|
||||
<string name="add_bookmark">إضافة إلى الفواصل المرجعية</string>
|
||||
<string name="remove_bookmark">إزالة الفاصلة المرجعية</string>
|
||||
<string name="bookmarks">الفواصل المرجعية</string>
|
||||
<string name="your_favorites">مفضّلاتك</string>
|
||||
<string name="login_title">مرحبا بك مجددًا</string>
|
||||
<string name="login_subtitle">قم بتسجيل الدخول باستخدام الخادم حيث قمتَ بإنشاء حسابك فيه.</string>
|
||||
<string name="server_url">رابط الخادم</string>
|
||||
<string name="welcome_page1_title">ما هو ماستدون؟</string>
|
||||
<string name="welcome_page1_text">تخيل أن لديك عنوان بريد إلكتروني ينتهي بـ @example.com.\n\n رغم ذلك يمكنك إرسال واستقبال رسائل البريد الإلكتروني من أي شخص، حتى إذا كان بريدهم الإلكتروني الخاص ينتهي بـ @gmail.com أو @icloud.com أو @example.com.</string>
|
||||
<string name="welcome_page2_title">ماستدون هكذا.</string>
|
||||
<string name="welcome_page2_text">قد يكون مُعرّفُك @gothgirl654@example.social ، ولكنه بإمكانك متابعة وإعادة تدوين ومحادثة @fallout5ever@example.online.</string>
|
||||
<string name="welcome_page3_title">كيف يمكنني اختيار خادم؟</string>
|
||||
<string name="welcome_page3_text">يختار الأشخاص المختلفون خوادم مختلفة لأي عدد من الأسباب. يعد art.example مكانًا رائعًا للفنانين ، بينما قد يكون glasgow.example اختيارًا جيدًا للاسكتلنديين. \n\n لا يمكنك أن تخطئ في أي من الخوادم التي نوصي بها ، لذلك بغض النظر عن أي واحد تختاره (أو إذا قمت بإدخال الخادم الخاص بك في شريط البحث) ، فلن يفوتك أي شيء في أي مكان.</string>
|
||||
<string name="signup_random_server_explain">سوف نختار خادماً بناءً على لغتك إذا قمت بالمتابعة دون إجراء إختيار.</string>
|
||||
<string name="server_filter_any_language">أي لغة</string>
|
||||
<string name="server_filter_instant_signup">تسجيل فوري</string>
|
||||
<string name="server_filter_manual_review">مراجعة يدوية</string>
|
||||
<string name="server_filter_any_signup_speed">أي سرعة تسجيل</string>
|
||||
<string name="server_filter_region_europe">أوروبا</string>
|
||||
<string name="server_filter_region_north_america">أمريكا الشمالية</string>
|
||||
<string name="server_filter_region_south_america">أمريكا الجنوبية</string>
|
||||
<string name="server_filter_region_africa">أفريقيا</string>
|
||||
<string name="server_filter_region_asia">آسيا</string>
|
||||
<string name="server_filter_region_oceania">أوقيانوسيا</string>
|
||||
<string name="not_accepting_new_members">لا يقبل استقبال أعضاء جدد</string>
|
||||
<string name="category_special_interests">المصالح الخاصة</string>
|
||||
<string name="signup_passwords_dont_match">كلمات المرور غير متطابقة</string>
|
||||
<string name="pick_server_for_me">اختر لي</string>
|
||||
<string name="profile_add_row">إضافة صف</string>
|
||||
<string name="profile_setup">إعداد الملف الشخصي</string>
|
||||
<string name="profile_setup_subtitle">يمكنك دائماً إكمال هذا في وقت لاحق في علامة التبويب الملف الشخصي.</string>
|
||||
<string name="profile_setup_explanation">يمكنك إضافة ما يصل إلى أربعة حقول شخصية لأي شيء تريده. الموقع، الروابط، الضمائر - السماء هي الحد الأقصى.</string>
|
||||
<string name="popular_on_mastodon">مشهور على ماستدون</string>
|
||||
<string name="follow_all">اتبع الكل</string>
|
||||
<string name="server_rules_disagree">لا أوافق</string>
|
||||
<string name="privacy_policy_explanation">بالمختصر: نحن لا نجمع أو نعالج أي شيء.</string>
|
||||
<!-- %s is server domain -->
|
||||
<string name="server_policy_disagree">لايتفق مع %s</string>
|
||||
<string name="profile_bio">نبذة عنك</string>
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<string name="sending_follows">متابعة المستخدمين…</string>
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
<string name="signup_email_domain_blocked">%1$s لا يسمح بالتسجيلات من %2$s. جرب واحدا أو <a>اختار خادم مختلف</a>.</string>
|
||||
<string name="signup_username_taken">اِسم المُستَخدِم هذا مأخوذٌ بالفعل.</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,16 +1,432 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Пачаць</string>
|
||||
<string name="get_started">Стварыць уліковы запіс</string>
|
||||
<string name="already_have_account">У мяне ўжо ёсць уліковы запіс</string>
|
||||
<string name="log_in">Увайсці</string>
|
||||
<string name="next">Далей</string>
|
||||
<string name="loading_instance">Атрыманне інфармацыі аб серверы…</string>
|
||||
<string name="error">Памылка</string>
|
||||
<string name="not_a_mastodon_instance">Здаецца, %s не з\'яўляецца серверам Mastodon.</string>
|
||||
<string name="ok">Добра</string>
|
||||
<string name="preparing_auth">Падрыхтоўка да аўтэнтыфікацыі…</string>
|
||||
<string name="finishing_auth">Завяршэнне аўтэнтыфікацыі…</string>
|
||||
<string name="user_boosted">%s пашырыў</string>
|
||||
<string name="in_reply_to">У адказ %s</string>
|
||||
<string name="notifications">Апавяшчэнні</string>
|
||||
<string name="user_followed_you">падпісаўся(-лася) на вас</string>
|
||||
<string name="user_sent_follow_request">адправіў запыт на падпіску</string>
|
||||
<string name="user_favorited">упадабаў(-ла) ваш допіс</string>
|
||||
<string name="notification_boosted">пашырыў(-ла) ваш допіс</string>
|
||||
<string name="poll_ended">апытанне завершана</string>
|
||||
<string name="time_seconds">%dсек</string>
|
||||
<string name="time_minutes">%dхв</string>
|
||||
<string name="time_hours">%dгадз</string>
|
||||
<string name="time_days">%dдз</string>
|
||||
<string name="share_toot_title">Абагуліць</string>
|
||||
<string name="settings">Налады</string>
|
||||
<string name="publish">Апублікаваць</string>
|
||||
<string name="discard_draft">Скасаваць чарнавік?</string>
|
||||
<string name="discard">Скасаваць</string>
|
||||
<string name="cancel">Скасаваць</string>
|
||||
<plurals name="followers">
|
||||
<item quantity="one">падпісчык</item>
|
||||
<item quantity="few">падпісчыка</item>
|
||||
<item quantity="many">падпісчыкаў</item>
|
||||
<item quantity="other">падпісчыкаў</item>
|
||||
</plurals>
|
||||
<plurals name="following">
|
||||
<item quantity="one">падпісаны</item>
|
||||
<item quantity="few">падпісаны</item>
|
||||
<item quantity="many">падпісаны</item>
|
||||
<item quantity="other">падпісаны</item>
|
||||
</plurals>
|
||||
<plurals name="posts">
|
||||
<item quantity="one">допіс</item>
|
||||
<item quantity="few">допісы</item>
|
||||
<item quantity="many">допісаў</item>
|
||||
<item quantity="other">допісаў</item>
|
||||
</plurals>
|
||||
<string name="posts">Допісы</string>
|
||||
<string name="posts_and_replies">Допісы і адказы</string>
|
||||
<string name="media">Медыя</string>
|
||||
<string name="profile_about">Інфармацыя</string>
|
||||
<string name="button_follow">Падпісацца</string>
|
||||
<string name="button_following">Вы падпісаны</string>
|
||||
<string name="edit_profile">Рэдагаваць профіль</string>
|
||||
<string name="mention_user">Згадаць %s</string>
|
||||
<string name="share_user">Абагуліць %s</string>
|
||||
<string name="mute_user">Ігнараваць %s</string>
|
||||
<string name="unmute_user">Не ігнараваць %s</string>
|
||||
<string name="block_user">Заблакіраваць %s</string>
|
||||
<string name="unblock_user">Разблакіраваць %s</string>
|
||||
<string name="report_user">Паскардзіцца на %s</string>
|
||||
<string name="block_domain">Заблакіраваць %s</string>
|
||||
<string name="unblock_domain">Разблакіраваць %s</string>
|
||||
<plurals name="x_posts">
|
||||
<item quantity="one">%,d допіс</item>
|
||||
<item quantity="few">%,d допісы</item>
|
||||
<item quantity="many">%,d допісаў</item>
|
||||
<item quantity="other">%,d допісаў</item>
|
||||
</plurals>
|
||||
<string name="profile_joined">Далучыўся</string>
|
||||
<string name="done">Гатова</string>
|
||||
<string name="loading">Загрузка…</string>
|
||||
<string name="field_label">Метка</string>
|
||||
<string name="field_content">Змесціва</string>
|
||||
<string name="saving">Захаванне…</string>
|
||||
<string name="post_from_user">Допіс ад %s</string>
|
||||
<string name="poll_option_hint">Варыянт %d</string>
|
||||
<plurals name="x_minutes">
|
||||
<item quantity="one">%d хвіліна</item>
|
||||
<item quantity="few">%d хвіліны</item>
|
||||
<item quantity="many">%d хвілін</item>
|
||||
<item quantity="other">%d хвілін</item>
|
||||
</plurals>
|
||||
<plurals name="x_hours">
|
||||
<item quantity="one">%d гадзіна</item>
|
||||
<item quantity="few">%d гадзіны</item>
|
||||
<item quantity="many">%d гадзін</item>
|
||||
<item quantity="other">%d гадзін</item>
|
||||
</plurals>
|
||||
<plurals name="x_days">
|
||||
<item quantity="one">%d дзень</item>
|
||||
<item quantity="few">%d дні</item>
|
||||
<item quantity="many">%d дзён</item>
|
||||
<item quantity="other">%d дзён</item>
|
||||
</plurals>
|
||||
<string name="compose_poll_duration">Працягласць: %s</string>
|
||||
<plurals name="x_seconds_left">
|
||||
<item quantity="one">%d секунда засталася</item>
|
||||
<item quantity="few">%d секунды засталося</item>
|
||||
<item quantity="many">%d секунд засталося</item>
|
||||
<item quantity="other">%d секунд засталося</item>
|
||||
</plurals>
|
||||
<plurals name="x_minutes_left">
|
||||
<item quantity="one">%d хвіліна засталася</item>
|
||||
<item quantity="few">%d хвіліны засталося</item>
|
||||
<item quantity="many">%d хвілін засталося</item>
|
||||
<item quantity="other">%d хвілін засталося</item>
|
||||
</plurals>
|
||||
<plurals name="x_hours_left">
|
||||
<item quantity="one">%d гадзіна засталася</item>
|
||||
<item quantity="few">%d гадзіны засталося</item>
|
||||
<item quantity="many">%d гадзін засталося</item>
|
||||
<item quantity="other">%d гадзін засталося</item>
|
||||
</plurals>
|
||||
<plurals name="x_days_left">
|
||||
<item quantity="one">%d дзень застаўся</item>
|
||||
<item quantity="few">%d дні засталося</item>
|
||||
<item quantity="many">%d дзён засталося</item>
|
||||
<item quantity="other">%d дзён засталося</item>
|
||||
</plurals>
|
||||
<plurals name="x_voters">
|
||||
<item quantity="one">%,d прагаласаваў</item>
|
||||
<item quantity="few">%,d прагаласавала</item>
|
||||
<item quantity="many">%,d прагаласавала</item>
|
||||
<item quantity="other">%,d прагаласавала</item>
|
||||
</plurals>
|
||||
<string name="poll_closed">Завершана</string>
|
||||
<string name="confirm_mute_title">Ігнараваць уліковы запіс</string>
|
||||
<string name="confirm_mute">Ігнараваць %s?</string>
|
||||
<string name="do_mute">Ігнараваць</string>
|
||||
<string name="confirm_unmute_title">Не ігнараваць уліковы запіс</string>
|
||||
<string name="confirm_unmute">Не ігнараваць %s?</string>
|
||||
<string name="do_unmute">Не ігнараваць</string>
|
||||
<string name="confirm_block_title">Заблакіраваць уліковы запіс</string>
|
||||
<string name="confirm_block_domain_title">Заблакіраваць дамен</string>
|
||||
<string name="confirm_block">Заблакіраваць %s?</string>
|
||||
<string name="do_block">Заблакіраваць</string>
|
||||
<string name="confirm_unblock_title">Разблакіраваць уліковы запіс</string>
|
||||
<string name="confirm_unblock_domain_title">Разблакіраваць дамен</string>
|
||||
<string name="confirm_unblock">Разблакіраваць %s?</string>
|
||||
<string name="do_unblock">Разблакіраваць</string>
|
||||
<string name="button_muted">Ігнаруецца</string>
|
||||
<string name="button_blocked">Заблакіраваны</string>
|
||||
<string name="action_vote">Прагаласаваць</string>
|
||||
<string name="tap_to_reveal">Націсніце, каб паказаць</string>
|
||||
<string name="delete">Выдаліць</string>
|
||||
<string name="confirm_delete_title">Выдаліць допіс</string>
|
||||
<string name="confirm_delete">Вы ўпэўненыя, што хочаце выдаліць гэты допіс?</string>
|
||||
<string name="deleting">Выдаленне…</string>
|
||||
<string name="notification_channel_audio_player">Прайграванне аўдыя</string>
|
||||
<string name="play">Прайграць</string>
|
||||
<string name="pause">Прыпыніць</string>
|
||||
<string name="log_out">Выйсці</string>
|
||||
<string name="add_account">Дадаць уліковы запіс</string>
|
||||
<string name="search_hint">Пошук</string>
|
||||
<string name="hashtags">Хэштэгі</string>
|
||||
<string name="news">Навіны</string>
|
||||
<string name="for_you">Для вас</string>
|
||||
<string name="all_notifications">Усе</string>
|
||||
<string name="mentions">Згадванні</string>
|
||||
<plurals name="x_people_talking">
|
||||
<item quantity="one">%d чалавек размаўляе</item>
|
||||
<item quantity="few">%d чалавекі размаўляе</item>
|
||||
<item quantity="many">%d чалавек размаўляе</item>
|
||||
<item quantity="other">%d чалавек размаўляе</item>
|
||||
</plurals>
|
||||
<plurals name="discussed_x_times">
|
||||
<item quantity="one">Абмяркоўвалася %d раз</item>
|
||||
<item quantity="few">Абмяркоўвалася %d разы</item>
|
||||
<item quantity="many">Абмяркоўвалася %d разоў</item>
|
||||
<item quantity="other">Абмяркоўвалася %d разоў</item>
|
||||
</plurals>
|
||||
<string name="report_title">Паскардзіцца на %s</string>
|
||||
<string name="report_choose_reason">Што не так з гэтым допісам?</string>
|
||||
<string name="report_choose_reason_account">Што не так з %s?</string>
|
||||
<string name="report_choose_reason_subtitle">Выберыце найлепшы варыянт</string>
|
||||
<string name="report_reason_personal">Мне не падабаецца</string>
|
||||
<string name="report_reason_personal_subtitle">Гэта не тое, што вы хочаце бачыць</string>
|
||||
<string name="report_reason_spam">Гэта спам</string>
|
||||
<string name="report_reason_spam_subtitle">Шкодныя спасылкі, фальшывыя ўзаемадзеянні або адказы, што паўтараюцца</string>
|
||||
<string name="report_reason_violation">Гэта парушае правілы сервера</string>
|
||||
<string name="report_reason_violation_subtitle">Вам вядома, што гэта парушае пэўныя правілы</string>
|
||||
<string name="report_reason_other">Гэта нешта іншае</string>
|
||||
<string name="report_reason_other_subtitle">Гэта праблема не падпадае ні пад адну з катэгорыі</string>
|
||||
<string name="report_choose_rule">Якія правілы былі парушаны?</string>
|
||||
<string name="report_choose_rule_subtitle">Абярыце ўсе варыянты, што падыходзяць</string>
|
||||
<string name="report_choose_posts">Ці ёсць допісы, якія пацвярджаюць гэтую скаргу?</string>
|
||||
<string name="report_choose_posts_subtitle">Абярыце ўсе варыянты, што падыходзяць</string>
|
||||
<string name="report_comment_title">Што-небудзь яшчэ, што мы павінны ведаць?</string>
|
||||
<string name="report_comment_hint">Дадатковыя каментарыі</string>
|
||||
<string name="sending_report">Адпраўка скаргі…</string>
|
||||
<string name="report_sent_title">Дзякуй за вашу скаргу, мы яе разгледзім.</string>
|
||||
<string name="report_sent_subtitle">Пакуль мы разглядаем яе, вы можаце прыняць меры супраць %s.</string>
|
||||
<string name="unfollow_user">Адпісацца ад %s</string>
|
||||
<string name="unfollow">Адпісацца</string>
|
||||
<string name="mute_user_explain">Вы не ўбачыце іх допісы або пашырэнні ў сваёй хатняй стужцы. Яны не даведаюцца, што вы іх ігнаруеце.</string>
|
||||
<string name="block_user_explain">Яны больш не змогуць падпісвацца на вас або бачыць вашыя допісы, але змогуць бачыць, што яны былі заблакіраваны.</string>
|
||||
<string name="report_personal_title">Не хочаце бачыць гэта?</string>
|
||||
<string name="report_personal_subtitle">Калі вы бачыце на Mastodon нешта, што вам не падабаецца, вы можаце выдаліць чалавека са свайго асяроддзя.</string>
|
||||
<string name="back">Назад</string>
|
||||
<string name="instance_catalog_title">Mastodon складаецца з карыстальнікаў на розных серверах.</string>
|
||||
<string name="instance_catalog_subtitle">Выбірайце сервер у залежнасці ад вашых інтарэсаў, рэгіёна або выберыце сервер агульнага прызначэння. Вы па-ранейшаму можаце ўзаемадзейнічаць з усімі, незалежна ад сервера.</string>
|
||||
<string name="edit_photo">рэдагаваць</string>
|
||||
<string name="password_note">Выкарыстоўвайце вялікія літары, спецыяльныя сімвалы і лічбы, каб павялічыць надзейнасць пароля.</string>
|
||||
<string name="category_academia">Акадэмія</string>
|
||||
<string name="category_activism">Актывізм</string>
|
||||
<string name="category_all">Усе</string>
|
||||
<string name="category_art">Мастацтва</string>
|
||||
<string name="category_food">Ежа</string>
|
||||
<string name="category_furry">Furry</string>
|
||||
<string name="category_games">Гульні</string>
|
||||
<string name="category_general">Асноўныя</string>
|
||||
<string name="category_journalism">Журналістыка</string>
|
||||
<string name="category_lgbt">ЛГБТ</string>
|
||||
<string name="category_music">Музыка</string>
|
||||
<string name="category_regional">Рэгіянальныя</string>
|
||||
<string name="category_tech">Тэхналогіі</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="resend">Адправіць паўторна</string>
|
||||
<string name="open_email_app">Адкрыць праграму для пошты</string>
|
||||
<string name="resent_email">Электронны ліст з пацвярджэннем адпраўлены</string>
|
||||
<string name="compose_hint">Напішыце тое, аб чым думаеце</string>
|
||||
<string name="content_warning">Папярэджанне аб змесціве</string>
|
||||
<string name="add_image_description">Дадаць апісанне відарыса…</string>
|
||||
<string name="retry_upload">Паўтарыць запампоўку</string>
|
||||
<string name="edit_image">Рэдагаваць відарыс</string>
|
||||
<string name="save">Захаваць</string>
|
||||
<string name="add_alt_text">Дадаць альтэрнатыўны тэкст</string>
|
||||
<string name="alt_text_subtitle">Альтэрнатыўны тэкст апісвае вашы фатаграфіі для людзей са слабым зрокам ці без яго. Паспрабуйце ўключыць дастаткова дэталяў, каб быў зразумелы кантэкст.</string>
|
||||
<string name="alt_text_hint">напрыклад, Сабака падазрона азіраецца з прыжмуранымі вачыма на камеру.</string>
|
||||
<string name="visibility_public">Публічны</string>
|
||||
<string name="visibility_followers_only">Толькі для падпісчыкаў</string>
|
||||
<string name="visibility_private">Толькі людзі, якіх я згадаў</string>
|
||||
<string name="search_all">Усе</string>
|
||||
<string name="search_people">Людзі</string>
|
||||
<string name="recent_searches">Нядаўнія запыты</string>
|
||||
<string name="step_x_of_n">Крок %1$d з %2$d</string>
|
||||
<string name="skip">Прапусціць</string>
|
||||
<string name="notification_type_follow">Новыя падпісчыкі</string>
|
||||
<string name="notification_type_favorite">Абраныя</string>
|
||||
<string name="notification_type_reblog">Пашырэнні</string>
|
||||
<string name="notification_type_mention">Згадванні</string>
|
||||
<string name="notification_type_poll">Апытанні</string>
|
||||
<string name="choose_account">Выберыце ўліковы запіс</string>
|
||||
<string name="err_not_logged_in">Спачатку ўвайдзіце ў Mastodon</string>
|
||||
<plurals name="cant_add_more_than_x_attachments">
|
||||
<item quantity="one">Вы не можаце дадаць больш за %d далучэнне</item>
|
||||
<item quantity="few">Вы не можаце дадаць больш за %d далучэнні</item>
|
||||
<item quantity="many">Вы не можаце дадаць больш за %d далучэнняў</item>
|
||||
<item quantity="other">Вы не можаце дадаць больш за %d далучэнняў</item>
|
||||
</plurals>
|
||||
<string name="media_attachment_unsupported_type">Тып файла %s не падтрымліваецца</string>
|
||||
<string name="media_attachment_too_big">Памер файла %1$s перавышае абмежаванне ў %2$s МБ</string>
|
||||
<string name="settings_theme">Знешні выгляд</string>
|
||||
<string name="theme_auto">Аўтаматычна</string>
|
||||
<string name="theme_light">Светлая</string>
|
||||
<string name="theme_dark">Цёмная</string>
|
||||
<string name="theme_true_black">Сапраўдны чорны рэжым</string>
|
||||
<string name="settings_behavior">Паводзіны</string>
|
||||
<string name="settings_gif">Прайграваць аніміраваныя аватары і эмодзі</string>
|
||||
<string name="settings_custom_tabs">Выкарыстоўваць убудаваны браўзер</string>
|
||||
<string name="settings_notifications">Апавяшчэнні</string>
|
||||
<string name="notify_me_when">Паведаміце мне, калі</string>
|
||||
<string name="notify_anyone">кожны</string>
|
||||
<string name="notify_follower">падпісчык</string>
|
||||
<string name="notify_followed">на каго я падпісаны</string>
|
||||
<string name="notify_none">ніхто</string>
|
||||
<string name="notify_favorites">Дадае мой допіс у абранае</string>
|
||||
<string name="notify_follow">Падпісаўся на мяне</string>
|
||||
<string name="notify_reblog">Пашырае мой допіс</string>
|
||||
<string name="notify_mention">Згадвае мяне</string>
|
||||
<string name="settings_boring">Нудная зона</string>
|
||||
<string name="settings_account">Налады ўліковага запісу</string>
|
||||
<string name="settings_contribute">Унесці ўклад у Mastodon</string>
|
||||
<string name="settings_tos">Умовы выкарыстання</string>
|
||||
<string name="settings_privacy_policy">Палітыка прыватнасці</string>
|
||||
<string name="settings_spicy">Вострая зона</string>
|
||||
<string name="settings_clear_cache">Ачысціць кэш медыя</string>
|
||||
<string name="settings_app_version">Mastodon для Android v%1$s (%2$d)</string>
|
||||
<string name="media_cache_cleared">Кэш медыя ачышчаны</string>
|
||||
<string name="confirm_log_out">Вы ўпэўненыя, што хочаце выйсці?</string>
|
||||
<string name="sensitive_content">Далікатны змест</string>
|
||||
<string name="sensitive_content_explain">Аўтар пазначыў гэты медыя файл як далікатны. Націсніце, каб паказаць.</string>
|
||||
<string name="media_hidden">Націсніце, каб паказаць</string>
|
||||
<string name="avatar_description">Перайсці да профілю %s</string>
|
||||
<string name="more_options">Больш опцый</string>
|
||||
<string name="reveal_content">Паказаць змест</string>
|
||||
<string name="hide_content">Схаваць змест</string>
|
||||
<string name="new_post">Новы допіс</string>
|
||||
<string name="button_reply">Адказаць</string>
|
||||
<string name="button_reblog">Пашырыць</string>
|
||||
<string name="button_favorite">Абранае</string>
|
||||
<string name="button_share">Абагуліць</string>
|
||||
<string name="media_no_description">Медыя без апісання</string>
|
||||
<string name="add_media">Дадаць медыя</string>
|
||||
<string name="add_poll">Дадаць апытанне</string>
|
||||
<string name="emoji">Эмодзі</string>
|
||||
<string name="post_visibility">Бачнасць допісу</string>
|
||||
<string name="home_timeline">Хатняя стужка</string>
|
||||
<string name="my_profile">Мой профіль</string>
|
||||
<string name="media_viewer">Праграма для прагляду медыя</string>
|
||||
<string name="follow_user">Падпісацца на %s</string>
|
||||
<string name="unfollowed_user">Адпісацца ад %s</string>
|
||||
<string name="followed_user">Цяпер вы падпісаны на %s</string>
|
||||
<string name="open_in_browser">Адкрыць у браўзеры</string>
|
||||
<string name="hide_boosts_from_user">Схаваць пашырэнні ад %s</string>
|
||||
<string name="show_boosts_from_user">Паказаць пашырэнні ад %s</string>
|
||||
<string name="signup_reason_note">Гэта дапаможа нам разгледзець вашу заяўку.</string>
|
||||
<string name="clear">Ачысціць</string>
|
||||
<string name="profile_header">Відарыс шапкі</string>
|
||||
<string name="profile_picture">Аватар</string>
|
||||
<string name="reorder">Упарадкаваць</string>
|
||||
<string name="download">Спампаваць</string>
|
||||
<string name="permission_required">Патрабуецца дазвол</string>
|
||||
<string name="storage_permission_to_download">Праграме патрэбны доступ да сховішча, каб захаваць гэты файл.</string>
|
||||
<string name="open_settings">Адкрыць налады</string>
|
||||
<string name="error_saving_file">Памылка пры захаванні файла</string>
|
||||
<string name="file_saved">Файл захаваны</string>
|
||||
<string name="downloading">Спампоўванне…</string>
|
||||
<string name="no_app_to_handle_action">Няма праграмы для выканання гэтага дзеяння</string>
|
||||
<string name="local_timeline">Супольнасць</string>
|
||||
<string name="trending_posts_info_banner">Допісы, што набіраюць папулярнасць у вашым кутку Mastodon.</string>
|
||||
<string name="trending_hashtags_info_banner">Хэштэгі, што набіраюць папулярнасць у вашым кутку Mastodon.</string>
|
||||
<string name="trending_links_info_banner">Навіна, якая найбольш абмяркоўваецца ў вашым кутку Mastodon.</string>
|
||||
<string name="local_timeline_info_banner">Гэта самыя апошнія допісы людзей, якія выкарыстоўваюць той жа сервер Mastodon, што і вы.</string>
|
||||
<string name="dismiss">Адхіліць</string>
|
||||
<string name="see_new_posts">Паказаць новыя допісы</string>
|
||||
<string name="load_missing_posts">Загрузіць адсутныя допісы</string>
|
||||
<string name="follow_back">Падпісацца ў адказ</string>
|
||||
<string name="button_follow_pending">Чакаюць</string>
|
||||
<string name="follows_you">Падпісаны(-а) на вас</string>
|
||||
<string name="manually_approves_followers">Уручную пацвярджае падпісчыкаў</string>
|
||||
<string name="current_account">Бягучы ўліковы запіс</string>
|
||||
<string name="log_out_account">Выйсці з %s</string>
|
||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||
<plurals name="x_followers">
|
||||
<item quantity="one">%,d падпісчык</item>
|
||||
<item quantity="few">%,d падпісчыка</item>
|
||||
<item quantity="many">%,d падпісчыкаў</item>
|
||||
<item quantity="other">%,d падпісчыкаў</item>
|
||||
</plurals>
|
||||
<plurals name="x_following">
|
||||
<item quantity="one">%,d падпіска</item>
|
||||
<item quantity="few">%,d падпіскі</item>
|
||||
<item quantity="many">%,d падпісак</item>
|
||||
<item quantity="other">%,d падпісак</item>
|
||||
</plurals>
|
||||
<plurals name="x_favorites">
|
||||
<item quantity="one">%,d абраны</item>
|
||||
<item quantity="few">%,d абраныя</item>
|
||||
<item quantity="many">%,d абраных</item>
|
||||
<item quantity="other">%,d абраных</item>
|
||||
</plurals>
|
||||
<plurals name="x_reblogs">
|
||||
<item quantity="one">%,d рэпост</item>
|
||||
<item quantity="few">%,d рэпосты</item>
|
||||
<item quantity="many">%,d пашырэнняў</item>
|
||||
<item quantity="other">%,d пашырэнняў</item>
|
||||
</plurals>
|
||||
<string name="timestamp_via_app">%1$s праз %2$s</string>
|
||||
<string name="time_now">толькі што</string>
|
||||
<string name="post_info_reblogs">Пашырэнні</string>
|
||||
<string name="post_info_favorites">Абраныя</string>
|
||||
<string name="edit_history">Гісторыя рэдагавання</string>
|
||||
<string name="last_edit_at_x">Апошняе рэдагаванне %s</string>
|
||||
<string name="time_just_now">толькі што</string>
|
||||
<plurals name="x_seconds_ago">
|
||||
<item quantity="one">%d секунду таму</item>
|
||||
<item quantity="few">%d секунды таму</item>
|
||||
<item quantity="many">%d секунд таму</item>
|
||||
<item quantity="other">%d секунд таму</item>
|
||||
</plurals>
|
||||
<plurals name="x_minutes_ago">
|
||||
<item quantity="one">%d хвіліну таму</item>
|
||||
<item quantity="few">%d хвіліны таму</item>
|
||||
<item quantity="many">%d хвілін таму</item>
|
||||
<item quantity="other">%d хвілін таму</item>
|
||||
</plurals>
|
||||
<string name="edited_timestamp">адрэдагавана %s</string>
|
||||
<string name="edit_original_post">Зыходны допіс</string>
|
||||
<string name="edit_text_edited">Тэкст адрэдагавана</string>
|
||||
<string name="edit_spoiler_added">Папярэджанне аб змесціве дададзена</string>
|
||||
<string name="edit_spoiler_edited">Папярэджанне аб змесціве адрэдагавана</string>
|
||||
<string name="edit_spoiler_removed">Папярэджанне аб змесціве выдалена</string>
|
||||
<string name="edit_poll_added">Апытанне дададзена</string>
|
||||
<string name="edit_poll_edited">Апытанне адрэдагавана</string>
|
||||
<string name="edit_poll_removed">Апытанне выдалена</string>
|
||||
<string name="edit_media_added">Медыя дададзены</string>
|
||||
<string name="edit_media_removed">Медыя выдалены</string>
|
||||
<string name="edit_media_reordered">Медыя пераўпарадкаваны</string>
|
||||
<string name="edit_marked_sensitive">Пазначаны як далікатны</string>
|
||||
<string name="edit_marked_not_sensitive">Пазначаны як неадчувальны</string>
|
||||
<string name="edit_multiple_changed">Допіс адрэдагавана</string>
|
||||
<string name="edit">Рэдагаваць</string>
|
||||
<string name="discard_changes">Скасаваць змены?</string>
|
||||
<string name="upload_failed">Не ўдалося запампаваць</string>
|
||||
<string name="file_size_bytes">%d байтаў</string>
|
||||
<string name="file_size_kb">%.2f КБ</string>
|
||||
<string name="file_size_mb">%.2f МБ</string>
|
||||
<string name="file_size_gb">%.2f ГБ</string>
|
||||
<string name="file_upload_progress">%1$s з %2$s</string>
|
||||
<string name="file_upload_time_remaining">Засталося %s</string>
|
||||
<string name="upload_error_connection_lost">Ваша прылада страціла злучэнне з Інтэрнэтам</string>
|
||||
<string name="upload_processing">Апрацоўка…</string>
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<string name="update_available">Mastodon для Android %s гатовы да спампоўкі.</string>
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<string name="update_ready">Mastodon для Android %s спампаваны і гатовы да ўсталявання.</string>
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">Спампаваць (%s)</string>
|
||||
<string name="install_update">Усталяваць</string>
|
||||
<string name="i_agree">Я згодны</string>
|
||||
<string name="empty_list">Гэты ліст пусты</string>
|
||||
<string name="instance_signup_closed">Гэты сервер не прымае новыя рэгістрацыі.</string>
|
||||
<string name="text_copied">Скапіявана ў буфер абмену</string>
|
||||
<string name="add_bookmark">Закладка</string>
|
||||
<string name="remove_bookmark">Выдаліць закладку</string>
|
||||
<string name="bookmarks">Закладкі</string>
|
||||
<string name="your_favorites">Вашы абраныя</string>
|
||||
<string name="login_title">З вяртаннем</string>
|
||||
<string name="login_subtitle">Увайдзіце з дапамогай сервера, на якім вы стварылі свой уліковы запіс.</string>
|
||||
<string name="server_url">URL-адрас сервера</string>
|
||||
<string name="welcome_page1_text">Уявіце, што ў вас ёсць адрас электроннай пошты, які заканчваецца на @example.com.\n\nВы па-ранейшаму можаце адпраўляць і атрымліваць электронныя лісты ад каго захочаце, нават калі іх электронная пошта заканчваецца на @gmail.com, @icloud.com або @example.com.</string>
|
||||
<string name="welcome_page2_title">Mastodon такі.</string>
|
||||
<string name="welcome_page2_text">Ваш ідэнтыфікатар можа быць @gothgirl654@example.social, але вы ўсё яшчэ можаце падпісвацца, пашыраць і перапісвацца з @fallout5ever@example.online.</string>
|
||||
<string name="welcome_page3_title">Як выбраць сервер?</string>
|
||||
<string name="welcome_page3_text">Розныя людзі выбіраюць розныя серверы па розных прычынах. art.example з\'яўляецца выдатным месцам для мастакоў, у той час як glasgow.example можа быць добрым выбарам для шатландцаў.\n\nВы не памыліцеся ні з адным з нашых рэкамендаваных сервераў, так што незалежна ад таго, які вы выбераце (або калі ўведзяце ваш уласны ў радку пошуку сервера), вы нідзе нічога не прапусціце.</string>
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -1,3 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
</resources>
|
||||
<string name="sk_app_name">Megalodon</string>
|
||||
<string name="sk_delete_and_redraft">Выдаліць і паправіць</string>
|
||||
<string name="sk_confirm_delete_and_redraft_title">Выдаліць і паправіць допіс</string>
|
||||
<string name="sk_pin_post">Замацаваць у профілі</string>
|
||||
<string name="sk_confirm_pin_post_title">Замацаваць допіс у профілі</string>
|
||||
<string name="sk_confirm_pin_post">Вы хочаце замацаваць гэты допіс у сваім профілі\?</string>
|
||||
<string name="sk_pinning">Замацаванне допісу…</string>
|
||||
<string name="sk_confirm_unpin_post_title">Адмацаваць допіс ад профілю</string>
|
||||
<string name="sk_unpinning">Адмацаванне допісу…</string>
|
||||
<string name="sk_image_description">Апісанне выявы</string>
|
||||
<string name="sk_visibility_unlisted">Прыхаваны</string>
|
||||
<string name="sk_settings_show_replies">Паказваць адказы</string>
|
||||
<string name="sk_settings_show_boosts">Паказаць пашырэнні</string>
|
||||
<string name="sk_pinned_posts">Замацавана</string>
|
||||
<string name="sk_confirm_delete_and_redraft">Вы ўпэўненыя, што жадаеце выдаліць і паправіць гэты допіс\?</string>
|
||||
<string name="sk_unpin_post">Адмацаваць ад профілю</string>
|
||||
<string name="sk_confirm_unpin_post">Вы ўпэўненыя, што жадаеце адмацаваць гэты допіс\?</string>
|
||||
</resources>
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">শুরু করুন</string>
|
||||
<string name="log_in">লগ ইন করুন</string>
|
||||
<string name="next">পরবর্তী</string>
|
||||
<string name="ok">ঠিক আছে</string>
|
||||
@@ -38,8 +37,12 @@
|
||||
<string name="for_you">আপনার জন্য</string>
|
||||
<string name="all_notifications">সকল</string>
|
||||
<string name="mentions">উল্লেখ</string>
|
||||
<!-- %s is the email address -->
|
||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is file size -->
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Kreni</string>
|
||||
<string name="log_in">Loguj se</string>
|
||||
<string name="next">Dalje</string>
|
||||
<string name="error">Greška</string>
|
||||
@@ -129,14 +128,7 @@
|
||||
<string name="report_personal_title">Ne želite ovo vidjeti?</string>
|
||||
<string name="report_personal_subtitle">Kada vidite nešto nepoželjno na Mastodon-u, možete blokirati odredjeni profil.</string>
|
||||
<string name="back">Nazad</string>
|
||||
<string name="instance_rules_title">Važna pravila</string>
|
||||
<string name="instance_rules_subtitle">Pogledajte pravila koja je odredila %s administracija.</string>
|
||||
<string name="signup_title">Krenimo sa postavkama na %s</string>
|
||||
<string name="edit_photo">uredi</string>
|
||||
<string name="display_name">vaše ime</string>
|
||||
<string name="username">korisničko ime</string>
|
||||
<string name="email">email</string>
|
||||
<string name="password">lozinka</string>
|
||||
<string name="password_note">Koristite velika slova, brojeve i oznake da bi osigurali lozinku.</string>
|
||||
<string name="category_academia">Akademija</string>
|
||||
<string name="category_activism">Aktivizam</string>
|
||||
@@ -151,8 +143,7 @@
|
||||
<string name="category_music">Muzika</string>
|
||||
<string name="category_regional">Regionalno</string>
|
||||
<string name="category_tech">Tehnika</string>
|
||||
<string name="confirm_email_title">Zadnja stvar</string>
|
||||
<string name="confirm_email_subtitle">Kliknite na link koji smo vam poslali u email-u da se verifikujete.</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="resend">Ponovo poslato</string>
|
||||
<string name="open_email_app">Otvori email</string>
|
||||
<string name="resent_email">Email za verifikaciju poslat</string>
|
||||
@@ -238,7 +229,6 @@
|
||||
<string name="unfollowed_user">Ne pratite %s</string>
|
||||
<string name="followed_user">Sada pratite %s</string>
|
||||
<string name="open_in_browser">Otvori u pregledniku</string>
|
||||
<string name="signup_reason">zašto se želite pridružiti?</string>
|
||||
<string name="signup_reason_note">Ovo nam pomaže prilikom odobravanja vašeg zahtjeva.</string>
|
||||
<string name="clear">Briši</string>
|
||||
<string name="profile_header">Slika zaglavlja</string>
|
||||
@@ -255,4 +245,7 @@
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is file size -->
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Comença</string>
|
||||
<string name="get_started">Crea un compte</string>
|
||||
<string name="already_have_account">Ja tinc un compte</string>
|
||||
<string name="log_in">Inicia sessió</string>
|
||||
<string name="next">Següent</string>
|
||||
<string name="loading_instance">S\'està recuperant la informació del servidor…</string>
|
||||
<string name="error">Error</string>
|
||||
<string name="not_a_mastodon_instance">Sembla que %s no és un servidor de Mastodon.</string>
|
||||
<string name="ok">D\'acord</string>
|
||||
<string name="preparing_auth">Preparant l\'autenticació…</string>
|
||||
<string name="finishing_auth">Finalitzant l\'autenticació…</string>
|
||||
@@ -170,15 +173,15 @@
|
||||
<string name="back">Enrere</string>
|
||||
<string name="instance_catalog_title">Mastodon està format per usuaris de diferents servidors.</string>
|
||||
<string name="instance_catalog_subtitle">Tria un servidor en funció dels teus interessos, regió o un de propòsit general. Seguiràs podent connectar amb tothom, independentment del servidor.</string>
|
||||
<string name="search_communities">Cerca servidors o introdueix l\'URL</string>
|
||||
<string name="instance_rules_title">Algunes normes bàsiques</string>
|
||||
<string name="instance_rules_subtitle">Pren un minut per revisar les normes establertes i aplicades pels administradors de %s.</string>
|
||||
<string name="signup_title">Deixa que et posem en marxa a %s</string>
|
||||
<string name="search_communities">Nom del servidor o URL</string>
|
||||
<string name="instance_rules_title">Normes del servidor</string>
|
||||
<string name="signup_title">Crear un compte</string>
|
||||
<string name="edit_photo">edita</string>
|
||||
<string name="display_name">nom visible</string>
|
||||
<string name="username">nom d\'usuari</string>
|
||||
<string name="email">correu electrònic</string>
|
||||
<string name="password">contrasenya</string>
|
||||
<string name="display_name">Nom</string>
|
||||
<string name="username">Nom d\'usuari</string>
|
||||
<string name="email">Correu electrònic</string>
|
||||
<string name="password">Contrasenya</string>
|
||||
<string name="confirm_password">Confirmar contrasenya</string>
|
||||
<string name="password_note">Inclou lletres majúscules, caràcters especials i números per augmentar la seguretat de la teva contrasenya.</string>
|
||||
<string name="category_academia">Acadèmic</string>
|
||||
<string name="category_activism">Activisme</string>
|
||||
@@ -193,8 +196,9 @@
|
||||
<string name="category_music">Música</string>
|
||||
<string name="category_regional">Regional</string>
|
||||
<string name="category_tech">Tecnologia</string>
|
||||
<string name="confirm_email_title">Una última cosa</string>
|
||||
<string name="confirm_email_subtitle">Toca l\'enllaç del correu electrònic que t\'hem enviat per a confirmar el teu compte.</string>
|
||||
<string name="confirm_email_title">Comprova la teva safata d\'entrada</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="confirm_email_didnt_get">No has rebut l\'enllaç?</string>
|
||||
<string name="resend">Reenvia</string>
|
||||
<string name="open_email_app">Obre l\'aplicació de correu</string>
|
||||
<string name="resent_email">S’ha enviat el correu electrònic de confirmació</string>
|
||||
@@ -282,7 +286,6 @@
|
||||
<string name="open_in_browser">Obre al navegador</string>
|
||||
<string name="hide_boosts_from_user">Amaga els impulsos de %s</string>
|
||||
<string name="show_boosts_from_user">Mostra els impulsos de %s</string>
|
||||
<string name="signup_reason">per què vols unir-te?</string>
|
||||
<string name="signup_reason_note">Això ens ajudarà a revisar la teva petició.</string>
|
||||
<string name="clear">Esborra</string>
|
||||
<string name="profile_header">Imatge de capçalera</string>
|
||||
@@ -375,8 +378,6 @@
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">Baixa (%s)</string>
|
||||
<string name="install_update">Instal·la</string>
|
||||
<string name="privacy_policy_title">Mastodon i la teva privacitat</string>
|
||||
<string name="privacy_policy_subtitle">Tot i que l\'aplicació Mastodon no recull cap dada, el servidor mitjançant el qual et registres pot tenir una política diferent. Pren un minut per revisar i acceptar la política de privadesa de l\'aplicació Mastodon i la política de privadesa del teu servidor.</string>
|
||||
<string name="i_agree">D’acord</string>
|
||||
<string name="empty_list">Aquesta llista està buida</string>
|
||||
<string name="instance_signup_closed">Aquest servidor no accepta nous registres.</string>
|
||||
@@ -384,4 +385,11 @@
|
||||
<string name="add_bookmark">Marca</string>
|
||||
<string name="remove_bookmark">Elimina el marcador</string>
|
||||
<string name="bookmarks">Marcadors</string>
|
||||
<string name="your_favorites">Els meus preferits</string>
|
||||
<string name="login_title">Hola de nou</string>
|
||||
<string name="login_subtitle">Inicia sessió amb el servidor on vas crear el compte.</string>
|
||||
<string name="server_url">URL del servidor</string>
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -142,4 +142,115 @@
|
||||
<string name="sk_your_lists">Llistes</string>
|
||||
<string name="sk_loading_fediverse_resource_title">Buscant-ho al Fedivers</string>
|
||||
<string name="sk_loading_resource_on_instance_title">Buscant-ho a %s</string>
|
||||
<string name="sk_pin_timeline">Fixa la línia de temps</string>
|
||||
<string name="sk_unpin_timeline">No fixes la línia de temps</string>
|
||||
<string name="sk_remove">Elimina</string>
|
||||
<string name="sk_timeline_icon">Icona</string>
|
||||
<string name="sk_unpinned_timeline">S\'ha deixat de fixar de l\'inici</string>
|
||||
<string name="sk_pinned_timeline">S\'ha fixat a l\'inici</string>
|
||||
<string name="sk_icon_heart">Cor</string>
|
||||
<string name="sk_icon_star">Estrela</string>
|
||||
<string name="sk_list">Llista</string>
|
||||
<string name="sk_icon_dog">Gos</string>
|
||||
<string name="sk_recent_searches_placeholder">Escriviu per a cercar</string>
|
||||
<string name="sk_remove_follower">Elimina el seguidor</string>
|
||||
<string name="sk_remove_follower_confirm">Voleu eliminar %s com a seguidor bloquejant-lo i desbloquejant-lo immediatament\?</string>
|
||||
<string name="sk_do_remove_follower">Elimina</string>
|
||||
<string name="sk_remove_follower_success">S\'ha eliminat el seguidor correctament</string>
|
||||
<string name="sk_changelog">Registre de canvis</string>
|
||||
<string name="sk_alt_text_missing_title">Falta el text alternatiu</string>
|
||||
<string name="sk_alt_text_missing">Almenys un adjunt no conté cap descripció.</string>
|
||||
<string name="sk_publish_anyway">Publica igualment</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Desactiva el recordatori per a afegir text alternatiu</string>
|
||||
<string name="sk_notify_posts_info_banner">Si activeu les notificacions de publicacions d\'algunes persones, les seues publicacions noves apareixeran ací.</string>
|
||||
<string name="sk_timelines">Línies de temps</string>
|
||||
<string name="sk_timeline_posts">Publicacions</string>
|
||||
<string name="sk_timelines_add">Afegeix</string>
|
||||
<string name="sk_timeline">Línia de temps</string>
|
||||
<string name="sk_icon_city">Ciutat</string>
|
||||
<string name="sk_icon_cat">Gat</string>
|
||||
<string name="sk_icon_rabbit">Conill</string>
|
||||
<string name="sk_icon_turtle">Tortuga</string>
|
||||
<string name="sk_icon_balloon">Globus</string>
|
||||
<string name="sk_icon_image">Imatge</string>
|
||||
<string name="sk_icon_bot">Bot</string>
|
||||
<string name="sk_icon_language">Llengua</string>
|
||||
<string name="sk_icon_location">Ubicació</string>
|
||||
<string name="sk_icon_megaphone">Megàfon</string>
|
||||
<string name="sk_icon_microphone">Micròfon</string>
|
||||
<string name="sk_icon_microscope">Microscopi</string>
|
||||
<string name="sk_icon_keyboard">Piano</string>
|
||||
<string name="sk_icon_coffee">Café</string>
|
||||
<string name="sk_icon_news">Notícies</string>
|
||||
<string name="sk_icon_pi">Pi</string>
|
||||
<string name="sk_icon_color_palette">Paleta de color</string>
|
||||
<string name="sk_icon_academic_cap">Barret acadèmic</string>
|
||||
<string name="sk_icon_tag">Etiqueta</string>
|
||||
<string name="sk_icon_weather">Temps</string>
|
||||
<string name="sk_icon_games">Jocs</string>
|
||||
<string name="sk_icon_code">Codi</string>
|
||||
<string name="sk_icon_light_bulb">Bombeta</string>
|
||||
<string name="sk_icon_train">Tren</string>
|
||||
<string name="sk_icon_leaves">Fulles</string>
|
||||
<string name="sk_icon_sport">Esport</string>
|
||||
<string name="sk_icon_aperture">Obertura</string>
|
||||
<string name="sk_icon_music">Música</string>
|
||||
<string name="sk_icon_people">Persones</string>
|
||||
<string name="sk_icon_health">Salut</string>
|
||||
<string name="sk_icon_important">Important</string>
|
||||
<string name="sk_icon_chat">Xat</string>
|
||||
<string name="sk_icon_shield">Escut</string>
|
||||
<string name="sk_icon_book">Llibre</string>
|
||||
<string name="sk_icon_bicycle">Bicicleta</string>
|
||||
<string name="sk_icon_map">Mapa</string>
|
||||
<string name="sk_icon_backpack">Motxilla</string>
|
||||
<string name="sk_icon_briefcase">Maleta</string>
|
||||
<string name="sk_icon_fire">Foc</string>
|
||||
<string name="sk_icon_bug">Marieta</string>
|
||||
<string name="sk_icon_pizza">Pizza</string>
|
||||
<string name="sk_icon_stethoscope">Estetoscopi</string>
|
||||
<string name="sk_icon_gavel">Martell</string>
|
||||
<string name="sk_attach_file">Adjunta un fitxer</string>
|
||||
<string name="sk_icon_headphones">Auriculars</string>
|
||||
<string name="sk_icon_human">Humà</string>
|
||||
<string name="sk_icon_globe">Globus</string>
|
||||
<string name="sk_edit_timeline">Edita la línia de temps</string>
|
||||
<string name="sk_icon_pin">Xinxeta</string>
|
||||
<string name="sk_edit_timelines">Edita les línies de temps</string>
|
||||
<string name="sk_alt_button">ALT</string>
|
||||
<string name="sk_post_edited">editat</string>
|
||||
<string name="sk_notification_type_update">Publicacions editades</string>
|
||||
<string name="sk_notify_update">Edita una publicació impulsada</string>
|
||||
<string name="sk_no_results">Sense resultats</string>
|
||||
<string name="sk_no_alt_text">Ni hi ha cap text alternatiu</string>
|
||||
<string name="sk_settings_show_alt_indicator">Indicador dels textos alternatius</string>
|
||||
<string name="sk_save_draft_message">Voleu desar els canvis en l\'esborrany o publicar-lo ara\?</string>
|
||||
<string name="sk_updater_enable_pre_releases">Activa els prellançaments</string>
|
||||
<string name="sk_separator">·</string>
|
||||
<string name="sk_instance_features">Característiques de la instància</string>
|
||||
<string name="sk_settings_support_local_only">El servidor suporta publicacions locals</string>
|
||||
<string name="sk_settings_glitch_instance">Mode només local de Glitch</string>
|
||||
<string name="sk_settings_glitch_mode_explanation">Activeu-ho si la vostra instància d\'inici s\'executa a Glitch. No és necessari per a Hometown o Akkoma.</string>
|
||||
<string name="sk_inline_local_only">local</string>
|
||||
<string name="sk_inline_direct">només gent mencionada</string>
|
||||
<string name="sk_settings_local_only_explanation">La vostra instància d\'inici ha d\'admetre la publicació local perquè això funcione. La majoria de versions modificades de Mastodon sí que ho fan, però Mastodon no.</string>
|
||||
<string name="sk_sign_ups">Usuaris registrats</string>
|
||||
<string name="sk_local_only">Només instància local</string>
|
||||
<string name="sk_settings_see_new_posts_button">Botó de «Publicacions noves»</string>
|
||||
<string name="sk_notify_poll_results">Resultats de l\'enquesta</string>
|
||||
<string name="sk_settings_server_version">Versió del servidor: %s</string>
|
||||
<string name="sk_hashtag">Etiqueta</string>
|
||||
<string name="sk_icon_laugh">Riure</string>
|
||||
<string name="sk_icon_clapper_board">Claqueta</string>
|
||||
<string name="sk_icon_math_formula">Fòrmula matemàtica</string>
|
||||
<string name="sk_searching">Cercant…</string>
|
||||
<string name="sk_save_draft">Voleu desar l\'esborrany\?</string>
|
||||
<string name="sk_settings_show_no_alt_indicator">Indicador dels textos alternatius inexistents</string>
|
||||
<string name="sk_settings_prefix_reply_cw_with_re">Afegeix «re:» a les respostes als avisos de contingut</string>
|
||||
<string name="sk_filtered">Filtrat: %s</string>
|
||||
<string name="sk_expand">Amplia</string>
|
||||
<string name="sk_collapse">Tanca</string>
|
||||
<string name="sk_settings_collapse_long_posts">Acurta les publicacions llargues</string>
|
||||
<string name="sk_signed_up">registrat</string>
|
||||
<string name="sk_spectator_mode">Mode d\'espectador</string>
|
||||
</resources>
|
||||
@@ -1,9 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Začínáme</string>
|
||||
<string name="get_started">Vytvořit účet</string>
|
||||
<string name="already_have_account">Již mám účet</string>
|
||||
<string name="log_in">Přihlásit se</string>
|
||||
<string name="next">Další</string>
|
||||
<string name="loading_instance">Načítání informací o serveru…</string>
|
||||
<string name="error">Chyba</string>
|
||||
<string name="not_a_mastodon_instance">%s se nezdá být Mastodon serverem.</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="preparing_auth">Příprava na autentizaci…</string>
|
||||
<string name="finishing_auth">Dokončení autentizace…</string>
|
||||
@@ -198,15 +201,7 @@
|
||||
<string name="back">Zpět</string>
|
||||
<string name="instance_catalog_title">Mastodon tvoří uživatelé z různých serverů.</string>
|
||||
<string name="instance_catalog_subtitle">Vyberte si server podle na svých zájmů, regionu nebo obecného účelu. Stále se můžete spojit se všemi bez ohledu na server.</string>
|
||||
<string name="search_communities">Hledat server nebo zadat URL</string>
|
||||
<string name="instance_rules_title">Některá základní pravidla</string>
|
||||
<string name="instance_rules_subtitle">Udělejte si chvíli čas a zkontrolujte pravidla, která admini %s nastavili a vynucují.</string>
|
||||
<string name="signup_title">Pojďme si nastavit %s</string>
|
||||
<string name="edit_photo">upravit</string>
|
||||
<string name="display_name">zobrazované jméno</string>
|
||||
<string name="username">uživatelské jméno</string>
|
||||
<string name="email">e-mail</string>
|
||||
<string name="password">heslo</string>
|
||||
<string name="password_note">Použijte velká písmena, speciální znaky a čísla, abyste zvýšili sílu hesla.</string>
|
||||
<string name="category_academia">Akademická sféra</string>
|
||||
<string name="category_activism">Aktivismus</string>
|
||||
@@ -221,8 +216,7 @@
|
||||
<string name="category_music">Hudba</string>
|
||||
<string name="category_regional">Regionální</string>
|
||||
<string name="category_tech">Technologie</string>
|
||||
<string name="confirm_email_title">Ještě jedna věc</string>
|
||||
<string name="confirm_email_subtitle">Klepněte na odkaz, který jsme vám poslali e-mailem, abyste účet ověřili.</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="resend">Poslat znovu</string>
|
||||
<string name="open_email_app">Otevřít e-mailovou aplikaci</string>
|
||||
<string name="resent_email">Potvrzující e-mail byl odeslán</string>
|
||||
@@ -312,7 +306,6 @@
|
||||
<string name="open_in_browser">Otevřít v prohlížeči</string>
|
||||
<string name="hide_boosts_from_user">Skrýt boosty od %s</string>
|
||||
<string name="show_boosts_from_user">Zobrazit boosty od %s</string>
|
||||
<string name="signup_reason">proč se chcete zaregistrovat?</string>
|
||||
<string name="signup_reason_note">Toto nám pomůže posoudit vaši žádost.</string>
|
||||
<string name="clear">Vyčistit</string>
|
||||
<string name="profile_header">Obrázek v záhlaví</string>
|
||||
@@ -417,8 +410,6 @@
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">Stáhnout (%s)</string>
|
||||
<string name="install_update">Instalovat</string>
|
||||
<string name="privacy_policy_title">Mastodon a vaše soukromí</string>
|
||||
<string name="privacy_policy_subtitle">Ačkoliv aplikace Mastodon neshromažďuje žádná data, server, na kterém se registrujete, může mít jiné zásady. Věnujte minutu kontrole a odsouhlasení zásad soukromí aplikace Mastodon a vašeho serveru.</string>
|
||||
<string name="i_agree">Souhlasím</string>
|
||||
<string name="empty_list">Tento seznam je prázdný</string>
|
||||
<string name="instance_signup_closed">Tento server nepřijímá nové registrace.</string>
|
||||
@@ -427,4 +418,15 @@
|
||||
<string name="remove_bookmark">Odstranit ze záložek</string>
|
||||
<string name="bookmarks">Záložky</string>
|
||||
<string name="your_favorites">Vaše oblíbení</string>
|
||||
<string name="login_title">Vítejte zpět</string>
|
||||
<string name="login_subtitle">Přihlaste se pomocí serveru, kde jste vytvořili svůj účet.</string>
|
||||
<string name="server_url">URL serveru</string>
|
||||
<string name="welcome_page1_text">Představte si, že máte e-mailovou adresu, která končí @example.com.\n\nStále můžete od kohokoliv odesílat a přijímat e-maily, i když jejich e-mail končí na @gmail.com nebo @icloud.com nebo @example.com.</string>
|
||||
<string name="welcome_page2_title">Takový je Mastodon.</string>
|
||||
<string name="welcome_page2_text">Vaše uživatelské jméno může být @gothgirl654@example.social, ale stále můžete sledovat, boostovat a chatovat s @fallout5ever@example.online.</string>
|
||||
<string name="welcome_page3_title">Jak si vybrat server?</string>
|
||||
<string name="welcome_page3_text">Různí lidé si vybírají různé servery z různých důvodů. Art.example je skvělým místem pro umělce, zatímco glasgow.example může být dobrou volbou pro Skoty.\n\nS žádným z našich doporučených serverů nemůžete udělat chybu, takže bez ohledu na to, který z nich si vyberete (nebo pokud zadáte svůj vlastní do vyhledávacího řádku serveru), nikde neprohloupíte.</string>
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -146,14 +146,14 @@
|
||||
<string name="sk_compose_no_schedule">Peidiwch ag amserlennu</string>
|
||||
<string name="sk_settings_reduce_motion">Lleihau mudiant mewn animeiddiadau</string>
|
||||
<string name="sk_delete_list_confirm">Ydych chi\'n sicr eich bod eisiau dileu\'r rhestr %s\?</string>
|
||||
<string name="sk_recent_searches_placeholder">Teipiwch rhywbeth i ddechrau chwilio</string>
|
||||
<string name="sk_recent_searches_placeholder">Teipiwch i ddechrau chwilio</string>
|
||||
<string name="sk_remove_follower_confirm">Tynnu %s fel dilynwr drwy eu rhwystro a\'i ddadrwystro ar unwaith\?</string>
|
||||
<string name="sk_edit_timelines">Golygu ffrydiau…</string>
|
||||
<string name="sk_edit_timelines">Golygu ffrydiau</string>
|
||||
<string name="sk_alt_button">ALT</string>
|
||||
<string name="sk_alt_text_missing_title">Dim testun alt</string>
|
||||
<string name="sk_alt_text_missing">O leiaf un atodiad heb ei ddisgrifio.</string>
|
||||
<string name="sk_publish_anyway">Cyhoeddi beth bynnag</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Analluogi nodyn atgoffa testun alt</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Analluogi nodyn atgoffa i ychwanegu testun alt</string>
|
||||
<string name="sk_post_edited">Wedi\'i olygu</string>
|
||||
<string name="sk_notification_type_update">Negeseuon wedi\'u golygu</string>
|
||||
<string name="sk_notify_posts_info_banner">Os ydych chi\'n galluogi hysbysiadau post ar gyfer rhai pobl, bydd eu postiadau newydd yn ymddangos yma.</string>
|
||||
@@ -226,4 +226,28 @@
|
||||
<string name="sk_icon_pin">Pin</string>
|
||||
<string name="sk_notify_update">Golygu neges wedi\'i hybu</string>
|
||||
<string name="sk_icon_bicycle">Beic</string>
|
||||
<string name="sk_searching">Chwilio…</string>
|
||||
<string name="sk_no_results">Dim atebion</string>
|
||||
<string name="sk_save_draft">Cadw drafft\?</string>
|
||||
<string name="sk_save_draft_message">Dych chi eisiau cadw eich newidiadau i\'r drafft hwn neu gyhoeddi fe nawr\?</string>
|
||||
<string name="sk_no_alt_text">Dim testun alt ar gael</string>
|
||||
<string name="sk_settings_show_alt_indicator">Dangosydd ar gyfer testunau alt</string>
|
||||
<string name="sk_settings_show_no_alt_indicator">Dangosydd ar gyfer testunau alt ar goll</string>
|
||||
<string name="sk_updater_enable_pre_releases">Galluogi rhag-rhyddhad</string>
|
||||
<string name="sk_inline_local_only">Lleol yn unig</string>
|
||||
<string name="sk_inline_direct">crybwylliadau yn unig</string>
|
||||
<string name="sk_separator">·</string>
|
||||
<string name="sk_instance_features">Nodweddion y gweinydd</string>
|
||||
<string name="sk_settings_support_local_only">Gweinydd yn cefnogi postio yn lleol yn unig</string>
|
||||
<string name="sk_settings_local_only_explanation">Rhaid i\'ch gweinydd gefnogi postio yn lleol yn unig er mwyn i hyn weithio. Mae\'r rhan fwyaf o fersiynau wedi\'u haddasu o Mastodon yn gwneud hynny, ond nid yw Mastodon yn gwneud hynny.</string>
|
||||
<string name="sk_settings_glitch_instance">Modd lleol yn unig Glitch</string>
|
||||
<string name="sk_settings_glitch_mode_explanation">Galluogi hyn os yw eich gweinydd yn rhedeg ar Glitch. Nid oes ei angen ar gyfer Hometown neu Akkoma.</string>
|
||||
<string name="sk_signed_up">Wedi ymuno</string>
|
||||
<string name="sk_reported">Wedi\'i adrodd</string>
|
||||
<string name="sk_sign_ups">Defnyddwyr yn ymuno</string>
|
||||
<string name="sk_new_reports">Adroddiadau newydd</string>
|
||||
<string name="sk_local_only">Gweinydd lleol yn unig</string>
|
||||
<string name="sk_settings_see_new_posts_button">Botwm \"Gweld negeseuon newydd\"</string>
|
||||
<string name="sk_settings_server_version">Fersiwn y gweinydd: %s</string>
|
||||
<string name="sk_notify_poll_results">Canlyniadau\'r pôl</string>
|
||||
</resources>
|
||||
427
mastodon/src/main/res/values-da-rDK/strings.xml
Normal file
427
mastodon/src/main/res/values-da-rDK/strings.xml
Normal file
@@ -0,0 +1,427 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Opret konto</string>
|
||||
<string name="already_have_account">Jeg har allerede en konto</string>
|
||||
<string name="log_in">Log ind</string>
|
||||
<string name="next">Næste</string>
|
||||
<string name="loading_instance">Henter serverinfo…</string>
|
||||
<string name="error">Fejl</string>
|
||||
<string name="not_a_mastodon_instance">%s ser ikke ud til at være en Mastodon-server.</string>
|
||||
<string name="ok">Ok</string>
|
||||
<string name="preparing_auth">Forbereder godkendelse…</string>
|
||||
<string name="finishing_auth">Afslutter godkendelse…</string>
|
||||
<string name="user_boosted">%s boostede</string>
|
||||
<string name="in_reply_to">Som svar til %s</string>
|
||||
<string name="notifications">Meddelelser</string>
|
||||
<string name="user_followed_you">begyndte at følge dig</string>
|
||||
<string name="user_sent_follow_request">sendte dig en følgeanmodning</string>
|
||||
<string name="user_favorited">favoritmarkerede dit indlæg</string>
|
||||
<string name="notification_boosted">boostede dit indlæg</string>
|
||||
<string name="poll_ended">afstemning afsluttet</string>
|
||||
<string name="time_seconds">%ds</string>
|
||||
<string name="time_minutes">%d m</string>
|
||||
<string name="time_hours">%d t</string>
|
||||
<string name="time_days">%d d</string>
|
||||
<string name="share_toot_title">Del</string>
|
||||
<string name="settings">Indstillinger</string>
|
||||
<string name="publish">Offentliggør</string>
|
||||
<string name="discard_draft">Kassér kladde?</string>
|
||||
<string name="discard">Kassér</string>
|
||||
<string name="cancel">Fortryd</string>
|
||||
<plurals name="followers">
|
||||
<item quantity="one">følger</item>
|
||||
<item quantity="other">følgere</item>
|
||||
</plurals>
|
||||
<plurals name="following">
|
||||
<item quantity="one">følger</item>
|
||||
<item quantity="other">følger</item>
|
||||
</plurals>
|
||||
<plurals name="posts">
|
||||
<item quantity="one">indlæg</item>
|
||||
<item quantity="other">indlæg</item>
|
||||
</plurals>
|
||||
<string name="posts">Indlæg</string>
|
||||
<string name="posts_and_replies">Indlæg og svar</string>
|
||||
<string name="media">Medier</string>
|
||||
<string name="profile_about">Om</string>
|
||||
<string name="button_follow">Følg</string>
|
||||
<string name="button_following">Følger</string>
|
||||
<string name="edit_profile">Redigér profil</string>
|
||||
<string name="mention_user">Nævn %s</string>
|
||||
<string name="share_user">Del %s</string>
|
||||
<string name="mute_user">Skjul %s (mute)</string>
|
||||
<string name="unmute_user">Vis %s igen (unmute)</string>
|
||||
<string name="block_user">Bloker %s</string>
|
||||
<string name="unblock_user">Fjern blokering af %s</string>
|
||||
<string name="report_user">Indberet %s</string>
|
||||
<string name="block_domain">Bloker %s</string>
|
||||
<string name="unblock_domain">Fjern blokering af %s</string>
|
||||
<plurals name="x_posts">
|
||||
<item quantity="one">%,d indlæg</item>
|
||||
<item quantity="other">%,d indlæg</item>
|
||||
</plurals>
|
||||
<string name="profile_joined">Tilmeldt</string>
|
||||
<string name="done">Udført</string>
|
||||
<string name="loading">Indlæser…</string>
|
||||
<string name="field_label">Mærkat</string>
|
||||
<string name="field_content">Indhold</string>
|
||||
<string name="saving">Gemmer…</string>
|
||||
<string name="post_from_user">Indlæg fra %s</string>
|
||||
<string name="poll_option_hint">Valgmulighed %d</string>
|
||||
<plurals name="x_minutes">
|
||||
<item quantity="one">%d minut</item>
|
||||
<item quantity="other">%d minutter</item>
|
||||
</plurals>
|
||||
<plurals name="x_hours">
|
||||
<item quantity="one">%d time</item>
|
||||
<item quantity="other">%d timer</item>
|
||||
</plurals>
|
||||
<plurals name="x_days">
|
||||
<item quantity="one">%d dag</item>
|
||||
<item quantity="other">%d dage</item>
|
||||
</plurals>
|
||||
<string name="compose_poll_duration">Varighed: %s</string>
|
||||
<plurals name="x_seconds_left">
|
||||
<item quantity="one">%d sekund tilbage</item>
|
||||
<item quantity="other">%d sekunder tilbage</item>
|
||||
</plurals>
|
||||
<plurals name="x_minutes_left">
|
||||
<item quantity="one">%d minut tilbage</item>
|
||||
<item quantity="other">%d minutter tilbage</item>
|
||||
</plurals>
|
||||
<plurals name="x_hours_left">
|
||||
<item quantity="one">%d time tilbage</item>
|
||||
<item quantity="other">%d timer tilbage</item>
|
||||
</plurals>
|
||||
<plurals name="x_days_left">
|
||||
<item quantity="one">%d dag tilbage</item>
|
||||
<item quantity="other">%d dage tilbage</item>
|
||||
</plurals>
|
||||
<plurals name="x_voters">
|
||||
<item quantity="one">%,d stemme</item>
|
||||
<item quantity="other">%,d stemmer</item>
|
||||
</plurals>
|
||||
<string name="poll_closed">Lukket</string>
|
||||
<string name="confirm_mute_title">Skjul konto</string>
|
||||
<string name="confirm_mute">Bekræft at du vil skjule %s</string>
|
||||
<string name="do_mute">Skjul (mute)</string>
|
||||
<string name="confirm_unmute_title">Vis bruger igen (unmute)</string>
|
||||
<string name="confirm_unmute">Bekræft at du vil se %s igen</string>
|
||||
<string name="do_unmute">Vis igen (unmute)</string>
|
||||
<string name="confirm_block_title">Bloker bruger</string>
|
||||
<string name="confirm_block_domain_title">Bloker domæne</string>
|
||||
<string name="confirm_block">Bekræft at du vil blokere %s</string>
|
||||
<string name="do_block">Bloker</string>
|
||||
<string name="confirm_unblock_title">Fjern blokering af bruger</string>
|
||||
<string name="confirm_unblock_domain_title">Fjern blokering af domæne</string>
|
||||
<string name="confirm_unblock">Bekræft at du vil fjerne blokering af %s</string>
|
||||
<string name="do_unblock">Fjern blokering</string>
|
||||
<string name="button_muted">Skjult (muted)</string>
|
||||
<string name="button_blocked">Blokeret</string>
|
||||
<string name="action_vote">Stem</string>
|
||||
<string name="tap_to_reveal">Tryk for at vise</string>
|
||||
<string name="delete">Slet</string>
|
||||
<string name="confirm_delete_title">Slet indlæg</string>
|
||||
<string name="confirm_delete">Er du sikker på, at du vil slette dette indlæg?</string>
|
||||
<string name="deleting">Sletter…</string>
|
||||
<string name="notification_channel_audio_player">Afspilning af lyd</string>
|
||||
<string name="play">Afspil</string>
|
||||
<string name="pause">Sæt på pause</string>
|
||||
<string name="log_out">Log ud</string>
|
||||
<string name="add_account">Tilføj konto</string>
|
||||
<string name="search_hint">Søg</string>
|
||||
<string name="hashtags">Hashtags</string>
|
||||
<string name="news">Nyheder</string>
|
||||
<string name="for_you">Til dig</string>
|
||||
<string name="all_notifications">Alle</string>
|
||||
<string name="mentions">Omtaler</string>
|
||||
<plurals name="x_people_talking">
|
||||
<item quantity="one">%d person deltager</item>
|
||||
<item quantity="other">%d personer deltager</item>
|
||||
</plurals>
|
||||
<plurals name="discussed_x_times">
|
||||
<item quantity="one">Diskuteret %d gang</item>
|
||||
<item quantity="other">Diskuteret %d gange</item>
|
||||
</plurals>
|
||||
<string name="report_title">Indberet %s</string>
|
||||
<string name="report_choose_reason">Hvad er der galt med dette indlæg?</string>
|
||||
<string name="report_choose_reason_account">Hvad er der galt med %s?</string>
|
||||
<string name="report_choose_reason_subtitle">Vælg en passende grund</string>
|
||||
<string name="report_reason_personal">Jeg bryder mig ikke om det</string>
|
||||
<string name="report_reason_personal_subtitle">Det er ikke noget, man ønsker at se</string>
|
||||
<string name="report_reason_spam">Det er spam</string>
|
||||
<string name="report_reason_spam_subtitle">Ondsindede links, falske interaktioner, eller gentagne svar</string>
|
||||
<string name="report_reason_violation">Det overtræder serverreglerne</string>
|
||||
<string name="report_reason_violation_subtitle">Du kender til specifikke regler som det er i strid med</string>
|
||||
<string name="report_reason_other">Det er noget andet</string>
|
||||
<string name="report_reason_other_subtitle">Problemet passer ikke ind i andre kategorier</string>
|
||||
<string name="report_choose_rule">Hvilke regler overtrædes?</string>
|
||||
<string name="report_choose_rule_subtitle">Vælg alle relevante</string>
|
||||
<string name="report_choose_posts">Er der indlæg, som kan bekræfte denne anmeldelse?</string>
|
||||
<string name="report_choose_posts_subtitle">Vælg alle relevante</string>
|
||||
<string name="report_comment_title">Er der andet, vi bør vide?</string>
|
||||
<string name="report_comment_hint">Yderligere kommentarer</string>
|
||||
<string name="sending_report">Sender rapport…</string>
|
||||
<string name="report_sent_title">Tak for anmeldelsen, der vil blive set nærmere på dette.</string>
|
||||
<string name="report_sent_subtitle">Mens dette gennemgås, kan du selv bortfiltrere indlæg fra %s.</string>
|
||||
<string name="unfollow_user">Følg ikke længere %s</string>
|
||||
<string name="unfollow">Følg ikke længere</string>
|
||||
<string name="mute_user_explain">Du vil ikke se den pågældendes indlæg eller boosts i din tidslinje. Vedkommende vil ikke få besked om dæmpningen.</string>
|
||||
<string name="block_user_explain">Vedkommende vil ikke længere kunne følge dig eller se dine indlæg, men vedkommende kan se blokeringen.</string>
|
||||
<string name="report_personal_title">Ønsker du ikke at se dette?</string>
|
||||
<string name="report_personal_subtitle">Når du ser noget, du ikke kan lide på Mastodon, kan du fjerne personen fra din tidslinje.</string>
|
||||
<string name="back">Tilbage</string>
|
||||
<string name="instance_catalog_title">Mastodon er skabt af brugere på forskellige servere.</string>
|
||||
<string name="instance_catalog_subtitle">Vælg en server baseret på dine interesser, region eller et generelt formål. Du kan stadig forbinde med alle, uanset serveren.</string>
|
||||
<string name="search_communities">Server-navn eller URL</string>
|
||||
<string name="instance_rules_title">Serverregler</string>
|
||||
<string name="instance_rules_subtitle">Ved at fortsætte accepterer du at følge følgende regler, der er vedtaget og håndhævet af %ss moderatorer.</string>
|
||||
<string name="signup_title">Opret konto</string>
|
||||
<string name="edit_photo">rediger</string>
|
||||
<string name="display_name">Navn</string>
|
||||
<string name="username">Brugernavn</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="password">Adgangskode</string>
|
||||
<string name="confirm_password">Bekræft adgangskode</string>
|
||||
<string name="password_note">Inkluder store bogstaver, specialtegn og tal for at gøre din adgangskode stærkere.</string>
|
||||
<string name="category_academia">Forskning og højere uddannelser</string>
|
||||
<string name="category_activism">Aktivisme</string>
|
||||
<string name="category_all">Alt</string>
|
||||
<string name="category_art">Kunst</string>
|
||||
<string name="category_food">Mad</string>
|
||||
<string name="category_furry">Pelsdyr</string>
|
||||
<string name="category_games">Spil</string>
|
||||
<string name="category_general">Generelt</string>
|
||||
<string name="category_journalism">Journalistik</string>
|
||||
<string name="category_lgbt">LGBT</string>
|
||||
<string name="category_music">Musik</string>
|
||||
<string name="category_regional">Regionalt</string>
|
||||
<string name="category_tech">Teknologi</string>
|
||||
<string name="confirm_email_title">Tjek din indbakke</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="confirm_email_subtitle">Tryk på linket vi sendte dig for at bekræfte %s. Vi venter lige her.</string>
|
||||
<string name="confirm_email_didnt_get">Fandt du ikke et link?</string>
|
||||
<string name="resend">Send igen</string>
|
||||
<string name="open_email_app">Åben email-app</string>
|
||||
<string name="resent_email">Bekræftelses-email sendt</string>
|
||||
<string name="compose_hint">Skriv hvad du har på hjerte</string>
|
||||
<string name="content_warning">Indholdsadvarsel</string>
|
||||
<string name="add_image_description">Tilføj billede beskrivelse…</string>
|
||||
<string name="retry_upload">Forsøg upload igen</string>
|
||||
<string name="edit_image">Rediger billede</string>
|
||||
<string name="save">Gem</string>
|
||||
<string name="add_alt_text">Tilføj alternativ tekst</string>
|
||||
<string name="alt_text_subtitle">Alternativ tekst beskriver dine fotos af hensyn til svagtseende og blinde. Nøjs med at skrive lige nøjagtig så detaljeret at sammenhængen er tydelig.</string>
|
||||
<string name="alt_text_hint">f.eks. en hund, der ser sig mistænkeligt omkring med sammenknebne øjne på kameraet.</string>
|
||||
<string name="visibility_public">Offentlig</string>
|
||||
<string name="visibility_followers_only">Kun følgere</string>
|
||||
<string name="visibility_private">Kun personer jeg nævner</string>
|
||||
<string name="search_all">Alle</string>
|
||||
<string name="search_people">Personer</string>
|
||||
<string name="recent_searches">Seneste søgninger</string>
|
||||
<string name="step_x_of_n">Trin %1$d af %2$d</string>
|
||||
<string name="skip">Spring over</string>
|
||||
<string name="notification_type_follow">Nye følgere</string>
|
||||
<string name="notification_type_favorite">Favoritmarkeringer</string>
|
||||
<string name="notification_type_reblog">Boosts</string>
|
||||
<string name="notification_type_mention">Omtaler</string>
|
||||
<string name="notification_type_poll">Afstemninger</string>
|
||||
<string name="choose_account">Vælg konto</string>
|
||||
<string name="err_not_logged_in">Log venligst ind på Mastodon først</string>
|
||||
<plurals name="cant_add_more_than_x_attachments">
|
||||
<item quantity="one">Du kan ikke tilføje mere end %d medievedhæftning</item>
|
||||
<item quantity="other">Du kan ikke tilføje mere end %d medievedhæftninger</item>
|
||||
</plurals>
|
||||
<string name="media_attachment_unsupported_type">Filen %s er af en type der ikke understøttes</string>
|
||||
<string name="media_attachment_too_big">Størrelsen på filen %1$s overskrider grænsen på %2$s MB</string>
|
||||
<string name="settings_theme">Visuel fremtræden</string>
|
||||
<string name="theme_auto">Automatisk</string>
|
||||
<string name="theme_light">Lys</string>
|
||||
<string name="theme_dark">Mørk</string>
|
||||
<string name="theme_true_black">Sand sort tilstand</string>
|
||||
<string name="settings_behavior">Opførsel</string>
|
||||
<string name="settings_gif">Spil animerede avatarer og emoji</string>
|
||||
<string name="settings_custom_tabs">Benyt in-app browser</string>
|
||||
<string name="settings_notifications">Meddelelser</string>
|
||||
<string name="notify_me_when">Giv mig besked når</string>
|
||||
<string name="notify_anyone">hvem som helst</string>
|
||||
<string name="notify_follower">en følger</string>
|
||||
<string name="notify_followed">nogen jeg følger</string>
|
||||
<string name="notify_none">ingen</string>
|
||||
<string name="notify_favorites">Favoritmarkerede mit indlæg</string>
|
||||
<string name="notify_follow">Følger mig</string>
|
||||
<string name="notify_reblog">Booster mit indlæg</string>
|
||||
<string name="notify_mention">Nævner mig</string>
|
||||
<string name="settings_boring">Den kedelige zone</string>
|
||||
<string name="settings_account">Kontoindstillinger</string>
|
||||
<string name="settings_contribute">Bidrag til Mastodon</string>
|
||||
<string name="settings_tos">Vilkår og Betingelser</string>
|
||||
<string name="settings_privacy_policy">Privatlivspolitik</string>
|
||||
<string name="settings_spicy">Den krydrede zone</string>
|
||||
<string name="settings_clear_cache">Ryd mediecache</string>
|
||||
<string name="settings_app_version">Mastodon til Android v%1$s (%2$d)</string>
|
||||
<string name="media_cache_cleared">Mediecache ryddet</string>
|
||||
<string name="confirm_log_out">Er du sikker på, at du vil logge ud?</string>
|
||||
<string name="sensitive_content">Følsomt indhold</string>
|
||||
<string name="sensitive_content_explain">Forfatteren markerede dette medie som følsomt. Tryk for at afsløre.</string>
|
||||
<string name="media_hidden">Tryk for at vise</string>
|
||||
<string name="avatar_description">Gå til %ss profil</string>
|
||||
<string name="more_options">Flere muligheder</string>
|
||||
<string name="reveal_content">Afslør indhold</string>
|
||||
<string name="hide_content">Skjul indhold</string>
|
||||
<string name="new_post">Nyt indlæg</string>
|
||||
<string name="button_reply">Svar</string>
|
||||
<string name="button_reblog">Boost</string>
|
||||
<string name="button_favorite">Favorit</string>
|
||||
<string name="button_share">Del</string>
|
||||
<string name="media_no_description">Medier uden beskrivelse</string>
|
||||
<string name="add_media">Tilføj medier</string>
|
||||
<string name="add_poll">Tilføj en afstemning</string>
|
||||
<string name="emoji">Emoji</string>
|
||||
<string name="post_visibility">Synlighed af indlæg</string>
|
||||
<string name="home_timeline">Hjemmetidslinje</string>
|
||||
<string name="my_profile">Min profil</string>
|
||||
<string name="media_viewer">Mediefremviser</string>
|
||||
<string name="follow_user">Følg %s</string>
|
||||
<string name="unfollowed_user">Følg ikke længere %s</string>
|
||||
<string name="followed_user">Du følger nu %s</string>
|
||||
<string name="open_in_browser">Åbn i browser</string>
|
||||
<string name="hide_boosts_from_user">Skjul boosts fra %s</string>
|
||||
<string name="show_boosts_from_user">Vis boosts fra %s</string>
|
||||
<string name="signup_reason">Hvorfor ønsker du at tilmelde dig?</string>
|
||||
<string name="signup_reason_note">Dette hjælper os med at vurdere din ansøgning.</string>
|
||||
<string name="clear">Ryd</string>
|
||||
<string name="profile_header">Overskriftsbillede</string>
|
||||
<string name="profile_picture">Profilbillede</string>
|
||||
<string name="reorder">Omarranger</string>
|
||||
<string name="download">Download</string>
|
||||
<string name="permission_required">Tilladelse kræves</string>
|
||||
<string name="storage_permission_to_download">Appen skal have adgang til din lagerplads for at gemme denne fil.</string>
|
||||
<string name="open_settings">Åbn Indstillinger</string>
|
||||
<string name="error_saving_file">Fejl under lagring af fil</string>
|
||||
<string name="file_saved">Fil gemt</string>
|
||||
<string name="downloading">Downloader…</string>
|
||||
<string name="no_app_to_handle_action">Der er ingen app til at udføre denne handling</string>
|
||||
<string name="local_timeline">Fællesskab</string>
|
||||
<string name="trending_posts_info_banner">Dette er indlæg der tiltrækker sig opmærksomhed i dit hjørne af Mastodon.</string>
|
||||
<string name="trending_hashtags_info_banner">Dette er hashtags der tiltrækker sig opmærksomhed i dit hjørne af Mastodon.</string>
|
||||
<string name="trending_links_info_banner">Dette er de nyheder, der deles mest i dit hjørne af Mastodon.</string>
|
||||
<string name="local_timeline_info_banner">Disse er de seneste indlæg af medlemmer på din Mastodon-server.</string>
|
||||
<string name="dismiss">Afvis</string>
|
||||
<string name="see_new_posts">Se nye indlæg</string>
|
||||
<string name="load_missing_posts">Indlæs manglende indlæg</string>
|
||||
<string name="follow_back">Følg Tilbage</string>
|
||||
<string name="button_follow_pending">Afventer</string>
|
||||
<string name="follows_you">Følger dig</string>
|
||||
<string name="manually_approves_followers">Godkender følgere manuelt</string>
|
||||
<string name="current_account">Nuværende konto</string>
|
||||
<string name="log_out_account">Log %s ud</string>
|
||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||
<plurals name="x_followers">
|
||||
<item quantity="one">%,d følger</item>
|
||||
<item quantity="other">%,d følgere</item>
|
||||
</plurals>
|
||||
<plurals name="x_following">
|
||||
<item quantity="one">%,d følger</item>
|
||||
<item quantity="other">%,d følgere</item>
|
||||
</plurals>
|
||||
<plurals name="x_favorites">
|
||||
<item quantity="one">%,d favoritmarkering</item>
|
||||
<item quantity="other">%,d favoritmarkeringer</item>
|
||||
</plurals>
|
||||
<plurals name="x_reblogs">
|
||||
<item quantity="one">%,d boost</item>
|
||||
<item quantity="other">%,d boosts</item>
|
||||
</plurals>
|
||||
<string name="timestamp_via_app">%1$s via %2$s</string>
|
||||
<string name="time_now">nu</string>
|
||||
<string name="post_info_reblogs">Boosts</string>
|
||||
<string name="post_info_favorites">Favoritmarkeringer</string>
|
||||
<string name="edit_history">Rediger historik</string>
|
||||
<string name="last_edit_at_x">Senest ændret: %s</string>
|
||||
<string name="time_just_now">lige nu</string>
|
||||
<plurals name="x_seconds_ago">
|
||||
<item quantity="one">%d sekund siden</item>
|
||||
<item quantity="other">%d sekunder siden</item>
|
||||
</plurals>
|
||||
<plurals name="x_minutes_ago">
|
||||
<item quantity="one">%d minut siden</item>
|
||||
<item quantity="other">%d minutter siden</item>
|
||||
</plurals>
|
||||
<string name="edited_timestamp">redigerede %s</string>
|
||||
<string name="edit_original_post">Oprindeligt indlæg</string>
|
||||
<string name="edit_text_edited">Tekst redigeret</string>
|
||||
<string name="edit_spoiler_added">Indholdsadvarsel tilføjet</string>
|
||||
<string name="edit_spoiler_edited">Indholdsadvarsel tilføjet</string>
|
||||
<string name="edit_spoiler_removed">Indholdsadvarsel fjernet</string>
|
||||
<string name="edit_poll_added">Afstemning tilføjet</string>
|
||||
<string name="edit_poll_edited">Afstemning redigeret</string>
|
||||
<string name="edit_poll_removed">Afstemning fjernet</string>
|
||||
<string name="edit_media_added">Medier tilføjet</string>
|
||||
<string name="edit_media_removed">Medier fjernet</string>
|
||||
<string name="edit_media_reordered">Medie omarrangeret</string>
|
||||
<string name="edit_marked_sensitive">Marker som følsom</string>
|
||||
<string name="edit_marked_not_sensitive">Markeret ikke følsom</string>
|
||||
<string name="edit_multiple_changed">Indlæg redigeret</string>
|
||||
<string name="edit">Rediger</string>
|
||||
<string name="discard_changes">Fortryd ændringer?</string>
|
||||
<string name="upload_failed">Upload mislykkedes</string>
|
||||
<string name="file_size_bytes">%d bytes</string>
|
||||
<string name="file_size_kb">%.2f KB</string>
|
||||
<string name="file_size_mb">%.2f MB</string>
|
||||
<string name="file_size_gb">%.2f GB</string>
|
||||
<string name="file_upload_progress">%1$s af %2$s</string>
|
||||
<string name="file_upload_time_remaining">%s tilbage</string>
|
||||
<string name="upload_error_connection_lost">Din enhed har mistet forbindelsen til internettet</string>
|
||||
<string name="upload_processing">Behandler…</string>
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<string name="update_available">Mastodon til Android %s er klar til download.</string>
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<string name="update_ready">Mastodon til Android %s er downloadet og klar til at installere.</string>
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">Download (%s)</string>
|
||||
<string name="install_update">Installer</string>
|
||||
<string name="privacy_policy_title">Dit privatliv</string>
|
||||
<string name="i_agree">Jeg accepterer</string>
|
||||
<string name="empty_list">Denne liste er tom</string>
|
||||
<string name="instance_signup_closed">Denne server er ikke åben for nye tilmeldinger.</string>
|
||||
<string name="text_copied">Kopieret til udklipsholderen</string>
|
||||
<string name="add_bookmark">Bogmærk</string>
|
||||
<string name="remove_bookmark">Fjern bogmærke</string>
|
||||
<string name="bookmarks">Bogmærker</string>
|
||||
<string name="your_favorites">Dine Favoritter</string>
|
||||
<string name="login_title">Velkommen tilbage</string>
|
||||
<string name="login_subtitle">Log ind med serveren hvor du oprettede din bruger.</string>
|
||||
<string name="server_url">Server-URL</string>
|
||||
<string name="welcome_page1_title">Hvad er Mastodon?</string>
|
||||
<string name="welcome_page1_text">Det svarer til at du har en e-mailadresse, der slutter med @eksempel.dk.\n\nAlligevel kan du stadig både sende og modtage e-mails fra alle, selv om deres e-mail ender på @gmail.com eller @icloud.com eller @eksempel.dk.</string>
|
||||
<string name="welcome_page2_title">Mastodon er ligesådan.</string>
|
||||
<string name="welcome_page2_text">Dit brugernavn kan være @goth654@eksempel.social, men du kan stadig følge, booste, og chatte med @denanden@eksempel.online.</string>
|
||||
<string name="welcome_page3_title">Hvordan vælger jeg en server?</string>
|
||||
<string name="welcome_page3_text">Forskellige mennesker vælger forskellige servere af mange forskellige grunde. art.example er et godt sted for kunstnere, mens glasgow.example kan være et godt pluk for skotter.\n\nDu kan ikke gå galt i byen med en af vores anbefalingsservere, så uanset hvilken du vælger (eller hvis du indtaster din egen i serversøgelinjen), vil du aldrig gå glip af noget nogen steder.</string>
|
||||
<string name="signup_random_server_explain">Vi vælger en server baseret på dit sprog, hvis du fortsætter uden at foretage et valg.</string>
|
||||
<string name="server_filter_any_language">Hvilket som helst sprog</string>
|
||||
<string name="server_filter_instant_signup">Øjeblikkelig tilmelding</string>
|
||||
<string name="server_filter_manual_review">Manuel evaluering</string>
|
||||
<string name="server_filter_any_signup_speed">Hvilken som helst tilmeldingshastghed</string>
|
||||
<string name="server_filter_region_europe">Europa</string>
|
||||
<string name="server_filter_region_north_america">Nordamerika</string>
|
||||
<string name="server_filter_region_south_america">Sydamerika</string>
|
||||
<string name="server_filter_region_africa">Afrika</string>
|
||||
<string name="server_filter_region_asia">Asien</string>
|
||||
<string name="server_filter_region_oceania">Oceania</string>
|
||||
<string name="not_accepting_new_members">Ikke åben for nye medlemmer</string>
|
||||
<string name="category_special_interests">Særlige Interesser</string>
|
||||
<string name="signup_passwords_dont_match">Adgangskoderne er ikke ens</string>
|
||||
<string name="pick_server_for_me">Vælg for mig</string>
|
||||
<string name="profile_add_row">Tilføj række</string>
|
||||
<string name="profile_setup">Profilopsætning</string>
|
||||
<string name="profile_setup_subtitle">Du kan altid afslutte dette senere i fanen Profil.</string>
|
||||
<string name="profile_setup_explanation">Du kan tilføje op til fire profilfelter til lige, hvad du ønsker. Placering, links, pronomener — du bestemmer.</string>
|
||||
<string name="popular_on_mastodon">Populært på Mastodon</string>
|
||||
<string name="follow_all">Følg alle</string>
|
||||
<string name="server_rules_disagree">Ikke enig</string>
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Loslegen</string>
|
||||
<string name="get_started">Konto erstellen</string>
|
||||
<string name="already_have_account">Ich habe bereits ein Konto</string>
|
||||
<string name="log_in">Anmelden</string>
|
||||
<string name="next">Weiter</string>
|
||||
<string name="loading_instance">Server-Informationen werden abgerufen …</string>
|
||||
@@ -172,22 +173,23 @@
|
||||
<string name="back">Zurück</string>
|
||||
<string name="instance_catalog_title">Mastodon wird von Benutzer*innen auf verschiedenen Servern gestaltet.</string>
|
||||
<string name="instance_catalog_subtitle">Wähle einen Server basierend auf deinen Interessen oder deiner Region – oder einfach einen allgemeinen. Du kannst trotzdem mit jedem interagieren, egal auf welchem Server.</string>
|
||||
<string name="search_communities">Server suchen oder Link eingeben</string>
|
||||
<string name="instance_rules_title">Serverregeln</string>
|
||||
<string name="instance_rules_subtitle">Nimm dir eine Minute Zeit und lies die Serverregeln von %s durch.</string>
|
||||
<string name="signup_title">Okay, lass uns mit %s anfangen</string>
|
||||
<string name="search_communities">Servername oder -adresse</string>
|
||||
<string name="instance_rules_title">Server-Regeln</string>
|
||||
<string name="instance_rules_subtitle">Mit dem Fortfahren erklärst du dich damit einverstanden, die folgenden Regeln zu befolgen, die von den %s-Moderatoren aufgestellt und umgesetzt werden.</string>
|
||||
<string name="signup_title">Konto erstellen</string>
|
||||
<string name="edit_photo">bearbeiten</string>
|
||||
<string name="display_name">Anzeigename</string>
|
||||
<string name="display_name">Name</string>
|
||||
<string name="username">Profilname</string>
|
||||
<string name="email">E-Mail</string>
|
||||
<string name="password">Passwort</string>
|
||||
<string name="confirm_password">Passwort bestätigen</string>
|
||||
<string name="password_note">Verwende Großbuchstaben, Sonderzeichen und Zahlen, um deine Passwortstärke zu erhöhen.</string>
|
||||
<string name="category_academia">Bildung</string>
|
||||
<string name="category_activism">Bürgerbeteiligung</string>
|
||||
<string name="category_all">Alle</string>
|
||||
<string name="category_art">Kunst</string>
|
||||
<string name="category_food">Essen</string>
|
||||
<string name="category_furry">Furries</string>
|
||||
<string name="category_furry">Furry</string>
|
||||
<string name="category_games">Spiele</string>
|
||||
<string name="category_general">Allgemein</string>
|
||||
<string name="category_journalism">Journalismus</string>
|
||||
@@ -195,12 +197,14 @@
|
||||
<string name="category_music">Musik</string>
|
||||
<string name="category_regional">Regional</string>
|
||||
<string name="category_tech">Technik</string>
|
||||
<string name="confirm_email_title">Eine letzte Sache noch</string>
|
||||
<string name="confirm_email_subtitle">Tippe auf den Link, den wir dir per E-Mail geschickt haben, um dein Konto zu verifizieren.</string>
|
||||
<string name="confirm_email_title">Überprüfe deinen Posteingang</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="confirm_email_subtitle">Klicke auf den Link, den wir dir geschickt haben, um %s zu bestätigen. Wir warten hier auf dich.</string>
|
||||
<string name="confirm_email_didnt_get">Kein Link erhalten?</string>
|
||||
<string name="resend">Erneut abschicken</string>
|
||||
<string name="open_email_app">E-Mail-App öffnen</string>
|
||||
<string name="resent_email">Bestätigung per E-Mail zugeschickt</string>
|
||||
<string name="compose_hint">Was gibt\'s Neues? Was geht dir durch den Kopf? Was liegt dir am Herzen?</string>
|
||||
<string name="compose_hint">Was gibt\'s Neues?</string>
|
||||
<string name="content_warning">Inhaltswarnung</string>
|
||||
<string name="add_image_description">Bildbeschreibung hinzufügen …</string>
|
||||
<string name="retry_upload">Erneut hochladen</string>
|
||||
@@ -284,7 +288,7 @@
|
||||
<string name="open_in_browser">Im Browser öffnen</string>
|
||||
<string name="hide_boosts_from_user">geteilte Beiträge von %s ausblenden</string>
|
||||
<string name="show_boosts_from_user">geteilte Beiträge von %s anzeigen</string>
|
||||
<string name="signup_reason">Weshalb möchtest du beitreten?</string>
|
||||
<string name="signup_reason">Warum möchtest du beitreten?</string>
|
||||
<string name="signup_reason_note">Das erleichtert uns die Prüfung deiner Anmeldung.</string>
|
||||
<string name="clear">Leeren</string>
|
||||
<string name="profile_header">Titelbild</string>
|
||||
@@ -377,17 +381,54 @@
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">(%s) herunterladen</string>
|
||||
<string name="install_update">Installieren</string>
|
||||
<string name="privacy_policy_title">Mastodon und der Schutz deiner Daten</string>
|
||||
<string name="privacy_policy_subtitle">Obwohl die Mastodon-App keinerlei Daten sammelt, könnte der Server, über den du dich registriert hast, eine abweichende Datenschutzerklärung haben. Nimm dir einen Moment Zeit, um die Datenschutzbestimmungen sowohl der App als auch deiner Mastodon-Instanz durchzulesen und sie zu akzeptieren.</string>
|
||||
<string name="privacy_policy_title">Deine Privatsphäre</string>
|
||||
<string name="privacy_policy_subtitle">Auch wenn die Mastodon-App keine Daten sammelt, kann der Server, über den du dich anmeldest, eine andere Richtlinie haben.\n\nWenn du mit der Richtlinie für %s nicht einverstanden bist, kannst du zurückkehren und einen anderen Server wählen.</string>
|
||||
<string name="i_agree">Ich stimme zu</string>
|
||||
<string name="empty_list">Diese Liste ist leer</string>
|
||||
<string name="instance_signup_closed">Dieser Server akzeptiert keine neuen Registrierungen.</string>
|
||||
<string name="text_copied">In die Zwischenablage kopiert</string>
|
||||
<string name="add_bookmark">Lesezeichen setzen</string>
|
||||
<string name="add_bookmark">Lesezeichen hinzufügen</string>
|
||||
<string name="remove_bookmark">Lesezeichen entfernen</string>
|
||||
<string name="bookmarks">Lesezeichen</string>
|
||||
<string name="your_favorites">Deine Favoriten</string>
|
||||
<string name="login_title">Willkommen zurück</string>
|
||||
<string name="login_subtitle">Melde dich mit dem Server an, auf dem du dein Konto erstellt hast.</string>
|
||||
<string name="server_url">Serveradresse</string>
|
||||
<string name="welcome_page1_title">Was ist Mastodon?</string>
|
||||
<string name="welcome_page1_text">Angenommen, du hast eine E-Mail-Adresse, die mit @example.com endet.\n\nDu kannst immer noch E-Mails von allen empfangen, auch wenn deren E-Mail-Adresse mit @gmail.com, @icloud.com oder @example.com endet.</string>
|
||||
<string name="welcome_page2_title">Mastodon ist genau so.</string>
|
||||
<string name="welcome_page2_text">Dein Nutzer*innenname könnte @GothGirl654@example.social sein, aber du kannst trotzdem @fallout5ever@example.online folgen, deren Beiträge teilen und dich mit der Person unterhalten.</string>
|
||||
<string name="welcome_page3_title">Wie wähle ich einen Server aus?</string>
|
||||
<string name="welcome_page3_text">Unterschiedliche Menschen wählen aus verschiedenen Gründen unterschiedliche Server. art.example ist ein toller Ort für Künstler*innen, während glasgow.example eine gute Wahl für Schott*innen sein könnte.\n\nWähle nach Möglichkeit einen kleinen Server aus, mit dessen Regeln du dich wohl fühlst und der dir vertrauenswürdig erscheint (über die Server-Suchleiste kannst du dich direkt mit dem Server deines Vertrauens verbinden).</string>
|
||||
<string name="signup_random_server_explain">Wenn du ohne Auswahl fortfährst, wählen wir einen Server in deiner Sprache aus.</string>
|
||||
<string name="server_filter_any_language">Alle Sprachen</string>
|
||||
<string name="server_filter_instant_signup">Schnellregistrierung</string>
|
||||
<string name="server_filter_manual_review">Manuelle Überprüfung</string>
|
||||
<string name="server_filter_any_signup_speed">Beliebige Registrierungsdauer</string>
|
||||
<string name="server_filter_region_europe">Europa</string>
|
||||
<string name="server_filter_region_north_america">Nordamerika</string>
|
||||
<string name="server_filter_region_south_america">Südamerika</string>
|
||||
<string name="server_filter_region_africa">Afrika</string>
|
||||
<string name="server_filter_region_asia">Asien</string>
|
||||
<string name="server_filter_region_oceania">Ozeanien</string>
|
||||
<string name="not_accepting_new_members">Keine Aufnahme neuer Mitglieder</string>
|
||||
<string name="category_special_interests">Besondere Interessen</string>
|
||||
<string name="signup_passwords_dont_match">Passwörter stimmen nicht überein</string>
|
||||
<string name="pick_server_for_me">Wähle für mich aus</string>
|
||||
<string name="profile_add_row">Zeile hinzufügen</string>
|
||||
<string name="profile_setup">Profil einrichten</string>
|
||||
<string name="profile_setup_subtitle">Du kannst dies jederzeit später auf dem Profil-Reiter vervollständigen.</string>
|
||||
<string name="profile_setup_explanation">Du kannst bis zu vier Profilfelder für alles, was du möchtest, hinzufügen. Standort, Links, Pronomen - deiner Fantasie sind hier keine Grenzen gesetzt.</string>
|
||||
<string name="popular_on_mastodon">Beliebt auf Mastodon</string>
|
||||
<string name="follow_all">Allen folgen</string>
|
||||
<string name="server_rules_disagree">Ablehnen</string>
|
||||
<string name="privacy_policy_explanation">TL;DR: Wir sammeln oder verarbeiten keine persönlichen Daten.</string>
|
||||
<!-- %s is server domain -->
|
||||
<string name="server_policy_disagree">%s nicht zustimmen</string>
|
||||
<string name="profile_bio">Über mich</string>
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<string name="sending_follows">Benutzer*innen wird gefolgt …</string>
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
<string name="signup_email_domain_blocked">%1$s lässt keine Anmeldungen von %2$s zu. Versuche einen anderen oder <a>wähle einen anderen Server</a>.</string>
|
||||
<string name="signup_username_taken">Dieser Benutzername ist bereits vergeben.</string>
|
||||
</resources>
|
||||
|
||||
@@ -250,4 +250,15 @@
|
||||
<string name="sk_settings_see_new_posts_button">“Neue Beiträge anzeigen”-Button</string>
|
||||
<string name="sk_settings_server_version">Server-Version: %s</string>
|
||||
<string name="sk_notify_poll_results">Umfrage-Ergebnisse</string>
|
||||
<string name="sk_settings_prefix_reply_cw_with_re">CWs beim Antworten “re:” voranstellen</string>
|
||||
<string name="sk_filtered">Gefiltert: %s</string>
|
||||
<string name="sk_expand">Erweitern</string>
|
||||
<string name="sk_collapse">Einklappen</string>
|
||||
<string name="sk_settings_collapse_long_posts">Sehr lange Beiträge einklappen</string>
|
||||
<string name="sk_unfinished_attachments">Anhänge richtig stellen\?</string>
|
||||
<string name="sk_settings_hide_interaction">Interaktions-Buttons verstecken</string>
|
||||
<string name="sk_unfinished_attachments_message">Einige Anhänge sind nicht fertig hochgeladen.</string>
|
||||
<string name="sk_followed_as">Mit %s gefolgt</string>
|
||||
<string name="sk_settings_hide_fab">Verfassen-Button automatisch ausblenden</string>
|
||||
<string name="sk_follow_as">Mit anderem Account folgen</string>
|
||||
</resources>
|
||||
@@ -1,7 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- %s is the email address -->
|
||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is file size -->
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -1,28 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Empezar</string>
|
||||
<string name="get_started">Crear cuenta</string>
|
||||
<string name="already_have_account">Ya tengo una cuenta</string>
|
||||
<string name="log_in">Iniciar sesión</string>
|
||||
<string name="next">Siguiente</string>
|
||||
<string name="loading_instance">Recuperando información del servidor…</string>
|
||||
<string name="error">Error</string>
|
||||
<string name="not_a_mastodon_instance">%s no parece ser un servidor de Mastodon.</string>
|
||||
<string name="ok">Aceptar</string>
|
||||
<string name="preparing_auth">Preparando para autenticación…</string>
|
||||
<string name="finishing_auth">Terminando autenticación…</string>
|
||||
<string name="user_boosted">%s reblogueado</string>
|
||||
<string name="finishing_auth">Finalizando autenticación…</string>
|
||||
<string name="user_boosted">%s reblogueó</string>
|
||||
<string name="in_reply_to">En respuesta a %s</string>
|
||||
<string name="notifications">Notificaciones</string>
|
||||
<string name="user_followed_you">te siguió</string>
|
||||
<string name="user_sent_follow_request">te quiere seguir</string>
|
||||
<string name="user_favorited">ha marcado como favorita tu publicación</string>
|
||||
<string name="notification_boosted">ha reblogueado tu publicación</string>
|
||||
<string name="user_followed_you">ha empezado a seguirte</string>
|
||||
<string name="user_sent_follow_request">te envió una solicitud de seguimiento</string>
|
||||
<string name="user_favorited">marcó como favorita</string>
|
||||
<string name="notification_boosted">reblogueó</string>
|
||||
<string name="poll_ended">encuesta finalizada</string>
|
||||
<string name="time_seconds">%ds</string>
|
||||
<string name="time_minutes">%dm</string>
|
||||
<string name="time_hours">%dh</string>
|
||||
<string name="time_days">%dd</string>
|
||||
<string name="share_toot_title">Compartir</string>
|
||||
<string name="settings">Configuración</string>
|
||||
<string name="settings">Ajustes</string>
|
||||
<string name="publish">Publicar</string>
|
||||
<string name="discard_draft">¿Descartar el borrador?</string>
|
||||
<string name="discard_draft">¿Descartar borrador?</string>
|
||||
<string name="discard">Descartar</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<plurals name="followers">
|
||||
@@ -38,19 +41,19 @@
|
||||
<item quantity="other">publicaciones</item>
|
||||
</plurals>
|
||||
<string name="posts">Publicaciones</string>
|
||||
<string name="posts_and_replies">Publicaciones y Respuestas</string>
|
||||
<string name="posts_and_replies">Publicaciones y respuestas</string>
|
||||
<string name="media">Multimedia</string>
|
||||
<string name="profile_about">Acerca de</string>
|
||||
<string name="button_follow">Seguir</string>
|
||||
<string name="button_following">Siguiendo</string>
|
||||
<string name="edit_profile">Editar Perfil</string>
|
||||
<string name="edit_profile">Editar perfil</string>
|
||||
<string name="mention_user">Mencionar a %s</string>
|
||||
<string name="share_user">Compartir %s</string>
|
||||
<string name="mute_user">Silenciar a %s</string>
|
||||
<string name="unmute_user">Des-silenciar a %s</string>
|
||||
<string name="unmute_user">Dejar de silenciar a %s</string>
|
||||
<string name="block_user">Bloquear a %s</string>
|
||||
<string name="unblock_user">Desbloquear a %s</string>
|
||||
<string name="report_user">Reportar a %s</string>
|
||||
<string name="report_user">Denunciar a %s</string>
|
||||
<string name="block_domain">Bloquear %s</string>
|
||||
<string name="unblock_domain">Desbloquear %s</string>
|
||||
<plurals name="x_posts">
|
||||
@@ -100,11 +103,11 @@
|
||||
</plurals>
|
||||
<string name="poll_closed">Cerrado</string>
|
||||
<string name="confirm_mute_title">Silenciar cuenta</string>
|
||||
<string name="confirm_mute">Confirmar para silenciar %s</string>
|
||||
<string name="confirm_mute">Confirmar para silenciar a %s</string>
|
||||
<string name="do_mute">Silenciar</string>
|
||||
<string name="confirm_unmute_title">Des-silenciar cuenta</string>
|
||||
<string name="confirm_unmute">Confirmar para des-silenciar a %s</string>
|
||||
<string name="do_unmute">Des-silenciar</string>
|
||||
<string name="confirm_unmute_title">Dejar de silenciar cuenta</string>
|
||||
<string name="confirm_unmute">Confirmar para dejar de silenciar a %s</string>
|
||||
<string name="do_unmute">Dejar de silenciar</string>
|
||||
<string name="confirm_block_title">Bloquear cuenta</string>
|
||||
<string name="confirm_block_domain_title">Bloquear dominio</string>
|
||||
<string name="confirm_block">Confirmar para bloquear a %s</string>
|
||||
@@ -119,7 +122,7 @@
|
||||
<string name="tap_to_reveal">Toca para mostrar</string>
|
||||
<string name="delete">Eliminar</string>
|
||||
<string name="confirm_delete_title">Eliminar publicación</string>
|
||||
<string name="confirm_delete">¿Estás seguro de que deseas eliminar esta publicación?</string>
|
||||
<string name="confirm_delete">¿Confirma que quiere eliminar esta publicación?</string>
|
||||
<string name="deleting">Eliminando…</string>
|
||||
<string name="notification_channel_audio_player">Reproducción de audio</string>
|
||||
<string name="play">Reproducir</string>
|
||||
@@ -127,7 +130,7 @@
|
||||
<string name="log_out">Cerrar sesión</string>
|
||||
<string name="add_account">Añadir cuenta</string>
|
||||
<string name="search_hint">Buscar</string>
|
||||
<string name="hashtags">Hashtags</string>
|
||||
<string name="hashtags">Etiquetas</string>
|
||||
<string name="news">Noticias</string>
|
||||
<string name="for_you">Para ti</string>
|
||||
<string name="all_notifications">Todas</string>
|
||||
@@ -140,13 +143,13 @@
|
||||
<item quantity="one">Debatido %d vez</item>
|
||||
<item quantity="other">Debatido %d veces</item>
|
||||
</plurals>
|
||||
<string name="report_title">Reportar %s</string>
|
||||
<string name="report_title">Denunciar a %s</string>
|
||||
<string name="report_choose_reason">¿Cuál es el problema con esta publicación?</string>
|
||||
<string name="report_choose_reason_account">¿Cuál es el problema con %s?</string>
|
||||
<string name="report_choose_reason_subtitle">Selecciona la mejor opción</string>
|
||||
<string name="report_choose_reason_subtitle">Seleccione la mejor opción</string>
|
||||
<string name="report_reason_personal">No me gusta</string>
|
||||
<string name="report_reason_personal_subtitle">No es algo que quieras ver</string>
|
||||
<string name="report_reason_spam">Es spam</string>
|
||||
<string name="report_reason_spam">Es publicidad no deseada</string>
|
||||
<string name="report_reason_spam_subtitle">Enlaces maliciosos, interacciones falsas o respuestas repetitivas</string>
|
||||
<string name="report_reason_violation">Viola las reglas del servidor</string>
|
||||
<string name="report_reason_violation_subtitle">Eres consciente de que infringe normas específicas</string>
|
||||
@@ -154,31 +157,23 @@
|
||||
<string name="report_reason_other_subtitle">El problema no encaja en otras categorías</string>
|
||||
<string name="report_choose_rule">¿Qué normas se están violando?</string>
|
||||
<string name="report_choose_rule_subtitle">Selecciona todos los que correspondan</string>
|
||||
<string name="report_choose_posts">¿Hay alguna publicación que respalde este informe?</string>
|
||||
<string name="report_choose_posts">¿Hay alguna publicación que respalde esta denuncia?</string>
|
||||
<string name="report_choose_posts_subtitle">Selecciona todos los que correspondan</string>
|
||||
<string name="report_comment_title">¿Hay algo más que deberíamos saber?</string>
|
||||
<string name="report_comment_hint">Comentarios adicionales</string>
|
||||
<string name="sending_report">Enviando el informe…</string>
|
||||
<string name="report_sent_title">Gracias por informar, estudiaremos el caso.</string>
|
||||
<string name="sending_report">Enviando denuncia…</string>
|
||||
<string name="report_sent_title">Gracias por denunciar; estudiaremos el caso.</string>
|
||||
<string name="report_sent_subtitle">Mientras revisamos esto, puedes tomar medidas contra %s.</string>
|
||||
<string name="unfollow_user">Dejar de seguir a %s</string>
|
||||
<string name="unfollow">Dejar de seguir</string>
|
||||
<string name="mute_user_explain">No verás sus publicaciones o reblogueos en tu línea temporal. No sabrán que han sido silenciados.</string>
|
||||
<string name="block_user_explain">Ya no podrán seguir o ver tus mensajes, pero pueden ver si han sido bloqueados.</string>
|
||||
<string name="report_personal_title">¿No quieres ver esto?</string>
|
||||
<string name="report_personal_subtitle">Cuando veas algo que no te gusta en Mastodon, puedes quitar a la persona de tu experiencia.</string>
|
||||
<string name="report_personal_subtitle">Cuando vea en Mastodon algo que no le agrada, puede sacar a la persona de su experiencia.</string>
|
||||
<string name="back">Atrás</string>
|
||||
<string name="instance_catalog_title">Mastodon está hecho por usuarios den diferentes servidores.</string>
|
||||
<string name="instance_catalog_subtitle">Selecciona un servidor basado en tus intereses, región o un propósito general. Aun así puedes conectarte con todo el mundo, sin importar el servidor.</string>
|
||||
<string name="search_communities">Busca servidores o introduce la URL</string>
|
||||
<string name="instance_rules_title">Algunas reglas básicas</string>
|
||||
<string name="instance_rules_subtitle">Tómate un minuto para revisar las reglas establecidas y aplicadas por las personas que administran %s.</string>
|
||||
<string name="signup_title">Deja que te preparemos en %s</string>
|
||||
<string name="edit_photo">editar</string>
|
||||
<string name="display_name">nombre a mostrar</string>
|
||||
<string name="username">nombre de usuario</string>
|
||||
<string name="email">correo electrónico</string>
|
||||
<string name="password">contraseña</string>
|
||||
<string name="password_note">Incluye letras mayúsculas, caracteres especiales y números para aumentar la fuerza de tu contraseña.</string>
|
||||
<string name="category_academia">Académico</string>
|
||||
<string name="category_activism">Activismo</string>
|
||||
@@ -193,8 +188,7 @@
|
||||
<string name="category_music">Música</string>
|
||||
<string name="category_regional">Regional</string>
|
||||
<string name="category_tech">Tecnología</string>
|
||||
<string name="confirm_email_title">Una última cosa</string>
|
||||
<string name="confirm_email_subtitle">Toque el enlace que le enviamos por correo electrónico para verificar su cuenta.</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="resend">Reenviar</string>
|
||||
<string name="open_email_app">Abrir aplicación de email</string>
|
||||
<string name="resent_email">Correo de confirmación enviado</string>
|
||||
@@ -282,7 +276,6 @@
|
||||
<string name="open_in_browser">Abrir en el navegador</string>
|
||||
<string name="hide_boosts_from_user">Ocultar reblogueos de %s</string>
|
||||
<string name="show_boosts_from_user">Mostrar reblogueos de %s</string>
|
||||
<string name="signup_reason">¿por qué quieres unirte?</string>
|
||||
<string name="signup_reason_note">Esto nos ayudará a revisar su solicitud.</string>
|
||||
<string name="clear">Borrar</string>
|
||||
<string name="profile_header">Imagen de cabecera</string>
|
||||
@@ -375,7 +368,23 @@
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">Descargar (%s)</string>
|
||||
<string name="install_update">Instalar</string>
|
||||
<string name="privacy_policy_title">Mastodon y su privacidad</string>
|
||||
<string name="privacy_policy_subtitle">Aunque la aplicación de Mastodon no recolecta ningún dato, el servidor al que se registre puede tener una política diferente. Tómese un minuto para revisar y aceptar las políticas de privacidad de la aplicación de Mastodon y las políticas de privacidad de su servidor.</string>
|
||||
<string name="i_agree">Acepto</string>
|
||||
<string name="empty_list">Esta lista está vacía</string>
|
||||
<string name="instance_signup_closed">Este servidor no acepta altas nuevas.</string>
|
||||
<string name="text_copied">Copiado en el portapapeles</string>
|
||||
<string name="add_bookmark">Marcadores</string>
|
||||
<string name="remove_bookmark">Eliminar marcador</string>
|
||||
<string name="bookmarks">Marcadores</string>
|
||||
<string name="your_favorites">Sus favoritos</string>
|
||||
<string name="login_title">Qué bueno verle de nuevo</string>
|
||||
<string name="login_subtitle">Inicie sesión con el servidor donde creó su cuenta.</string>
|
||||
<string name="server_url">URL del servidor</string>
|
||||
<string name="welcome_page1_text">Imagina que tienes una dirección de correo electrónico que termina con @ejemplo.com.\n\nPuedes enviar y recibir correos electrónicos de cualquier persona, incluso si su correo electrónico termina en @gmail.com o @icloud.com o @ejemplo.com.</string>
|
||||
<string name="welcome_page2_title">Mastodon es parecido.</string>
|
||||
<string name="welcome_page2_text">Tu cuenta puede ser @gothgirl654@example.social, pero puedes seguir, rebloguear, y chatear con @fallout5ever@example.online.</string>
|
||||
<string name="welcome_page3_title">¿Cómo elijo un servidor?</string>
|
||||
<string name="welcome_page3_text">Diferentes personas eligen diferentes servidores por diferentes motivos. Por ejemplo, art.example es un buen lugar para artistas, mientras que madrid.example puede ser una buena elección para los madrileños.\n\nNo te equivocarás con ninguno de nuestros servidores recomendados, por lo que independientemente del que escojas (o si introduces tu propio servidor en la barra de búsqueda), no te perderás ni una en ningún lugar.</string>
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -3,27 +3,27 @@
|
||||
<string name="sk_pinned_posts">Anclado</string>
|
||||
<string name="sk_delete_and_redraft">Eliminar y editar</string>
|
||||
<string name="sk_confirm_delete_and_redraft_title">Eliminar y editar publicación</string>
|
||||
<string name="sk_confirm_delete_and_redraft">¿Confirma que quiere eliminar y volver a editar esta publicación\?</string>
|
||||
<string name="sk_pin_post">Anclar en perfil</string>
|
||||
<string name="sk_confirm_pin_post_title">Anclar publicación en perfil</string>
|
||||
<string name="sk_confirm_pin_post">¿Quiere anclar la publicación en su perfil\?</string>
|
||||
<string name="sk_confirm_delete_and_redraft">¿Seguro que quieres eliminar y editar esta publicación\?</string>
|
||||
<string name="sk_pin_post">Anclar en el perfil</string>
|
||||
<string name="sk_confirm_pin_post_title">Anclar publicación en el perfil</string>
|
||||
<string name="sk_confirm_pin_post">¿Quieres anclar la publicación en tu perfil\?</string>
|
||||
<string name="sk_pinning">Anclando publicación…</string>
|
||||
<string name="sk_unpin_post">Desanclar del perfil</string>
|
||||
<string name="sk_confirm_unpin_post_title">Desanclar publicación del perfil</string>
|
||||
<string name="sk_confirm_unpin_post">¿Confirma que quiere desanclar esta publicación\?</string>
|
||||
<string name="sk_confirm_unpin_post">¿Seguro que quieres desanclar esta publicación\?</string>
|
||||
<string name="sk_app_name">Megalodon</string>
|
||||
<string name="sk_unpinning">Desanclando publicación…</string>
|
||||
<string name="sk_image_description">Descripción de la imagen</string>
|
||||
<string name="sk_visibility_unlisted">Descatalogada</string>
|
||||
<string name="sk_visibility_unlisted">No listada</string>
|
||||
<string name="sk_settings_show_replies">Mostrar respuestas</string>
|
||||
<string name="sk_settings_show_boosts">Mostrar impulsos</string>
|
||||
<string name="sk_settings_load_new_posts">Cargar publicaciones nuevas automáticamente</string>
|
||||
<string name="sk_settings_show_interaction_counts">Mostrar recuentos de interacciones</string>
|
||||
<string name="sk_mark_media_as_sensitive">Marcar medio como delicado</string>
|
||||
<string name="sk_user_post_notifications_on">Activadas las notificaciones de posts para %s</string>
|
||||
<string name="sk_user_post_notifications_off">Desactivadas las notificaciones de posts para %s</string>
|
||||
<string name="sk_settings_show_interaction_counts">Mostrar recuento de interacciones</string>
|
||||
<string name="sk_mark_media_as_sensitive">Marcar contenido como delicado</string>
|
||||
<string name="sk_user_post_notifications_on">Activadas las notificaciones de publicaciones para %s</string>
|
||||
<string name="sk_user_post_notifications_off">Desactivadas las notificaciones de publicaciones para %s</string>
|
||||
<string name="sk_federated_timeline">Federación</string>
|
||||
<string name="sk_federated_timeline_info_banner">Estas son las publicaciones más recientes de las personas de su federación.</string>
|
||||
<string name="sk_federated_timeline_info_banner">Estas son las publicaciones más recientes de las personas de tu federación.</string>
|
||||
<string name="sk_update_available">Megalodon %s está listo para descargar.</string>
|
||||
<string name="sk_update_ready">Megalodon %s se ha descargado y está listo para instalarse.</string>
|
||||
<string name="sk_check_for_update">Buscar actualizaciones</string>
|
||||
@@ -34,113 +34,113 @@
|
||||
<string name="sk_reject_follow_request">Rechazar solicitud de seguimiento</string>
|
||||
<string name="sk_lists_with_user">Listas con %s</string>
|
||||
<string name="sk_settings_always_reveal_content_warnings">Mostrar siempre advertencias de contenido</string>
|
||||
<string name="sk_disable_marquee">Desactivar desplazamiento de texto en barras del título</string>
|
||||
<string name="sk_disable_marquee">Desactivar desplazamiento de texto los encabezados</string>
|
||||
<string name="sk_settings_contribute">Contribuir a Megalodon</string>
|
||||
<string name="sk_settings_show_federated_timeline">Mostrar cronología federada</string>
|
||||
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
|
||||
<string name="sk_notification_type_status">Publicaciones</string>
|
||||
<string name="sk_notify_posts">Publicar notificaciones</string>
|
||||
<string name="sk_settings_color_palette">Colores para los temas</string>
|
||||
<string name="sk_notify_posts">Notificaciones de publicación</string>
|
||||
<string name="sk_settings_color_palette">Color del tema</string>
|
||||
<string name="sk_color_palette_pink">Rosa</string>
|
||||
<string name="sk_color_palette_purple">Violeta</string>
|
||||
<string name="sk_color_palette_green">Verde</string>
|
||||
<string name="sk_color_palette_blue">Azul</string>
|
||||
<string name="sk_color_palette_brown">Marrón</string>
|
||||
<string name="sk_color_palette_yellow">Amarillo</string>
|
||||
<string name="sk_poll_allow_multiple">Permitir respuesta múltiple</string>
|
||||
<string name="sk_poll_allow_multiple">Permitir varias respuestas</string>
|
||||
<string name="sk_translate_post">Traducir</string>
|
||||
<string name="sk_translate_show_original">Mostrar original</string>
|
||||
<string name="sk_translated_using">Traducido mediante %s</string>
|
||||
<string name="sk_post_language">Idioma: %s</string>
|
||||
<string name="sk_available_languages">Idiomas disponibles</string>
|
||||
<string name="sk_language_name">%s (%s)</string>
|
||||
<string name="sk_confirm_clear_recent_languages">¿Confirma que quiere vaciar sus idiomas usados recientemente\?</string>
|
||||
<string name="sk_clear_recent_languages">Vaciar idiomas usados recientemente</string>
|
||||
<string name="sk_welcome_text">¡El tiburón te saluda! Para empezar, introduzca a continuación el nombre del dominio de su instancia de origen.</string>
|
||||
<string name="sk_example_domain">example.social</string>
|
||||
<string name="sk_welcome_title">¡Bienvenidos!</string>
|
||||
<string name="sk_confirm_clear_recent_languages">¿Seguro que quieres borrar los idiomas usados recientemente\?</string>
|
||||
<string name="sk_clear_recent_languages">Borrar idiomas usados recientemente</string>
|
||||
<string name="sk_welcome_text">¡El tiburón te saluda! Para empezar, introduce a continuación el nombre del dominio de tu instancia.</string>
|
||||
<string name="sk_example_domain">ejemplo.social</string>
|
||||
<string name="sk_welcome_title">¡Bienvenido!</string>
|
||||
<string name="sk_color_palette_material3">Sistema</string>
|
||||
<string name="sk_color_palette_red">Rojo</string>
|
||||
<string name="sk_settings_profile">Configurar el perfil</string>
|
||||
<string name="sk_settings_posting">Preferencias de publicación</string>
|
||||
<string name="sk_settings_filters">Configurar los filtros</string>
|
||||
<string name="sk_settings_auth">Ajustes de seguridad</string>
|
||||
<string name="sk_settings_rules">Reglas</string>
|
||||
<string name="sk_settings_rules">Normas</string>
|
||||
<string name="sk_settings_about">Acerca de la aplicación</string>
|
||||
<string name="sk_settings_donate">Donar</string>
|
||||
<string name="sk_tabs_disable_swipe">Deshabilitar el deslizamiento entre pestañas</string>
|
||||
<string name="sk_delete_notification">Eliminar la notificación</string>
|
||||
<string name="sk_tabs_disable_swipe">Desactivar el desplazamiento entre pestañas</string>
|
||||
<string name="sk_delete_notification">Eliminar notificación</string>
|
||||
<string name="sk_delete_notification_confirm_action">Eliminar la notificación</string>
|
||||
<string name="sk_delete_notification_confirm">¿Estás seguro de que quieres borrar esta notificación\?</string>
|
||||
<string name="sk_clear_all_notifications">Borrar todas las notificaciones</string>
|
||||
<string name="sk_clear_all_notifications_confirm_action">Borrar todo</string>
|
||||
<string name="sk_enable_delete_notifications">Activar la eliminación de notificaciones</string>
|
||||
<string name="sk_settings_publish_button_text">Publicar el texto del botón</string>
|
||||
<string name="sk_settings_publish_button_text">Texto del botón de publicación</string>
|
||||
<string name="sk_settings_publish_button_text_title">Personalizar el texto del botón Publicar</string>
|
||||
<string name="sk_settings_translate_only_opened">Ocultar el botón de la traducción en la línea de tiempo</string>
|
||||
<string name="sk_settings_translate_only_opened">Ocultar el botón de la traducción en la cronología</string>
|
||||
<string name="sk_clear_all_notifications_confirm">¿Estás seguro de que quieres borrar todas las notificaciones\?</string>
|
||||
<string name="sk_settings_translation_availability_note_available">¡%s admite traducción!</string>
|
||||
<string name="sk_settings_translation_availability_note_unavailable">%s no parece soportar la traducción.</string>
|
||||
<string name="sk_settings_translation_availability_note_unavailable">%s no parece admitir la traducción.</string>
|
||||
<string name="sk_loading_fediverse_resource_title">Buscándolo en el Fediverso</string>
|
||||
<string name="sk_quote_post">Publicar sobre esto</string>
|
||||
<string name="sk_undo_reblog">Deshacer reblogueo</string>
|
||||
<string name="sk_reblog_with_visibility">Rebloguea con visibilidad</string>
|
||||
<string name="sk_hashtags_you_follow">Hashtags que sigues</string>
|
||||
<string name="sk_copy_link_to_post">Copiar enlace a la publicación</string>
|
||||
<string name="sk_hashtags_you_follow">Etiquetas que sigues</string>
|
||||
<string name="sk_copy_link_to_post">Copiar enlace de la publicación</string>
|
||||
<string name="sk_open_with_account">Abrir con otra cuenta</string>
|
||||
<string name="sk_resource_not_found">El recurso no se pudo encontrar</string>
|
||||
<string name="sk_loading_resource_on_instance_title">Buscándolo en %s</string>
|
||||
<string name="sk_bookmarked_as">Añadido a favoritos como %s</string>
|
||||
<string name="sk_already_bookmarked">Ya marcado</string>
|
||||
<string name="sk_favorited_as">Favorito como %s</string>
|
||||
<string name="sk_bookmarked_as">Añadido a marcadores como %s</string>
|
||||
<string name="sk_already_bookmarked">Ya en marcadores</string>
|
||||
<string name="sk_favorited_as">Marcado favorito como %s</string>
|
||||
<string name="sk_already_favorited">Ya es un favorito</string>
|
||||
<string name="sk_reblog_as">Compartir con otra cuenta</string>
|
||||
<string name="sk_reblogged_as">Compartido como %s</string>
|
||||
<string name="sk_already_reblogged">Ya se volvió a publicar</string>
|
||||
<string name="sk_reblog_as">Impulsar con otra cuenta</string>
|
||||
<string name="sk_reblogged_as">Impulsado como %s</string>
|
||||
<string name="sk_already_reblogged">Ya se había impulsado</string>
|
||||
<string name="sk_reply_as">Responder con otra cuenta</string>
|
||||
<string name="sk_bookmark_as">Marcar con otra cuenta</string>
|
||||
<string name="sk_favorite_as">Favoritos con otra cuenta</string>
|
||||
<string name="sk_bookmark_as">Añadir a marcadores con otra cuenta</string>
|
||||
<string name="sk_favorite_as">Marcar favorito con otra cuenta</string>
|
||||
<string name="sk_settings_uniform_icon_for_notifications">Mismo icono para todas las notificaciones</string>
|
||||
<string name="sk_forward_report_to">Reenviar a %s</string>
|
||||
<string name="sk_unsent_posts">Mensajes no enviados</string>
|
||||
<string name="sk_unsent_posts">Publicaciones no enviadas</string>
|
||||
<string name="sk_draft">Borrador</string>
|
||||
<string name="sk_schedule">Programar</string>
|
||||
<string name="sk_confirm_delete_draft_title">Borrar el borrador</string>
|
||||
<string name="sk_confirm_delete_draft">¿Seguro que quieres borrar este borrador\?</string>
|
||||
<string name="sk_confirm_delete_scheduled_post_title">Borrar la entrada programada</string>
|
||||
<string name="sk_confirm_delete_scheduled_post">¿Está seguro de que desea eliminar esta publicación programada\?</string>
|
||||
<string name="sk_draft_or_schedule">A borrador o programar el envio</string>
|
||||
<string name="sk_compose_draft">El mensaje se guardará como borrador.</string>
|
||||
<string name="sk_confirm_delete_draft_title">Eliminar borrador</string>
|
||||
<string name="sk_confirm_delete_draft">¿Seguro que quieres eliminar este borrador\?</string>
|
||||
<string name="sk_confirm_delete_scheduled_post_title">Borrar publicación programada</string>
|
||||
<string name="sk_confirm_delete_scheduled_post">¿Seguro que quieres eliminar esta publicación programada\?</string>
|
||||
<string name="sk_draft_or_schedule">Borrador o programar</string>
|
||||
<string name="sk_compose_draft">La publicación se guardará como borrador.</string>
|
||||
<string name="sk_compose_scheduled">Programado para</string>
|
||||
<string name="sk_draft_saved">Borrador guardado</string>
|
||||
<string name="sk_post_scheduled">Publicación programada</string>
|
||||
<string name="sk_scheduled_too_soon_title">La hora programada es demasiado pronto</string>
|
||||
<string name="sk_scheduled_too_soon">El mensaje debe programarse con al menos 10 minutos de antelación.</string>
|
||||
<string name="sk_scheduled_too_soon">La publicación debe programarse con al menos 10 minutos de antelación.</string>
|
||||
<string name="sk_confirm_save_draft">¿Guardar el borrador\?</string>
|
||||
<string name="sk_confirm_save_changes">¿Guardar los cambios\?</string>
|
||||
<string name="sk_mark_as_draft">Marcar como borrador</string>
|
||||
<string name="sk_schedule_post">Programar la publicación</string>
|
||||
<string name="sk_schedule_or_draft">Calendario o proyecto</string>
|
||||
<string name="sk_schedule_or_draft">Programar o borrador</string>
|
||||
<string name="sk_compose_no_schedule">No programar</string>
|
||||
<string name="sk_compose_no_draft">No hagas borradores</string>
|
||||
<string name="sk_settings_reduce_motion">Reducir el movimiento en las animaciones</string>
|
||||
<string name="sk_compose_no_draft">No guardar borrador</string>
|
||||
<string name="sk_settings_reduce_motion">Reducir el movimiento de las animaciones</string>
|
||||
<string name="sk_announcements">Anuncios</string>
|
||||
<string name="sk_mark_as_read">Marcar como leído</string>
|
||||
<string name="sk_settings_about_instance">Sobre la instancia</string>
|
||||
<string name="sk_settings_single_notification">Mostrar solo una notificación</string>
|
||||
<string name="sk_create">Crear</string>
|
||||
<string name="sk_create_list_title">Crear una lista</string>
|
||||
<string name="sk_list_name_hint">Lista de nombres</string>
|
||||
<string name="sk_list_name_hint">Nombre de la lista</string>
|
||||
<string name="sk_list_replies_policy">Mostrar respuestas a</string>
|
||||
<string name="sk_list_replies_policy_followed">Usuarios a los que sigues</string>
|
||||
<string name="sk_list_replies_policy_none">Ninguno</string>
|
||||
<string name="sk_delete_list">Eliminar la lista</string>
|
||||
<string name="sk_delete_list_confirm">¿Estás seguro de que quieres borrar la lista \"%s\"\?</string>
|
||||
<string name="sk_edit_list_title">Editar la lista</string>
|
||||
<string name="sk_delete_list_confirm">¿Seguro que quieres borrar la lista \"%s\"\?</string>
|
||||
<string name="sk_edit_list_title">Editar lista</string>
|
||||
<string name="sk_your_lists">Tus listas</string>
|
||||
<string name="sk_list_replies_policy_list">Lista de miembros</string>
|
||||
<string name="sk_list_replies_policy_list">Miembros de la lista</string>
|
||||
<string name="sk_timeline_home">Inicio</string>
|
||||
<string name="sk_timeline_federated">Federación</string>
|
||||
<string name="sk_timeline_federated">Federada</string>
|
||||
<string name="sk_timeline_local">Local</string>
|
||||
<string name="sk_recent_searches_placeholder">Escribe para empezar a buscar</string>
|
||||
<string name="sk_remove_follower">Eliminar como seguidor</string>
|
||||
@@ -151,9 +151,9 @@
|
||||
<string name="sk_icon_heart">Corazón</string>
|
||||
<string name="sk_list">Lista</string>
|
||||
<string name="sk_alt_text_missing_title">Falta texto alternativo</string>
|
||||
<string name="sk_alt_text_missing">Por lo menos un elemento anexado no contiene descripción.</string>
|
||||
<string name="sk_alt_text_missing">Por lo menos un archivo adjunto no contiene descripción.</string>
|
||||
<string name="sk_publish_anyway">Publicar de todas formas</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Deshabilitar el recordatorio de texto alternativo</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Desactivar recordatorio para añadir texto alternativo</string>
|
||||
<string name="sk_notify_posts_info_banner">Si tienes habilitadas las notificaciones de publicación para algunas personas, sus nuevas publicaciones aparecerán aquí.</string>
|
||||
<string name="sk_timelines">Cronologías</string>
|
||||
<string name="sk_icon_city">Ciudad</string>
|
||||
@@ -170,7 +170,7 @@
|
||||
<string name="sk_icon_megaphone">Megáfono</string>
|
||||
<string name="sk_icon_microphone">Micrófono</string>
|
||||
<string name="sk_icon_microscope">Microscopio</string>
|
||||
<string name="sk_icon_keyboard">Teclado</string>
|
||||
<string name="sk_icon_keyboard">Piano</string>
|
||||
<string name="sk_icon_coffee">Café</string>
|
||||
<string name="sk_icon_laugh">Risa</string>
|
||||
<string name="sk_icon_news">Noticias</string>
|
||||
@@ -201,7 +201,7 @@
|
||||
<string name="sk_icon_backpack">Mochila</string>
|
||||
<string name="sk_icon_briefcase">Maletín</string>
|
||||
<string name="sk_icon_fire">Fuego</string>
|
||||
<string name="sk_icon_bug">Fallo</string>
|
||||
<string name="sk_icon_bug">Insecto</string>
|
||||
<string name="sk_icon_pizza">Pizza</string>
|
||||
<string name="sk_icon_gavel">Grava</string>
|
||||
<string name="sk_icon_gauge">Calibre</string>
|
||||
@@ -209,27 +209,27 @@
|
||||
<string name="sk_icon_human">Humano</string>
|
||||
<string name="sk_icon_globe">Globo</string>
|
||||
<string name="sk_edit_timeline">Editar cronología</string>
|
||||
<string name="sk_icon_pin">Pin</string>
|
||||
<string name="sk_icon_pin">Chincheta</string>
|
||||
<string name="sk_edit_timelines">Editar cronologías</string>
|
||||
<string name="sk_alt_button">ALT</string>
|
||||
<string name="sk_post_edited">editado</string>
|
||||
<string name="sk_notification_type_update">Publicaciones editadas</string>
|
||||
<string name="sk_notify_update">Edita un mensaje reblogueado</string>
|
||||
<string name="sk_notify_update">Editó una publicación impulsada</string>
|
||||
<string name="sk_searching">Buscando…</string>
|
||||
<string name="sk_no_results">Sin resultados</string>
|
||||
<string name="sk_save_draft">¿Guardar el borrador\?</string>
|
||||
<string name="sk_no_alt_text">No hay texto alternativo disponible</string>
|
||||
<string name="sk_settings_show_alt_indicator">Indicador para textos alternativos</string>
|
||||
<string name="sk_settings_show_no_alt_indicator">Indicador para textos alternativos que faltan</string>
|
||||
<string name="sk_updater_enable_pre_releases">Habilitar pre-lanzamientos</string>
|
||||
<string name="sk_settings_show_alt_indicator">Desplegable de textos alternativos</string>
|
||||
<string name="sk_settings_show_no_alt_indicator">Indicador de ausencia de texto alternativo</string>
|
||||
<string name="sk_updater_enable_pre_releases">Activar versiones beta</string>
|
||||
<string name="sk_timeline_posts">Publicaciones</string>
|
||||
<string name="sk_timelines_add">Añadir</string>
|
||||
<string name="sk_timeline">Cronología</string>
|
||||
<string name="sk_hashtag">Hashtag</string>
|
||||
<string name="sk_pin_timeline">Fijar cronología</string>
|
||||
<string name="sk_unpin_timeline">Desfijar cronología</string>
|
||||
<string name="sk_pinned_timeline">Fijado al inicio</string>
|
||||
<string name="sk_unpinned_timeline">Desfijado del inicio</string>
|
||||
<string name="sk_hashtag">Etiqueta</string>
|
||||
<string name="sk_pin_timeline">Anclar cronología</string>
|
||||
<string name="sk_unpin_timeline">Desanclar cronología</string>
|
||||
<string name="sk_pinned_timeline">Anclado a inicio</string>
|
||||
<string name="sk_unpinned_timeline">Desanclado de inicio</string>
|
||||
<string name="sk_remove">Eliminado</string>
|
||||
<string name="sk_timeline_icon">Icono</string>
|
||||
<string name="sk_icon_star">Estrella</string>
|
||||
@@ -241,11 +241,22 @@
|
||||
<string name="sk_local_only">Sólo instancia local</string>
|
||||
<string name="sk_instance_features">Funciones de la instancia</string>
|
||||
<string name="sk_settings_support_local_only">El servidor admite la publicación sólo local</string>
|
||||
<string name="sk_settings_local_only_explanation">Para que esto funcione, su instancia de origen debe soportar la publicación sólo local. La mayoría de las versiones modificadas de Mastodon lo hacen, pero Mastodon no.</string>
|
||||
<string name="sk_settings_local_only_explanation">Para que esto funcione, tu instancia de origen debe soportar la publicación sólo local. La mayoría de las versiones modificadas de Mastodon lo hacen, pero Mastodon no.</string>
|
||||
<string name="sk_settings_glitch_instance">Glitch modo sólo local</string>
|
||||
<string name="sk_settings_glitch_mode_explanation">Habilita esta opción si tu instancia local funciona con Glitch. No es necesario para Hometown o Akkoma.</string>
|
||||
<string name="sk_signed_up">inscrito</string>
|
||||
<string name="sk_signed_up">registrado</string>
|
||||
<string name="sk_reported">reportado</string>
|
||||
<string name="sk_sign_ups">Registro de usuarios</string>
|
||||
<string name="sk_new_reports">Nuevos informes</string>
|
||||
<string name="sk_settings_server_version">Versión de servidor: %s</string>
|
||||
<string name="sk_notify_poll_results">Resultado de encuestas</string>
|
||||
<string name="sk_filtered">Filtrado: %s</string>
|
||||
<string name="sk_expand">Ampliar</string>
|
||||
<string name="sk_collapse">Reducir</string>
|
||||
<string name="sk_settings_collapse_long_posts">Acortar publicaciones largas</string>
|
||||
<string name="sk_unfinished_attachments">¿Corregir adjuntos\?</string>
|
||||
<string name="sk_unfinished_attachments_message">Algunos adjuntos no han terminado de subirse.</string>
|
||||
<string name="sk_settings_prefix_reply_cw_with_re">Añadir \"re:\" a respuestas a Advertencias de Contenido</string>
|
||||
<string name="sk_spectator_mode">Modo espectador</string>
|
||||
<string name="sk_settings_hide_interaction">Ocultar los botones interactivos</string>
|
||||
</resources>
|
||||
@@ -1,9 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Nola hasi</string>
|
||||
<string name="get_started">Sortu kontua</string>
|
||||
<string name="already_have_account">Badut kontua dagoeneko</string>
|
||||
<string name="log_in">Hasi saioa</string>
|
||||
<string name="next">Hurrengoa</string>
|
||||
<string name="loading_instance">Zerbitzariaren informazioa berreskuratzen…</string>
|
||||
<string name="error">Errorea</string>
|
||||
<string name="not_a_mastodon_instance">%s(e) k ez dirudi Mastodon instantzia bat denik.</string>
|
||||
<string name="ok">Ados</string>
|
||||
<string name="preparing_auth">Autentifikaziorako prestatzen…</string>
|
||||
<string name="finishing_auth">Autentikazioa bukatzen…</string>
|
||||
@@ -170,15 +173,15 @@
|
||||
<string name="back">Atzera</string>
|
||||
<string name="instance_catalog_title">Mastodon zerbitzari desberdinetako erabiltzaileez egina dago.</string>
|
||||
<string name="instance_catalog_subtitle">Aukeratu zerbitzari bat zure interesen, eskualdearen edo helburuen arabera. Pertsona guztiekin konektatu ahal izango duzu, zerbitzaria zein den kontuan hartu gabe.</string>
|
||||
<string name="search_communities">Bilatu zerbitzariak edo idatzi URL-a</string>
|
||||
<string name="instance_rules_title">Oinarrizko arau batzuk</string>
|
||||
<string name="instance_rules_subtitle">Hartu minutu bat %s-en administratzaileek ezarri eta aplikatutako arauak berrikusteko.</string>
|
||||
<string name="signup_title">%s zerbitzariko kontua prestatuko dizugu</string>
|
||||
<string name="search_communities">Zerbitzari izena edo URLa</string>
|
||||
<string name="instance_rules_title">Zerbitzariaren arauak</string>
|
||||
<string name="signup_title">Sortu kontua</string>
|
||||
<string name="edit_photo">editatu</string>
|
||||
<string name="display_name">pantaila-izena</string>
|
||||
<string name="username">erabiltzaile-izena</string>
|
||||
<string name="email">eposta</string>
|
||||
<string name="password">pasahitza</string>
|
||||
<string name="display_name">Izena</string>
|
||||
<string name="username">Erabiltzaile-izena</string>
|
||||
<string name="email">Eposta</string>
|
||||
<string name="password">Pasahitza</string>
|
||||
<string name="confirm_password">Berretsi pasahitza</string>
|
||||
<string name="password_note">Sartu letra larriak, karaktere bereziak eta zenbakiak zure pasahitzaren segurtasuna areagotzeko.</string>
|
||||
<string name="category_academia">Akademia</string>
|
||||
<string name="category_activism">Aktibismoa</string>
|
||||
@@ -193,8 +196,8 @@
|
||||
<string name="category_music">Musika</string>
|
||||
<string name="category_regional">Herrialdekoa</string>
|
||||
<string name="category_tech">Teknologia</string>
|
||||
<string name="confirm_email_title">Eta azkenik...</string>
|
||||
<string name="confirm_email_subtitle">Sakatu epostaz bidali dizugun loturan zure kontua egiaztatzeko.</string>
|
||||
<string name="confirm_email_title">Egiaztatu zure sarrerako ontzia</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="resend">Berbidali</string>
|
||||
<string name="open_email_app">Ireki eposta aplikazioa</string>
|
||||
<string name="resent_email">Berretzi eposta bidaltzea</string>
|
||||
@@ -282,7 +285,7 @@
|
||||
<string name="open_in_browser">Ireki nabigatzailean</string>
|
||||
<string name="hide_boosts_from_user">Ezkutatu %s(r)en bultzadak</string>
|
||||
<string name="show_boosts_from_user">Erakutsi %s(r)en bultzadak</string>
|
||||
<string name="signup_reason">zergatik elkartu nahi duzu?</string>
|
||||
<string name="signup_reason">Zergatik elkartu nahi duzu?</string>
|
||||
<string name="signup_reason_note">Honek zure eskaera berrikustean lagunduko digu.</string>
|
||||
<string name="clear">Garbitu</string>
|
||||
<string name="profile_header">Goiburu irudia</string>
|
||||
@@ -375,8 +378,7 @@
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">(%s) deskargatu</string>
|
||||
<string name="install_update">Instalatu</string>
|
||||
<string name="privacy_policy_title">Mastodon eta zure pribatutasuna</string>
|
||||
<string name="privacy_policy_subtitle">Mastodon aplikazioak daturik jasotzen ez duen arren, izena ematen duzun zerbitzariak beste politika bat izan dezake. Eskaini minutu bat Mastodon aplikazioaren pribatutasun politika eta zure zerbitzariaren pribatutasun politika berrikusteko eta ados zaudela ziurtatzeko.</string>
|
||||
<string name="privacy_policy_title">Zure pribatutasuna</string>
|
||||
<string name="i_agree">Ados nago</string>
|
||||
<string name="empty_list">Zerrenda hau hutsik dago</string>
|
||||
<string name="instance_signup_closed">Zerbitzari honek ez ditu izen-emate berriak onartzen.</string>
|
||||
@@ -385,4 +387,31 @@
|
||||
<string name="remove_bookmark">Kendu laster-marka</string>
|
||||
<string name="bookmarks">Laster-markak</string>
|
||||
<string name="your_favorites">Zure gogokoak</string>
|
||||
<string name="login_title">Ongi etorri berriro ere</string>
|
||||
<string name="login_subtitle">Hasi saioa kontua sortu zenuen zerbitzariarekin.</string>
|
||||
<string name="server_url">Zerbitzariaren URLa</string>
|
||||
<string name="welcome_page1_title">Zer da Mastodon?</string>
|
||||
<string name="welcome_page1_text">Imajinatu zure helbide elektronikoa adibidea.eus-en amaitzen dela. \n\n Oraindik edonoren mezu elektronikoak bidali eta jaso ditzakezu, baita posta elektronikoa @gmail.com edo @icloud.com edo @adibidea.eus helbideetan amaitzen bada ere.</string>
|
||||
<string name="welcome_page2_title">Mastodon antzekoa da.</string>
|
||||
<string name="welcome_page2_text">Zure kontua \"@pertsona1@mastodon.eus\" izan liteke, baina oraindik ere jarraitu, bultzatu edo txateatu dezakezu \"@pertsona2@mastodon.social\" edo bestelako edozein kontu.</string>
|
||||
<string name="welcome_page3_title">Nola aukeratzen dut zerbitzari bat?</string>
|
||||
<string name="welcome_page3_text">Hainbat pertsonak zerbitzari bat baino gehiago aukeratzen dituzte arrazoi ezberdinengatik. Adibidez, art.example leku ona da artistentzat eta mastodon.eus, berriz, euskaldunentzat. Gure gomendioetako zerbitzariekin, ez duzu hanka sartuko eta edozein dela ere zure aukera, beste zerbitzarietako kideekin harremana izan dezakezu (bilaketa-barran bilatuz).</string>
|
||||
<string name="server_filter_any_language">Edozein hizkuntza</string>
|
||||
<string name="server_filter_instant_signup">Berehalako erregistroa</string>
|
||||
<string name="server_filter_region_europe">Europa</string>
|
||||
<string name="server_filter_region_north_america">Ipar Amerika</string>
|
||||
<string name="server_filter_region_south_america">Hego Amerika</string>
|
||||
<string name="server_filter_region_africa">Afrika</string>
|
||||
<string name="server_filter_region_asia">Asia</string>
|
||||
<string name="server_filter_region_oceania">Ozeania</string>
|
||||
<string name="not_accepting_new_members">Ez da kide berririk onartzen</string>
|
||||
<string name="signup_passwords_dont_match">Pasahitzak ez datoz bat</string>
|
||||
<string name="profile_add_row">Gehitu errenkada</string>
|
||||
<string name="follow_all">Jarraitu denak</string>
|
||||
<string name="server_rules_disagree">Ez ados</string>
|
||||
<!-- %s is server domain -->
|
||||
<string name="profile_bio">Biografia</string>
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
<string name="signup_username_taken">Erabiltzaile-izen hau hartuta dago.</string>
|
||||
</resources>
|
||||
|
||||
102
mastodon/src/main/res/values-fa-rIR/strings.xml
Normal file
102
mastodon/src/main/res/values-fa-rIR/strings.xml
Normal file
@@ -0,0 +1,102 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">ایجاد حساب</string>
|
||||
<string name="already_have_account">من از قبل حسابکاربری دارم</string>
|
||||
<string name="log_in">ورود</string>
|
||||
<string name="next">بعدی</string>
|
||||
<string name="loading_instance">درحال بازیابی اطلاعات سرور…</string>
|
||||
<string name="error">خطا</string>
|
||||
<string name="ok">تأیید</string>
|
||||
<string name="preparing_auth">درحال آمادهسازی برای احرازهویت…</string>
|
||||
<string name="finishing_auth">درحال تکمیل احرازهویت…</string>
|
||||
<string name="in_reply_to">در پاسخ به %s</string>
|
||||
<string name="notifications">اعلانها</string>
|
||||
<string name="user_followed_you">شما را دنبال میکند</string>
|
||||
<string name="user_sent_follow_request">یک درخواست دنبال کردن برای شما ارسال کرد</string>
|
||||
<string name="user_favorited"> فرستهتان را پسندید</string>
|
||||
<string name="notification_boosted">مطلب شما را بهاشتراک گذاشت</string>
|
||||
<string name="poll_ended">نظرسنجی به پایان رسید</string>
|
||||
<string name="time_seconds">%dثانیه</string>
|
||||
<string name="time_minutes">%dدقیقه</string>
|
||||
<string name="time_hours">%dساعت</string>
|
||||
<string name="time_days">%dروز</string>
|
||||
<string name="share_toot_title">اشتراکگذاری</string>
|
||||
<string name="settings">تنظیمات</string>
|
||||
<string name="publish">انتشار</string>
|
||||
<string name="discard_draft">پیشنویس کنار گذاشته شود؟</string>
|
||||
<string name="discard">صرفنظر کردن</string>
|
||||
<string name="cancel">لغو</string>
|
||||
<string name="posts">پستها</string>
|
||||
<string name="posts_and_replies">پستها و پاسخها</string>
|
||||
<string name="media">رسانه</string>
|
||||
<string name="profile_about">درباره</string>
|
||||
<string name="button_follow">فالو</string>
|
||||
<string name="share_user">اشتراکگذاری %s</string>
|
||||
<string name="mute_user">بیصدا %s</string>
|
||||
<string name="block_user">مسدود %s</string>
|
||||
<string name="unblock_user">رفع مسدودیت %s</string>
|
||||
<string name="profile_joined">عضو شد</string>
|
||||
<string name="done">انجام شد</string>
|
||||
<string name="loading">درحال بارگذاری…</string>
|
||||
<string name="field_label">برچسب</string>
|
||||
<string name="field_content">محتوا</string>
|
||||
<string name="saving">درحال ذخیرهسازی…</string>
|
||||
<string name="do_mute">بیصدا</string>
|
||||
<string name="do_block">مسدود</string>
|
||||
<string name="action_vote">رأی</string>
|
||||
<string name="delete">حذف</string>
|
||||
<string name="confirm_delete_title">حذف پست</string>
|
||||
<string name="play">پخش</string>
|
||||
<string name="pause">توقف</string>
|
||||
<string name="search_hint">جستجو</string>
|
||||
<string name="hashtags">هشتگها</string>
|
||||
<string name="news">اخبار</string>
|
||||
<string name="for_you">برای شما</string>
|
||||
<string name="all_notifications">همه</string>
|
||||
<string name="report_title">گزارش کردن %s</string>
|
||||
<string name="report_reason_personal">من این را دوست ندارم</string>
|
||||
<string name="report_reason_spam">این هرزنامه است</string>
|
||||
<string name="back">بازگشت</string>
|
||||
<string name="edit_photo">ویرایش</string>
|
||||
<string name="category_activism">فعالیت</string>
|
||||
<string name="category_all">همه</string>
|
||||
<string name="category_art">هنر</string>
|
||||
<string name="category_food">غذا</string>
|
||||
<string name="category_games">بازیها</string>
|
||||
<string name="category_lgbt">LGBT</string>
|
||||
<string name="category_music">موسیقی</string>
|
||||
<string name="category_regional">منطقهای</string>
|
||||
<string name="category_tech">فناوری</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="resend">ارسال دوباره</string>
|
||||
<string name="save">ذخیره</string>
|
||||
<string name="visibility_public">عمومی</string>
|
||||
<string name="search_all">همه</string>
|
||||
<string name="search_people">افراد</string>
|
||||
<string name="skip">بعدی</string>
|
||||
<string name="notification_type_favorite">علاقهمندیها</string>
|
||||
<string name="notification_type_poll">نظرسنجیها</string>
|
||||
<string name="choose_account">انتخاب حساب</string>
|
||||
<string name="theme_auto">خودکار</string>
|
||||
<string name="theme_light">روشن</string>
|
||||
<string name="theme_dark">تاریک</string>
|
||||
<string name="new_post">پست جدید</string>
|
||||
<string name="button_reply">پاسخ</string>
|
||||
<string name="button_favorite">برگزیده</string>
|
||||
<string name="button_share">اشتراکگذاری</string>
|
||||
<string name="emoji">ایموجی</string>
|
||||
<string name="clear">پاککردن</string>
|
||||
<string name="download">دانلود</string>
|
||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||
<string name="time_now">اکنون</string>
|
||||
<string name="time_just_now">همين الان</string>
|
||||
<string name="edit">ویرایش</string>
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is file size -->
|
||||
<string name="install_update">نصب</string>
|
||||
<string name="i_agree">موافقم</string>
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Aloita</string>
|
||||
<string name="log_in">Kirjaudu sisään</string>
|
||||
<string name="next">Seuraava</string>
|
||||
<string name="error">Virhe</string>
|
||||
@@ -17,9 +16,6 @@
|
||||
<string name="all_notifications">Kaikki</string>
|
||||
<string name="back">Takaisin</string>
|
||||
<string name="edit_photo">muokkaa</string>
|
||||
<string name="display_name">näyttönimi</string>
|
||||
<string name="email">sähköposti</string>
|
||||
<string name="password">salasana</string>
|
||||
<string name="category_academia">Akateeminen</string>
|
||||
<string name="category_activism">Aktivismi</string>
|
||||
<string name="category_all">Kaikki</string>
|
||||
@@ -33,6 +29,7 @@
|
||||
<string name="category_music">Musiikki</string>
|
||||
<string name="category_regional">Alueellinen</string>
|
||||
<string name="category_tech">Teknologia</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="save">Tallenna</string>
|
||||
<string name="theme_auto">Automaattinen</string>
|
||||
<string name="theme_light">Vaalea</string>
|
||||
@@ -53,4 +50,7 @@
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is file size -->
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Magsimula</string>
|
||||
<string name="get_started">Gumawa ng account</string>
|
||||
<string name="already_have_account">Mayroon na akong account</string>
|
||||
<string name="log_in">Mag-log in</string>
|
||||
<string name="next">Sunod</string>
|
||||
<string name="loading_instance">Pagkuha ng impormasyon sa server…</string>
|
||||
<string name="error">Nag-Error</string>
|
||||
<string name="not_a_mastodon_instance">%s hindi lumilitaw para maging Mastodon server.</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="preparing_auth">Paghahanda para sa pagpapatunay…</string>
|
||||
<string name="finishing_auth">Natapos na ang pagpapatunay…</string>
|
||||
<string name="user_boosted">%s reblogged</string>
|
||||
<string name="in_reply_to">Sa sumagot sa %s</string>
|
||||
<string name="in_reply_to">Bilang tugon kay %s</string>
|
||||
<string name="notifications">Mga abiso</string>
|
||||
<string name="user_followed_you">sinundan ka</string>
|
||||
<string name="user_sent_follow_request">may nagpadala sa iyo ng follow request</string>
|
||||
@@ -39,7 +42,7 @@
|
||||
</plurals>
|
||||
<string name="posts">Mga Post</string>
|
||||
<string name="posts_and_replies">Mga post at Mga tugon</string>
|
||||
<string name="media">Medya</string>
|
||||
<string name="media">Media</string>
|
||||
<string name="profile_about">Tungkol</string>
|
||||
<string name="button_follow">Sundan</string>
|
||||
<string name="button_following">Sumusunod</string>
|
||||
@@ -48,9 +51,9 @@
|
||||
<string name="share_user">Ibahagi %s</string>
|
||||
<string name="mute_user">I-mute %s</string>
|
||||
<string name="unmute_user">I-unmute %s</string>
|
||||
<string name="block_user">Na-Block %s</string>
|
||||
<string name="unblock_user">Na-Unblock %s</string>
|
||||
<string name="report_user">Na-report %s</string>
|
||||
<string name="block_user">I-Block %s</string>
|
||||
<string name="unblock_user">I-Unblock %s</string>
|
||||
<string name="report_user">I-Report %s</string>
|
||||
<string name="block_domain">Na-Block %s</string>
|
||||
<string name="unblock_domain">Na-Unblock %s</string>
|
||||
<plurals name="x_posts">
|
||||
@@ -63,7 +66,7 @@
|
||||
<string name="field_label">Label</string>
|
||||
<string name="field_content">Nilalaman</string>
|
||||
<string name="saving">Pag-save…</string>
|
||||
<string name="post_from_user">Post galing %s</string>
|
||||
<string name="post_from_user">Post mula kay %s</string>
|
||||
<string name="poll_option_hint">Pagpipilian %d</string>
|
||||
<plurals name="x_minutes">
|
||||
<item quantity="one">%d minuto</item>
|
||||
@@ -95,7 +98,7 @@
|
||||
<item quantity="other">%d natitirang araw</item>
|
||||
</plurals>
|
||||
<plurals name="x_voters">
|
||||
<item quantity="one">%, d botante</item>
|
||||
<item quantity="one">%,d botante</item>
|
||||
<item quantity="other">%,d botante</item>
|
||||
</plurals>
|
||||
<string name="poll_closed">Sarado</string>
|
||||
@@ -108,20 +111,22 @@
|
||||
<string name="confirm_block_title">I-Block Ang Account</string>
|
||||
<string name="confirm_block_domain_title">I-Block Ang Domain</string>
|
||||
<string name="confirm_block">Kumpirmahin ang pag-block %s</string>
|
||||
<string name="do_block">Block</string>
|
||||
<string name="do_block">I-Block</string>
|
||||
<string name="confirm_unblock_title">I-Unblock ang Account</string>
|
||||
<string name="confirm_unblock_domain_title">I-Unblock ang Domain</string>
|
||||
<string name="confirm_unblock">Kumpirmahin ang pag-unblock%s</string>
|
||||
<string name="do_unblock">Unblock</string>
|
||||
<string name="do_unblock">I-Unblock</string>
|
||||
<string name="button_muted">Naka-mute</string>
|
||||
<string name="button_blocked">Na-block</string>
|
||||
<string name="action_vote">Bumoto</string>
|
||||
<string name="tap_to_reveal">I-Tap para ipakita</string>
|
||||
<string name="tap_to_reveal">I-Tap para makita</string>
|
||||
<string name="delete">Tanggalin</string>
|
||||
<string name="confirm_delete_title">Burahin ang Post</string>
|
||||
<string name="confirm_delete">Sigurado ka bang gusto mong burahin ang post na ito?</string>
|
||||
<string name="deleting">Pagtanggal…</string>
|
||||
<string name="notification_channel_audio_player">Pag-playback ng Audio</string>
|
||||
<string name="play">I-play</string>
|
||||
<string name="pause">I-Pause</string>
|
||||
<string name="log_out">Mag-Sign out</string>
|
||||
<string name="add_account">Magdagdag ng account</string>
|
||||
<string name="search_hint">Maghanap</string>
|
||||
@@ -138,7 +143,7 @@
|
||||
<item quantity="one">Tinalakay %d oras</item>
|
||||
<item quantity="other">Tinalakay %d oras</item>
|
||||
</plurals>
|
||||
<string name="report_title">Na-report %s</string>
|
||||
<string name="report_title">I-Report %s</string>
|
||||
<string name="report_choose_reason">Ano ang mali sa post na ito?</string>
|
||||
<string name="report_choose_reason_account">Ano ang mali sa %s?</string>
|
||||
<string name="report_choose_reason_subtitle">Piliin ang pinakamahusay na tugma</string>
|
||||
@@ -146,8 +151,8 @@
|
||||
<string name="report_reason_personal_subtitle">Hindi ito isang bagay na nais mong makita</string>
|
||||
<string name="report_reason_spam">Ito ay spam</string>
|
||||
<string name="report_reason_spam_subtitle">Nakakahamak na mga link, pekeng pakikipag-ugnayan, o paulit-ulit na mga tugon</string>
|
||||
<string name="report_reason_violation">Lumalabag ito sa mga patakaran ng server</string>
|
||||
<string name="report_reason_violation_subtitle">Alam mo na nilalabag nito ang mga tiyak na patakaran</string>
|
||||
<string name="report_reason_violation">Lumalabag ito sa mga panuntunan ng server</string>
|
||||
<string name="report_reason_violation_subtitle">Alam mo na lumalabag ito sa mga partikular na panuntunan</string>
|
||||
<string name="report_reason_other">Ito may iba pa</string>
|
||||
<string name="report_reason_other_subtitle">Ang isyu ay hindi umaangkop sa iba pang mga kategorya</string>
|
||||
<string name="report_choose_rule">Aling mga patakaran ang nilabag?</string>
|
||||
@@ -156,10 +161,230 @@
|
||||
<string name="report_choose_posts_subtitle">Piliin ang lahat na aaply</string>
|
||||
<string name="report_comment_title">Mayroon pa bang dapat nating malaman?</string>
|
||||
<string name="report_comment_hint">Mga Karagdagang Komento</string>
|
||||
<string name="sending_report">Pagpapadala ng Ulat…</string>
|
||||
<string name="report_sent_title">Salamat sa pag-uulat, titingnan namin ito.</string>
|
||||
<string name="report_sent_subtitle">Habang sinusuri namin ito, maaari kang gumawa ng aksyon laban sa %s.</string>
|
||||
<string name="unfollow_user">I-Unfollow %s</string>
|
||||
<string name="unfollow">I-unfollow</string>
|
||||
<string name="mute_user_explain">Hindi mo makikita ang kanilang mga post o reblogs sa iyong home feed. Hindi nila malalaman na sila ay na-mute.</string>
|
||||
<string name="block_user_explain">Hindi na nila magagawang sundin o makita ang iyong mga post, ngunit maaari nilang makita kung na-block sila.</string>
|
||||
<string name="report_personal_title">Ayaw mong makita ito?</string>
|
||||
<string name="report_personal_subtitle">Kapag nakakita ka ng mga bagay na hindi mo gusto sa Mastodon, maaari mong alisin ang tao mula sa iyong karanasan.</string>
|
||||
<string name="back">Bumalik</string>
|
||||
<string name="instance_catalog_title">Ang Mastodon ay gawa sa mga user sa iba\'t ibang mga server.</string>
|
||||
<string name="instance_catalog_subtitle">Pumili ng server batay sa iyong mga interes, rehiyon, o isang pangkalahatang layunin. Maaari ka pa ring kumonekta sa lahat, anuman ang server.</string>
|
||||
<string name="edit_photo">i-edit</string>
|
||||
<string name="password_note">Isama ang mga malalaking titik, mga espesyal na character, at mga numero para madagdagan ang lakas ng iyong password.</string>
|
||||
<string name="category_academia">Academia</string>
|
||||
<string name="category_activism">Activism</string>
|
||||
<string name="category_all">Lahat</string>
|
||||
<string name="category_art">Sining</string>
|
||||
<string name="category_food">Pagkain</string>
|
||||
<string name="category_furry">Furry</string>
|
||||
<string name="category_games">Mga Laro</string>
|
||||
<string name="category_general">Pangkalahatan</string>
|
||||
<string name="category_journalism">Pamamahayag</string>
|
||||
<string name="category_lgbt">LGBT</string>
|
||||
<string name="category_music">Musika</string>
|
||||
<string name="category_regional">Rehiyon</string>
|
||||
<string name="category_tech">Tech</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="resend">Muling ipadala</string>
|
||||
<string name="open_email_app">Buksan ang email app</string>
|
||||
<string name="resent_email">Kumpirmasyon ng email napadala</string>
|
||||
<string name="compose_hint">I-Type o i-paste kung ano ang nasa isip mo</string>
|
||||
<string name="content_warning">Babala sa nilalaman</string>
|
||||
<string name="add_image_description">Magdagdag ng paglalarawan ng imahe…</string>
|
||||
<string name="retry_upload">Muling subukan ang pag-upload</string>
|
||||
<string name="edit_image">I-edit ang imahe</string>
|
||||
<string name="save">I-save</string>
|
||||
<string name="add_alt_text">Magdagdag ng teksto ng alt</string>
|
||||
<string name="alt_text_subtitle">Inilalarawan ng Alt text ang iyong mga larawan para sa mga taong may mababa o walang paningin. Subukang isama lamang ang sapat na detalye para maunawaan ang konteksto.</string>
|
||||
<string name="alt_text_hint">hal. Ang aso ay nakatingin sa paligid na kahina-hinala na may makitid na mga mata sa camera.</string>
|
||||
<string name="visibility_public">Publiko</string>
|
||||
<string name="visibility_followers_only">Mga tagasunod lamang</string>
|
||||
<string name="visibility_private">Mga tao lang ang binabanggit ko</string>
|
||||
<string name="search_all">Lahat</string>
|
||||
<string name="search_people">Mga Tao</string>
|
||||
<string name="recent_searches">Kamakailang mga paghahanap</string>
|
||||
<string name="step_x_of_n">Hakbang %1$d of %2$d</string>
|
||||
<string name="skip">Laktawan</string>
|
||||
<string name="notification_type_follow">Mga Bagong Follower</string>
|
||||
<string name="notification_type_favorite">Mga Paborito</string>
|
||||
<string name="notification_type_reblog">Mga Reblog</string>
|
||||
<string name="notification_type_mention">Mga binangit</string>
|
||||
<string name="notification_type_poll">Mga botohan</string>
|
||||
<string name="choose_account">Pumili ng account</string>
|
||||
<string name="err_not_logged_in">Pakiusap mag-log in muna sa Mastodon</string>
|
||||
<plurals name="cant_add_more_than_x_attachments">
|
||||
<item quantity="one">Hindi ka maaaring magdagdag ng higit sa %d media attachment</item>
|
||||
<item quantity="other">Hindi ka maaaring magdagdag ng higit sa %d media attachment</item>
|
||||
</plurals>
|
||||
<string name="media_attachment_unsupported_type">Ang File %s ay hindi suportadong uri</string>
|
||||
<string name="media_attachment_too_big">Ang File %1$s ay lumampas sa limitasyon ng laki ng %2$s MB</string>
|
||||
<string name="settings_theme">Visual na hitsura</string>
|
||||
<string name="theme_auto">Awtomatiko</string>
|
||||
<string name="theme_light">Ilaw</string>
|
||||
<string name="theme_dark">Madilim</string>
|
||||
<string name="theme_true_black">Tunay na maitim na mode</string>
|
||||
<string name="settings_behavior">Pag-uugali</string>
|
||||
<string name="settings_gif">Maglaro ng mga animated na avatar at emoji</string>
|
||||
<string name="settings_custom_tabs">Gumamit ng in-app browser</string>
|
||||
<string name="settings_notifications">Mga abiso</string>
|
||||
<string name="notify_me_when">Abisuhan ako kapag</string>
|
||||
<string name="notify_anyone">sinuman</string>
|
||||
<string name="notify_follower">isang tagasunod</string>
|
||||
<string name="notify_followed">isang taong sinusundan ko</string>
|
||||
<string name="notify_none">walang simuman</string>
|
||||
<string name="notify_favorites">Paborito Ang aking post</string>
|
||||
<string name="notify_follow">Sumusunod sa akin</string>
|
||||
<string name="notify_reblog">Reblogs ang aking post</string>
|
||||
<string name="notify_mention">Banggitin ako</string>
|
||||
<string name="settings_boring">Ang nakababagot na zone</string>
|
||||
<string name="settings_account">Mga setting ng Account</string>
|
||||
<string name="settings_contribute">Mag-ambag sa Mastodon</string>
|
||||
<string name="settings_tos">Mga tuntunin ng serbisyo</string>
|
||||
<string name="settings_privacy_policy">Patakaran sa Pagkapribado</string>
|
||||
<string name="settings_spicy">Ang maanghang na zone</string>
|
||||
<string name="settings_clear_cache">I-Clear ang cache ng media</string>
|
||||
<string name="settings_app_version">Mastodon para sa Android v%1$s (%2$d)</string>
|
||||
<string name="media_cache_cleared">Na-clear ang cache ng Media</string>
|
||||
<string name="confirm_log_out">Sigurado ka bang gusto mong mag-sign out?</string>
|
||||
<string name="sensitive_content">Sensitibong nilalaman</string>
|
||||
<string name="sensitive_content_explain">Minarkahan ng may-akda ang media na ito bilang sensitibo. I-tap para makita.</string>
|
||||
<string name="media_hidden">I-Tap para mapakita</string>
|
||||
<string name="avatar_description">Pumunta sa profile ng %s</string>
|
||||
<string name="more_options">Higit pang mga pagpipilian</string>
|
||||
<string name="reveal_content">Ipakita ang nilalaman</string>
|
||||
<string name="hide_content">Itago ang nilalaman</string>
|
||||
<string name="new_post">Bagong post</string>
|
||||
<string name="button_reply">Tumugon</string>
|
||||
<string name="button_reblog">Reblog</string>
|
||||
<string name="button_favorite">Paborito</string>
|
||||
<string name="button_share">Ibahagi</string>
|
||||
<string name="media_no_description">Media nang walang paglalarawan</string>
|
||||
<string name="add_media">Magdagdag ng media</string>
|
||||
<string name="add_poll">Magdagdag ng botohan</string>
|
||||
<string name="emoji">Emoji</string>
|
||||
<string name="post_visibility">Kakayahang makita ang Post</string>
|
||||
<string name="home_timeline">Timeline ng tahanan</string>
|
||||
<string name="my_profile">Aking profile</string>
|
||||
<string name="media_viewer">Media tagapanood</string>
|
||||
<string name="follow_user">I-follow %s</string>
|
||||
<string name="unfollowed_user">I-Unfollow %s</string>
|
||||
<string name="followed_user">Sinusundan mo ngayon ang %s</string>
|
||||
<string name="open_in_browser">Buksan sa browser</string>
|
||||
<string name="hide_boosts_from_user">Itago ang mga reblog mula sa %s</string>
|
||||
<string name="show_boosts_from_user">Ipakita ang mga reblog mula sa %s</string>
|
||||
<string name="signup_reason_note">Makakatulong ito sa amin na suriin ang iyong aplikasyon.</string>
|
||||
<string name="clear">I-Clear</string>
|
||||
<string name="profile_header">Imahe ng Header</string>
|
||||
<string name="profile_picture">Larawan ng Profile</string>
|
||||
<string name="reorder">Muling ayusin</string>
|
||||
<string name="download">I-download</string>
|
||||
<string name="permission_required">Kinakailangan ang pahintulot</string>
|
||||
<string name="storage_permission_to_download">Ang app ay nangangailangan ng access sa iyong storage para i-save ang file na ito.</string>
|
||||
<string name="open_settings">Buksan ang mga setting</string>
|
||||
<string name="error_saving_file">Error sa pag-save ng file</string>
|
||||
<string name="file_saved">Nai-save ang File</string>
|
||||
<string name="downloading">Nagda-download…</string>
|
||||
<string name="no_app_to_handle_action">Walang app para mahawakan ang pagkilos na ito</string>
|
||||
<string name="local_timeline">Komunidad</string>
|
||||
<string name="trending_posts_info_banner">Ito ang mga post na nakakakuha ng traksyon sa iyong sulok ng Mastodon.</string>
|
||||
<string name="trending_hashtags_info_banner">Ito ang mga hashtags na nakakakuha ng traksyon sa iyong sulok ng Mastodon.</string>
|
||||
<string name="trending_links_info_banner">Ito ang mga kuwento ng balita na ibinabahagi ang pinaka sa iyong sulok ng Mastodon.</string>
|
||||
<string name="local_timeline_info_banner">Ito ang pinakahuling mga post ng mga taong gumagamit ng parehong Mastodon server tulad mo.</string>
|
||||
<string name="dismiss">I-dismiss</string>
|
||||
<string name="see_new_posts">Tingnan ang mga bagong post</string>
|
||||
<string name="load_missing_posts">Mag-Load ng nawawalang mga post</string>
|
||||
<string name="follow_back">Sundan Pabalik</string>
|
||||
<string name="button_follow_pending">Nakabinbin</string>
|
||||
<string name="follows_you">Sinundan ka</string>
|
||||
<string name="manually_approves_followers">Manu-manong aprubahan ang mga tagasunod</string>
|
||||
<string name="current_account">Kasalukuyang account</string>
|
||||
<string name="log_out_account">Mag-Log out %s</string>
|
||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||
<plurals name="x_followers">
|
||||
<item quantity="one">%,d tagasunod</item>
|
||||
<item quantity="other">%,d tagasunod</item>
|
||||
</plurals>
|
||||
<plurals name="x_following">
|
||||
<item quantity="one">%, d Sumusunod</item>
|
||||
<item quantity="other">%, d Sumusunod</item>
|
||||
</plurals>
|
||||
<plurals name="x_favorites">
|
||||
<item quantity="one">%, d Paborito</item>
|
||||
<item quantity="other">%, d paborito</item>
|
||||
</plurals>
|
||||
<plurals name="x_reblogs">
|
||||
<item quantity="one">%, d reblog</item>
|
||||
<item quantity="other">%, d reblog</item>
|
||||
</plurals>
|
||||
<string name="timestamp_via_app">%1$s sa pamamagitan ng %2$s</string>
|
||||
<string name="time_now">ngayon</string>
|
||||
<string name="post_info_reblogs">Mga Reblog</string>
|
||||
<string name="post_info_favorites">Mga Paborito</string>
|
||||
<string name="edit_history">I-Edit ang kasaysayan</string>
|
||||
<string name="last_edit_at_x">Huling edit %s</string>
|
||||
<string name="time_just_now">ngayon lang</string>
|
||||
<plurals name="x_seconds_ago">
|
||||
<item quantity="one">%d segundo ang nakalipas</item>
|
||||
<item quantity="other">%d segundo ang nakalipas</item>
|
||||
</plurals>
|
||||
<plurals name="x_minutes_ago">
|
||||
<item quantity="one">%d minuto ang nakalipas</item>
|
||||
<item quantity="other">%d minuto ang nakalipas</item>
|
||||
</plurals>
|
||||
<string name="edited_timestamp">edited %s</string>
|
||||
<string name="edit_original_post">Orihinal na post</string>
|
||||
<string name="edit_text_edited">Na-edit ang teksto</string>
|
||||
<string name="edit_spoiler_added">Idinagdag ang babala ng nilalaman</string>
|
||||
<string name="edit_spoiler_edited">Na-edit ang babala ng nilalaman</string>
|
||||
<string name="edit_spoiler_removed">Inalis ang babala ng nilalaman</string>
|
||||
<string name="edit_poll_added">Ang Poll ay nadagdag</string>
|
||||
<string name="edit_poll_edited">Na-edit ang Poll</string>
|
||||
<string name="edit_poll_removed">Inalis ang Poll</string>
|
||||
<string name="edit_media_added">Idinagdag ang Media</string>
|
||||
<string name="edit_media_removed">Inalis ang Media</string>
|
||||
<string name="edit_media_reordered">Muling inayos ng Media</string>
|
||||
<string name="edit_marked_sensitive">Minarkahang sensitibo</string>
|
||||
<string name="edit_marked_not_sensitive">Minarkahan hindi sensitibo</string>
|
||||
<string name="edit_multiple_changed">Na-edit ang Post</string>
|
||||
<string name="edit">I-edit</string>
|
||||
<string name="discard_changes">Baliwalain ang mga pagbabago?</string>
|
||||
<string name="upload_failed">Nabigo ang pag-Upload</string>
|
||||
<string name="file_size_bytes">%d bytes</string>
|
||||
<string name="file_size_kb">%.2f KB</string>
|
||||
<string name="file_size_mb">%.2f MB</string>
|
||||
<string name="file_size_gb">%.2f GB</string>
|
||||
<string name="file_upload_progress">%1$s of %2$s</string>
|
||||
<string name="file_upload_time_remaining">%s ang natitira</string>
|
||||
<string name="upload_error_connection_lost">Nawala ang koneksyon ng iyong device sa internet</string>
|
||||
<string name="upload_processing">Pagproseso…</string>
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<string name="update_available">Ang Mastodon para sa Android %s ay handa nang i-download.</string>
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<string name="update_ready">Ang Mastodon para sa Android %s ay nai-download at handa nang mai-install.</string>
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">I-Download (%s)</string>
|
||||
<string name="install_update">I-install</string>
|
||||
<string name="i_agree">Sang-ayon ako</string>
|
||||
<string name="empty_list">Walang laman ang listahang ito</string>
|
||||
<string name="instance_signup_closed">Ang server na ito ay hindi tumatanggap ng mga bagong pagrerehistro.</string>
|
||||
<string name="text_copied">Kinopya sa clipboard</string>
|
||||
<string name="add_bookmark">Bookmark</string>
|
||||
<string name="remove_bookmark">Alisin ang bookmark</string>
|
||||
<string name="bookmarks">Mga bookmark</string>
|
||||
<string name="your_favorites">Ang Iyong Mga Paborito</string>
|
||||
<string name="login_title">Maligayang pagbalik,</string>
|
||||
<string name="login_subtitle">Mag-Log in gamit ang server kung saan mo nilikha ang iyong account.</string>
|
||||
<string name="server_url">Ang URL ng server</string>
|
||||
<string name="welcome_page1_text">Isipin na mayroon kang isang email address na nagtatapos sa @example. com. \n \nMaaari ka pa ring magpadala at tumanggap ng mga email mula sa sinuman, kahit na ang kanilang email ay nagtatapos sa @gmail.com o @icloud.com o @example.com.</string>
|
||||
<string name="welcome_page2_title">Mastodon ay tulad na.</string>
|
||||
<string name="welcome_page2_text">Ang iyong hawakan ay maaaring @gothgirl654@example.social, ngunit maaari mo pa ring sundin, reblog, at makipag-chat sa @fallout5ever@example.online.</string>
|
||||
<string name="welcome_page3_title">Paano ako pumili ng server?</string>
|
||||
<string name="welcome_page3_text">Ang iba \'t ibang mga tao ay pumili ng iba\' t ibang mga server para sa anumang bilang ng mga kadahilanan. sining.ang halimbawa ay isang magandang lugar para sa mga artista, habang ang glasgow.halimbawa ay maaaring maging isang mahusay na pick para sa Scots.\n \nhindi ka maaaring magkamali sa alinman sa aming mga inirekumendang server, kaya anuman ang pipiliin mo (o kung ipinasok mo ang iyong sarili sa search bar ng server), hindi ka makaligtaan ng isang matalo kahit saan.</string>
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Premiers pas</string>
|
||||
<string name="get_started">Créer un compte</string>
|
||||
<string name="already_have_account">J\'ai déjà un compte</string>
|
||||
<string name="log_in">Se connecter</string>
|
||||
<string name="next">Suivant</string>
|
||||
<string name="loading_instance">Récupération des informations serveur…</string>
|
||||
@@ -172,15 +173,15 @@
|
||||
<string name="back">Retour</string>
|
||||
<string name="instance_catalog_title">Mastodon est composé d’utilisateurs sur différents serveurs.</string>
|
||||
<string name="instance_catalog_subtitle">Choisissez un serveur en fonction de vos intérêts, de votre région ou alors rejoignez un serveur général. Vous pouvez toujours vous connecter avec tout le monde, quel que soit le serveur.</string>
|
||||
<string name="search_communities">Rechercher des serveurs ou entrer une URL</string>
|
||||
<string name="instance_rules_title">Quelques règles de base</string>
|
||||
<string name="instance_rules_subtitle">Prenez une minute pour revoir les règles définies et appliquées par les administrateurs de %s.</string>
|
||||
<string name="signup_title">Mettons les choses en place pour %s</string>
|
||||
<string name="search_communities">Nom ou URL du serveur</string>
|
||||
<string name="instance_rules_title">Règles du serveur</string>
|
||||
<string name="signup_title">Créer un compte</string>
|
||||
<string name="edit_photo">modifier</string>
|
||||
<string name="display_name">nom affiché</string>
|
||||
<string name="username">nom d’utilisateur</string>
|
||||
<string name="email">courriel</string>
|
||||
<string name="password">mot de passe</string>
|
||||
<string name="display_name">Nom</string>
|
||||
<string name="username">Nom d’utilisateur</string>
|
||||
<string name="email">E-mail</string>
|
||||
<string name="password">Mot de passe</string>
|
||||
<string name="confirm_password">Confirmez le mot de passe</string>
|
||||
<string name="password_note">Inclure les lettres majuscules, les caractères spéciaux et les chiffres pour augmenter la force de votre mot de passe.</string>
|
||||
<string name="category_academia">Universitaire</string>
|
||||
<string name="category_activism">Activisme</string>
|
||||
@@ -195,8 +196,9 @@
|
||||
<string name="category_music">Musique</string>
|
||||
<string name="category_regional">Régional</string>
|
||||
<string name="category_tech">Technologie</string>
|
||||
<string name="confirm_email_title">Une dernière chose</string>
|
||||
<string name="confirm_email_subtitle">Appuyez sur le lien que nous vous avons envoyé par courriel pour vérifier votre compte.</string>
|
||||
<string name="confirm_email_title">Consultez votre boîte de réception</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="confirm_email_didnt_get">Vous n\'avez pas reçu de lien ?</string>
|
||||
<string name="resend">Renvoyer</string>
|
||||
<string name="open_email_app">Ouvrir l’application courriel</string>
|
||||
<string name="resent_email">Courriel de confirmation envoyé</string>
|
||||
@@ -284,7 +286,7 @@
|
||||
<string name="open_in_browser">Ouvrir dans le navigateur</string>
|
||||
<string name="hide_boosts_from_user">Masquer les partages de %s</string>
|
||||
<string name="show_boosts_from_user">Afficher les partages de %s</string>
|
||||
<string name="signup_reason">pourquoi voulez-vous vous inscrire ?</string>
|
||||
<string name="signup_reason">Pourquoi voulez-vous vous inscrire ?</string>
|
||||
<string name="signup_reason_note">Cela nous aidera à examiner votre demande.</string>
|
||||
<string name="clear">Effacer</string>
|
||||
<string name="profile_header">Image d’en-tête</string>
|
||||
@@ -377,17 +379,45 @@
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">Téléchargement (%s)</string>
|
||||
<string name="install_update">Installer</string>
|
||||
<string name="privacy_policy_title">Mastodon et votre vie privée</string>
|
||||
<string name="privacy_policy_subtitle">Bien que l’application Mastodon ne collecte aucune donnée, le serveur auquel vous vous inscrivez peut avoir une politique différente. Prenez une minute pour examiner et accepter la politique de confidentialité de l’application Mastodon ainsi que celle de votre serveur.</string>
|
||||
<string name="privacy_policy_title">Votre Confidentialité</string>
|
||||
<string name="i_agree">J’accepte</string>
|
||||
<string name="empty_list">Cette liste est vide</string>
|
||||
<string name="instance_signup_closed">Ce serveur n\'accepte pas les nouvelles inscriptions.</string>
|
||||
<string name="text_copied">Copié dans le presse-papier</string>
|
||||
<string name="add_bookmark">Favoris</string>
|
||||
<string name="add_bookmark">Ajouter aux marque-pages</string>
|
||||
<string name="remove_bookmark">Retirer des favoris</string>
|
||||
<string name="bookmarks">Favoris</string>
|
||||
<string name="bookmarks">Marque-pages</string>
|
||||
<string name="your_favorites">Vos favoris</string>
|
||||
<string name="login_title">Content de vous revoir</string>
|
||||
<string name="login_subtitle">Connectez-vous avec le serveur sur lequel vous avez créé votre compte.</string>
|
||||
<string name="server_url">URL du serveur</string>
|
||||
<string name="welcome_page1_title">Qu’est-ce que Mastodon ?</string>
|
||||
<string name="welcome_page1_text">Imaginez que vous ayez une adresse e-mail qui se termine par @example.com.\n\nVous pouvez toujours envoyer et recevoir des e-mails de n\'importe qui, même si leur e-mail se termine par @gmail.com ou @icloud.com ou @example.com.</string>
|
||||
<string name="welcome_page2_title">Mastodon est comme ça.</string>
|
||||
<string name="welcome_page2_text">Votre identifiant devrait être @gothgirl654@example.social, mais vous pouvez toujours suivre, rebloguer et discuter avec @fallout5ever@example.online.</string>
|
||||
<string name="welcome_page3_title">Comment choisir un serveur?</string>
|
||||
<string name="welcome_page3_text">Différentes personnes choisissent différents serveurs pour un certain nombre de raisons. art.example est un lieu idéal pour les artistes, tandis que glasgow.example pourrait être un bon choix pour les Écossais.\n\nVous ne pouvez pas vous tromper avec l\'un de nos serveurs recommandés et ainsi, quel que soit celui que vous choisissez (ou si vous entrez le vôtre dans la barre de recherche du serveur), vous ne manquerez jamais une info quelque part.</string>
|
||||
<string name="server_filter_any_language">N\'importe quelle langue</string>
|
||||
<string name="server_filter_instant_signup">Inscription instantanée</string>
|
||||
<string name="server_filter_manual_review">Approbation manuelle</string>
|
||||
<string name="server_filter_region_europe">Europe</string>
|
||||
<string name="server_filter_region_north_america">Amérique du Nord</string>
|
||||
<string name="server_filter_region_south_america">Amérique du Sud</string>
|
||||
<string name="server_filter_region_africa">Afrique</string>
|
||||
<string name="server_filter_region_asia">Asie</string>
|
||||
<string name="server_filter_region_oceania">Océanie</string>
|
||||
<string name="not_accepting_new_members">N\'accepte pas de nouveaux membres</string>
|
||||
<string name="category_special_interests">Intérêt particulier</string>
|
||||
<string name="signup_passwords_dont_match">Les mots de passe ne correspondent pas</string>
|
||||
<string name="pick_server_for_me">Choisir pour moi</string>
|
||||
<string name="profile_add_row">Ajouter une ligne</string>
|
||||
<string name="profile_setup">Configuration du profil</string>
|
||||
<string name="follow_all">Tout suivre</string>
|
||||
<string name="server_rules_disagree">Refuser</string>
|
||||
<string name="privacy_policy_explanation">TL;DR : Nous ne collectons ni ne traitons rien.</string>
|
||||
<!-- %s is server domain -->
|
||||
<string name="server_policy_disagree">En désaccord avec %s</string>
|
||||
<string name="profile_bio">Biographie</string>
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
<string name="sk_post_edited">édité</string>
|
||||
<string name="sk_edit_timeline">Modifier la timeline</string>
|
||||
<string name="sk_notify_update">Modifie un article reposté</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Désactiver le rappel de texte alternatif</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Désactiver le rappel pour ajouter du texte alternatif</string>
|
||||
<string name="sk_notification_type_update">Messages modifiés</string>
|
||||
<string name="sk_icon_code">Code</string>
|
||||
<string name="sk_icon_city">Ville</string>
|
||||
@@ -249,4 +249,15 @@
|
||||
<string name="sk_settings_see_new_posts_button">Bouton \"Afficher les nouveaux messages\"</string>
|
||||
<string name="sk_instance_features">Fonctionnalités des instances</string>
|
||||
<string name="sk_settings_local_only_explanation">Votre instance locale doit prendre en charge la publication locale uniquement pour que cela fonctionne. La plupart des versions modifiées de Mastodon le font, mais pas Mastodon.</string>
|
||||
<string name="sk_notify_poll_results">Résultats du sondage</string>
|
||||
<string name="sk_settings_server_version">Version du serveur : %s</string>
|
||||
<string name="sk_expand">Développer</string>
|
||||
<string name="sk_collapse">Réduire</string>
|
||||
<string name="sk_settings_collapse_long_posts">Réduire les messages très longs</string>
|
||||
<string name="sk_settings_prefix_reply_cw_with_re">Préfixe \"re :\" lors d\'une réponse avec AC</string>
|
||||
<string name="sk_filtered">Filtré : %s</string>
|
||||
<string name="sk_unfinished_attachments">Corriger les pièces jointes \?</string>
|
||||
<string name="sk_unfinished_attachments_message">Certaines pièces jointes n\'ont pas fini de se télécharger.</string>
|
||||
<string name="sk_spectator_mode">Mode spectateur</string>
|
||||
<string name="sk_settings_hide_interaction">Masquer les boutons d\'interaction</string>
|
||||
</resources>
|
||||
@@ -1,7 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- %s is the email address -->
|
||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is file size -->
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Dèan toiseach-tòiseachaidh</string>
|
||||
<string name="log_in">Clàraich a-steach</string>
|
||||
<string name="next">Air adhart</string>
|
||||
<string name="error">Mearachd</string>
|
||||
@@ -198,15 +197,7 @@
|
||||
<string name="back">Air ais</string>
|
||||
<string name="instance_catalog_title">Tha cleachdaichean Mhastodon air iomadh frithealaiche eadar-dhealaichte.</string>
|
||||
<string name="instance_catalog_subtitle">Tagh frithealaiche stèidhichte air d’ ùidhean, air far a bheil thu no fear coitcheann. ’S urrainn dhut conaltradh leis a h-uile duine fhathast ge b’ e am frithealaiche.</string>
|
||||
<string name="search_communities">Lorg frithealaiche no cuir a-steach URL</string>
|
||||
<string name="instance_rules_title">Riaghailtean bunasach</string>
|
||||
<string name="instance_rules_subtitle">Gabh mionaid a’ toirt uil air na riaghailtean a shuidhich ’s a dh’èignicheas rianairean %s.</string>
|
||||
<string name="signup_title">Suidhicheamaid %s dhut</string>
|
||||
<string name="edit_photo">deasaich</string>
|
||||
<string name="display_name">ainm-taisbeanaidh</string>
|
||||
<string name="username">ainm-cleachdaiche</string>
|
||||
<string name="email">post-d</string>
|
||||
<string name="password">facal-faire</string>
|
||||
<string name="password_note">Gabh a-steach litrichean mòra, caractaran sònraichte agus àireamhan airson am facal-faire agad a dhèanamh nas treasa.</string>
|
||||
<string name="category_academia">Sgoilearachd</string>
|
||||
<string name="category_activism">Iomairteachd</string>
|
||||
@@ -221,8 +212,7 @@
|
||||
<string name="category_music">Ceòl</string>
|
||||
<string name="category_regional">Sgìreil</string>
|
||||
<string name="category_tech">Teicneolas</string>
|
||||
<string name="confirm_email_title">Aon rud eile</string>
|
||||
<string name="confirm_email_subtitle">Thoir gnogag air a’ cheangal a chuir sinn thugad air a’ phost-d airson an cunntas agad a dhearbhadh.</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="resend">Cuir a-rithist</string>
|
||||
<string name="open_email_app">Fosgail aplacaid a’ phuist-d</string>
|
||||
<string name="resent_email">Chaidh post-d dearbhaidh a chur</string>
|
||||
@@ -312,7 +302,6 @@
|
||||
<string name="open_in_browser">Fosgail sa bhrabhsair</string>
|
||||
<string name="hide_boosts_from_user">Falaich na brosnachaidhean o %s</string>
|
||||
<string name="show_boosts_from_user">Seall na brosnachaidhean o %s</string>
|
||||
<string name="signup_reason">carson a bu mhiann leat ballrachd fhaighinn?</string>
|
||||
<string name="signup_reason_note">Bidh e nas fhasa dhuinn lèirmheas a dhèanamh air d’ iarrtas.</string>
|
||||
<string name="clear">Falamhaich</string>
|
||||
<string name="profile_header">Dealbh a’ bhanna-chinn</string>
|
||||
@@ -417,8 +406,9 @@
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">Luchdaich a-nuas (%s)</string>
|
||||
<string name="install_update">Stàlaich</string>
|
||||
<string name="privacy_policy_title">Mastodon is do phrìobhaideachd</string>
|
||||
<string name="privacy_policy_subtitle">Ged nach cruinnich aplacaid Mastodon fhèin dàta sam bith, dh’fhaoidte gu bheil poileasaidh eadar-dhealaichte aig an fhrithealaiche leis a chlàraicheas tu. Gabh mionaid a’ toirt sùil air ’s ag aontachadh ri poileasaidh prìobhaideachd aplacaid Mastodon agus poileasaidh prìobhaideachd an fhrithealaiche agad.</string>
|
||||
<string name="i_agree">Gabhaidh mi ris</string>
|
||||
<string name="empty_list">Tha an liosta seo falamh</string>
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Crear conta</string>
|
||||
<string name="already_have_account">Xa teño unha conta</string>
|
||||
<string name="log_in">Acceder</string>
|
||||
<string name="next">Seguinte</string>
|
||||
<string name="loading_instance">Obtendo info do servidor…</string>
|
||||
<string name="error">Erro</string>
|
||||
<string name="not_a_mastodon_instance">%s non semella ser un servidor Mastodon.</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="preparing_auth">Preparándose para a autenticación…</string>
|
||||
<string name="finishing_auth">Rematando coa autenticación…</string>
|
||||
@@ -170,15 +173,7 @@
|
||||
<string name="back">Volver</string>
|
||||
<string name="instance_catalog_title">Mastodon fórmano as persoas das diferentes comunidades.</string>
|
||||
<string name="instance_catalog_subtitle">Elixe unha comunidade en función dos teus intereses, rexión ou de propósito xeral. Poderás conectar con calquera outra usuaria igualmente, independentemente da comunidade que elixas.</string>
|
||||
<string name="search_communities">Busca un servidor ou escribe URL</string>
|
||||
<string name="instance_rules_title">Algunhas regras básicas</string>
|
||||
<string name="instance_rules_subtitle">Adica un minuto a revisar as regras establecidas pola administración de %s.</string>
|
||||
<string name="signup_title">Imos crear a túa conta en %s</string>
|
||||
<string name="edit_photo">editar</string>
|
||||
<string name="display_name">nome público</string>
|
||||
<string name="username">identificador</string>
|
||||
<string name="email">email</string>
|
||||
<string name="password">contrasinal</string>
|
||||
<string name="password_note">Inclúe letras maiúsculas, caracteres especiais e números para aumentar a calidade do contrasinal.</string>
|
||||
<string name="category_academia">Academia</string>
|
||||
<string name="category_activism">Activismo</string>
|
||||
@@ -193,8 +188,7 @@
|
||||
<string name="category_music">Música</string>
|
||||
<string name="category_regional">Rexional</string>
|
||||
<string name="category_tech">Tecnoloxía</string>
|
||||
<string name="confirm_email_title">O último detalle</string>
|
||||
<string name="confirm_email_subtitle">Preme na ligazón que che enviamos ao email para verificar a conta.</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="resend">Reenviar</string>
|
||||
<string name="open_email_app">Abrir app de email</string>
|
||||
<string name="resent_email">Enviado o email de confirmación</string>
|
||||
@@ -282,7 +276,6 @@
|
||||
<string name="open_in_browser">Abrir nun navegador</string>
|
||||
<string name="hide_boosts_from_user">Agochar promocións de @%s</string>
|
||||
<string name="show_boosts_from_user">Mostrar promocións de %s</string>
|
||||
<string name="signup_reason">por que queres unirte?</string>
|
||||
<string name="signup_reason_note">Esto axudaranos a revisar a tua solicitude.</string>
|
||||
<string name="clear">Limpar</string>
|
||||
<string name="profile_header">Imaxe de cabeceira</string>
|
||||
@@ -375,8 +368,6 @@
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">Descargar (%s)</string>
|
||||
<string name="install_update">Instalar</string>
|
||||
<string name="privacy_policy_title">Mastodon e a túa privacidade</string>
|
||||
<string name="privacy_policy_subtitle">Aínda que a app Mastodon non recolle ningún dato, o servidor no que abriches a conta podería ter unha política diferente. Toma un intre para revisar e aceptar a política de privacidade da app Mastodon e a política de privacidade do teu servidor.</string>
|
||||
<string name="i_agree">Acepto</string>
|
||||
<string name="empty_list">A lista está baleira</string>
|
||||
<string name="instance_signup_closed">O servidor non acepta novos rexistros.</string>
|
||||
@@ -385,4 +376,15 @@
|
||||
<string name="remove_bookmark">Eliminar marcador</string>
|
||||
<string name="bookmarks">Marcadores</string>
|
||||
<string name="your_favorites">Publicacións Favoritas</string>
|
||||
<string name="login_title">Benvida outra vez</string>
|
||||
<string name="login_subtitle">Accede co servidor onde creaches a conta.</string>
|
||||
<string name="server_url">URL do servidor</string>
|
||||
<string name="welcome_page1_text">Imaxina que tes un enderezo de email que remata con @exemplo.com.\n\nPodes recibir e enviar mensaxes con calquera persoa, incluso se o seu email remata en @gmail.com ou @icloud.com ou @exemplo.com.</string>
|
||||
<string name="welcome_page2_title">Mastodon é o mesmo.</string>
|
||||
<string name="welcome_page2_text">O teu identificador pode ser @rula654@exemplo.social, pero podes seguir, promover e conversar con @gz4libre@exemplo.online.</string>
|
||||
<string name="welcome_page3_title">Como elexir un servidor?</string>
|
||||
<string name="welcome_page3_text">Pode haber moitas razóns para elexir un servidor. art.exemplo é un bo lugar para artistas, mentras glasgow.exemplo podería ser axeitado para persoas escocesas.\n\nNon terás problemas con calquera dos servidores recomendados, así que independentemente do que elixas (ou se escribes o teu propio na caixa de busca) non botarás nada en falta.</string>
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -2,17 +2,17 @@
|
||||
<resources>
|
||||
<string name="sk_app_name">Megalodon</string>
|
||||
<string name="sk_delete_and_redraft">Eliminar e rescribir</string>
|
||||
<string name="sk_confirm_delete_and_redraft">¿Tes a certeza de querer eliminar e rescribir esta publicación\?</string>
|
||||
<string name="sk_confirm_delete_and_redraft">Tes a certeza de querer eliminar e rescribir esta publicación\?</string>
|
||||
<string name="sk_pinned_posts">Fixado</string>
|
||||
<string name="sk_confirm_delete_and_redraft_title">Elimina e rescribe a Publicación</string>
|
||||
<string name="sk_pin_post">Fixar no perfil</string>
|
||||
<string name="sk_confirm_pin_post_title">Fixar publicación ao perfil</string>
|
||||
<string name="sk_confirm_pin_post">¿Queres fixar esta publicación ao teu perfil\?</string>
|
||||
<string name="sk_confirm_pin_post">Queres fixar esta publicación ao teu perfil\?</string>
|
||||
<string name="sk_pinning">Fixando a publicación…</string>
|
||||
<string name="sk_unpin_post">Desanclar do perfil</string>
|
||||
<string name="sk_confirm_unpin_post_title">Desanclar publicación do perfil</string>
|
||||
<string name="sk_confirm_unpin_post">¿Tes a certeza de querer desanclar esta publicación\?</string>
|
||||
<string name="sk_unpinning">Desanclando publicación…</string>
|
||||
<string name="sk_unpin_post">Despegar do perfil</string>
|
||||
<string name="sk_confirm_unpin_post_title">Despegar publicación do perfil</string>
|
||||
<string name="sk_confirm_unpin_post">Tes a certeza de querer despegar esta publicación\?</string>
|
||||
<string name="sk_unpinning">Despegando publicación…</string>
|
||||
<string name="sk_image_description">Descrición da imaxe</string>
|
||||
<string name="sk_lists_with_user">Listas con %s</string>
|
||||
<string name="sk_visibility_unlisted">Non listado</string>
|
||||
@@ -66,7 +66,7 @@
|
||||
<string name="sk_clear_recent_languages">Quitar tódolos idiomas usados recentemente</string>
|
||||
<string name="sk_tabs_disable_swipe">Desactivar desprazamento entre lapelas</string>
|
||||
<string name="sk_settings_show_federated_timeline">Mostrar cronoloxía federada</string>
|
||||
<string name="sk_confirm_clear_recent_languages">¿Tes a certeza de querer limpar a lista de idioma usados recentemente\?</string>
|
||||
<string name="sk_confirm_clear_recent_languages">Tes a certeza de querer limpar a lista de idioma usados recentemente\?</string>
|
||||
<string name="sk_notify_posts">Notificación de publicacións</string>
|
||||
<string name="sk_welcome_text">¡A quenlla saúdate! Para comezar, escribe aquí o enderezo de internet da túa instancia.</string>
|
||||
<string name="sk_timeline_home">Inicio</string>
|
||||
@@ -134,7 +134,7 @@
|
||||
<string name="sk_do_remove_follower">Eliminar</string>
|
||||
<string name="sk_remove_follower_success">Agora esa conta xa non te segue</string>
|
||||
<string name="sk_changelog">Lista de cambios</string>
|
||||
<string name="sk_settings_translation_availability_note_available">¡ %s con soporte para tradución!</string>
|
||||
<string name="sk_settings_translation_availability_note_available">%s con soporte para tradución!</string>
|
||||
<string name="sk_hashtags_you_follow">Cancelos que segues</string>
|
||||
<string name="sk_forward_report_to">Reenviar a %s</string>
|
||||
<string name="sk_confirm_delete_draft">Tes a certeza de querer eliminar este borrador\?</string>
|
||||
@@ -144,15 +144,15 @@
|
||||
<string name="sk_delete_list_confirm">Tes a certeza de querer eliminar a lista “%s”\?</string>
|
||||
<string name="sk_delete_notification">Borrar notificación</string>
|
||||
<string name="sk_delete_notification_confirm_action">Borrar notificación</string>
|
||||
<string name="sk_delete_notification_confirm">¿Tes a certeza de querer borrar esta notificación\?</string>
|
||||
<string name="sk_delete_notification_confirm">Tes a certeza de querer borrar esta notificación\?</string>
|
||||
<string name="sk_clear_all_notifications">Borrar tódalas notificacións</string>
|
||||
<string name="sk_clear_all_notifications_confirm_action">Borrar todo</string>
|
||||
<string name="sk_clear_all_notifications_confirm">¿Seguro que queres borrar tódalas notificacións\?</string>
|
||||
<string name="sk_clear_all_notifications_confirm">Seguro que queres borrar tódalas notificacións\?</string>
|
||||
<string name="sk_icon_pin">Pincho</string>
|
||||
<string name="sk_alt_text_missing">Alomenos un dos adxuntos non ten descrición.</string>
|
||||
<string name="sk_alt_text_missing_title">Falta o texto descritivo</string>
|
||||
<string name="sk_publish_anyway">Publicar igualmente</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Desactivar aviso de texto alternativo</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Desactivar recordatorio alt text</string>
|
||||
<string name="sk_edit_timelines">Editar cronoloxías</string>
|
||||
<string name="sk_alt_button">ALT</string>
|
||||
<string name="sk_post_edited">editada</string>
|
||||
@@ -241,11 +241,22 @@
|
||||
<string name="sk_instance_features">Características da instancia</string>
|
||||
<string name="sk_settings_support_local_only">O servidor soporta publicacións só locais</string>
|
||||
<string name="sk_settings_local_only_explanation">A túa instancia de inicio debe soportar publicacións só locais para que isto funcione. Moitas versións modificadas de Mastodon fano, pero Mastodon non.</string>
|
||||
<string name="sk_settings_glitch_instance">Modo só local Glitch</string>
|
||||
<string name="sk_settings_glitch_instance">Modo de Glitch Só local</string>
|
||||
<string name="sk_settings_glitch_mode_explanation">Activa isto se a túa instancia local corre en Glitch. Non é necesario para Hometown ou Akkoma.</string>
|
||||
<string name="sk_signed_up">Inscrito</string>
|
||||
<string name="sk_reported">Reportado</string>
|
||||
<string name="sk_sign_ups">Usuarios rexistrándose</string>
|
||||
<string name="sk_sign_ups">Rexistro de usuarias</string>
|
||||
<string name="sk_new_reports">Novos reportes</string>
|
||||
<string name="sk_settings_see_new_posts_button">Botón \"ver novas publicacións\"</string>
|
||||
<string name="sk_settings_server_version">Versión do servidor: %s</string>
|
||||
<string name="sk_notify_poll_results">Resultados da enquisa</string>
|
||||
<string name="sk_collapse">Contraer</string>
|
||||
<string name="sk_unfinished_attachments_message">Algúns arquivos adxuntos aínda non remataron de cargarse.</string>
|
||||
<string name="sk_settings_prefix_reply_cw_with_re">Prefixar a resposta de AC con \"re:\"</string>
|
||||
<string name="sk_filtered">Filtrados: %s</string>
|
||||
<string name="sk_expand">Expandir</string>
|
||||
<string name="sk_settings_collapse_long_posts">Contraer publicacións moi longas</string>
|
||||
<string name="sk_unfinished_attachments">Arranxar arquivos adxuntos\?</string>
|
||||
<string name="sk_spectator_mode">Modo espectador</string>
|
||||
<string name="sk_settings_hide_interaction">Ocultar botóns de interacción</string>
|
||||
</resources>
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">शुरू करें</string>
|
||||
<string name="log_in">लॉग इन करें</string>
|
||||
<string name="next">आगे</string>
|
||||
<string name="ok">ठीक है</string>
|
||||
@@ -38,8 +37,12 @@
|
||||
<string name="for_you">आपके लिए</string>
|
||||
<string name="all_notifications">सभी</string>
|
||||
<string name="mentions">उल्लेख</string>
|
||||
<!-- %s is the email address -->
|
||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is file size -->
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Započni</string>
|
||||
<string name="log_in">Prijavi se</string>
|
||||
<string name="next">Nastavi</string>
|
||||
<string name="error">Pogreška</string>
|
||||
@@ -179,14 +178,7 @@
|
||||
<string name="report_personal_title">Ne želiš vidjeti ovo?</string>
|
||||
<string name="report_personal_subtitle">Kada vidiš nešto što ti se ne sviđa na Mastodonu, možeš ukloniti osobu iz svog iskustva.</string>
|
||||
<string name="back">Natrag</string>
|
||||
<string name="instance_rules_title">Neka osnovna pravila</string>
|
||||
<string name="instance_rules_subtitle">Uzmi minutu za čitanje pravila koje provode %s administratori.</string>
|
||||
<string name="signup_title">Hajmo te postaviti na %s</string>
|
||||
<string name="edit_photo">uredi</string>
|
||||
<string name="display_name">prikazano ime</string>
|
||||
<string name="username">korisničko ime</string>
|
||||
<string name="email">e-pošta</string>
|
||||
<string name="password">lozinka</string>
|
||||
<string name="password_note">Upotrijebi velika slova, posebne znakove i brojeve kako bi podigao jačinu tvoje lozinke.</string>
|
||||
<string name="category_academia">Akademija</string>
|
||||
<string name="category_activism">Aktivizam</string>
|
||||
@@ -201,8 +193,7 @@
|
||||
<string name="category_music">Glazba</string>
|
||||
<string name="category_regional">Lokalno</string>
|
||||
<string name="category_tech">Tehnologija</string>
|
||||
<string name="confirm_email_title">Još jedna stvar</string>
|
||||
<string name="confirm_email_subtitle">Dodirni vezu koju smo ti poslali e-poštom da potvrdiš svoj račun.</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="resend">Ponovno pošalji</string>
|
||||
<string name="open_email_app">Otvori aplikaciju za e-poštu</string>
|
||||
<string name="resent_email">Poslana je e-mail potvrda</string>
|
||||
@@ -288,7 +279,6 @@
|
||||
<string name="unfollowed_user">Otpratio si %s</string>
|
||||
<string name="followed_user">Sada pratiš %s</string>
|
||||
<string name="open_in_browser">Otvori u pregledniku</string>
|
||||
<string name="signup_reason">zašto se želiš pridružiti?</string>
|
||||
<string name="signup_reason_note">Ovo će nam pomoći da razmotrimo vašu prijavu.</string>
|
||||
<string name="clear">Poništi</string>
|
||||
<string name="profile_header">Slika zaglavlja</string>
|
||||
@@ -306,4 +296,7 @@
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is file size -->
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Kezdjünk bele</string>
|
||||
<string name="get_started">Fiók létrehozása</string>
|
||||
<string name="already_have_account">Már van fiókom</string>
|
||||
<string name="log_in">Bejelentkezés</string>
|
||||
<string name="next">Következő</string>
|
||||
<string name="loading_instance">Kiszolgáló információinak lekérése…</string>
|
||||
<string name="error">Hiba</string>
|
||||
<string name="not_a_mastodon_instance">%s nem néz ki Mastodon kiszolgálónak.</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="preparing_auth">Felkészülés a hitelesítésre…</string>
|
||||
<string name="finishing_auth">Hitelesítés befejezése…</string>
|
||||
<string name="user_boosted">%s reblogolta</string>
|
||||
<string name="user_boosted">%s megtolta</string>
|
||||
<string name="in_reply_to">Válaszolva %s számára</string>
|
||||
<string name="notifications">Értesítések</string>
|
||||
<string name="user_followed_you">követ téged</string>
|
||||
<string name="user_followed_you">bekövetett</string>
|
||||
<string name="user_sent_follow_request">követési kérelmet küldött neked</string>
|
||||
<string name="user_favorited">kedvencnek jelölte a bejegyzésedet</string>
|
||||
<string name="notification_boosted">megtolta a bejegyzésedet</string>
|
||||
@@ -63,7 +66,7 @@
|
||||
<string name="field_label">Címke</string>
|
||||
<string name="field_content">Tartalom</string>
|
||||
<string name="saving">Mentés…</string>
|
||||
<string name="post_from_user">Poszt %s-tól</string>
|
||||
<string name="post_from_user">Poszt tőle: %s</string>
|
||||
<string name="poll_option_hint">%d. opció</string>
|
||||
<plurals name="x_minutes">
|
||||
<item quantity="one">%d perc</item>
|
||||
@@ -78,6 +81,14 @@
|
||||
<item quantity="other">%d nap</item>
|
||||
</plurals>
|
||||
<string name="compose_poll_duration">Időtartam: %s</string>
|
||||
<plurals name="x_seconds_left">
|
||||
<item quantity="one">%d másodperc van hátra</item>
|
||||
<item quantity="other">%d másodperc van hátra</item>
|
||||
</plurals>
|
||||
<plurals name="x_minutes_left">
|
||||
<item quantity="one">%d perc van hátra</item>
|
||||
<item quantity="other">%d perc van hátra</item>
|
||||
</plurals>
|
||||
<plurals name="x_hours_left">
|
||||
<item quantity="one">%d óra van hátra</item>
|
||||
<item quantity="other">%d óra van hátra</item>
|
||||
@@ -162,15 +173,16 @@
|
||||
<string name="back">Vissza</string>
|
||||
<string name="instance_catalog_title">A Mastodon különböző szervereken lévő felhasználókból áll.</string>
|
||||
<string name="instance_catalog_subtitle">Válasszon egy szervert az érdeklődési köre, régiója alapján vagy egy általános célú szervert. A szervertől függetlenül továbbra is mindenkivel kapcsolatba léphetsz.</string>
|
||||
<string name="search_communities">Szerver keresése vagy URL megadása</string>
|
||||
<string name="instance_rules_title">Néhány alapszabály</string>
|
||||
<string name="instance_rules_subtitle">Szánj egy percet a %s adminjai által meghatározott és betartatott szabályok áttekintésére.</string>
|
||||
<string name="signup_title">Állítsuk be a fiókod a %s kiszolgálón</string>
|
||||
<string name="search_communities">Kiszolgáló neve vagy URL</string>
|
||||
<string name="instance_rules_title">Kiszolgáló Szabályai</string>
|
||||
<string name="instance_rules_subtitle">A folytatással beleegyezel, hogy követed a következő szabályokat, melyeket a %s moderatorai állítottak és tartatnak be.</string>
|
||||
<string name="signup_title">Fiók Létrehozása</string>
|
||||
<string name="edit_photo">szerkesztés</string>
|
||||
<string name="display_name">megjelenített név</string>
|
||||
<string name="username">felhasználónév</string>
|
||||
<string name="email">e-mail</string>
|
||||
<string name="password">jelszó</string>
|
||||
<string name="display_name">Név</string>
|
||||
<string name="username">Felhasználónév</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="password">Jelszó</string>
|
||||
<string name="confirm_password">Jelszó megerősítése</string>
|
||||
<string name="password_note">A jelszó erősségének növelése érdekében használjon nagybetűket, speciális karaktereket és számokat.</string>
|
||||
<string name="category_academia">Egyetem/Felsőoktatás</string>
|
||||
<string name="category_activism">Aktivizmus</string>
|
||||
@@ -185,8 +197,10 @@
|
||||
<string name="category_music">Zene</string>
|
||||
<string name="category_regional">Regionális</string>
|
||||
<string name="category_tech">Tech</string>
|
||||
<string name="confirm_email_title">Még egy apróság</string>
|
||||
<string name="confirm_email_subtitle">Kattints a linkre, amit emailben küldtünk, hogy megerősítsd a fiókod.</string>
|
||||
<string name="confirm_email_title">Nézd meg a bejővő emailfiókodat</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="confirm_email_subtitle">Kattints a hivatkozásra, melyet a %s ellenőrzése céljából küldtünk neked. Mi addig itt várunk.</string>
|
||||
<string name="confirm_email_didnt_get">Nem kaptad meg a hivatkozást?</string>
|
||||
<string name="resend">Újraküldés</string>
|
||||
<string name="open_email_app">E-mail alkalmazás megnyitása</string>
|
||||
<string name="resent_email">Megerősítő email elküldve</string>
|
||||
@@ -214,6 +228,10 @@
|
||||
<string name="notification_type_poll">Szavazások</string>
|
||||
<string name="choose_account">Fiók kiválasztása</string>
|
||||
<string name="err_not_logged_in">Először jelentkezz be a Mastodonra</string>
|
||||
<plurals name="cant_add_more_than_x_attachments">
|
||||
<item quantity="one">Nem adhatsz hozzá egynél több csatolmányt</item>
|
||||
<item quantity="other">Nem adhatsz hozzá %d-nél több csatolmányt</item>
|
||||
</plurals>
|
||||
<string name="media_attachment_unsupported_type">%s fájl nem támogatott</string>
|
||||
<string name="media_attachment_too_big">Ez a fájl (%1$s) túllépi a %2$s MB-os feltöltési korlátot</string>
|
||||
<string name="settings_theme">Kinézet</string>
|
||||
@@ -270,7 +288,7 @@
|
||||
<string name="open_in_browser">Megnyitás böngészőben</string>
|
||||
<string name="hide_boosts_from_user">%s megtolásainak elrejtése</string>
|
||||
<string name="show_boosts_from_user">%s megtolásainak mutatása</string>
|
||||
<string name="signup_reason">miért akarsz csatlakozni?</string>
|
||||
<string name="signup_reason">Miért szeretnél csatlakozni?</string>
|
||||
<string name="signup_reason_note">Ez segít nekünk átnézni a jelentkezésedet.</string>
|
||||
<string name="clear">Törlés</string>
|
||||
<string name="profile_header">Fejléc kép</string>
|
||||
@@ -290,7 +308,7 @@
|
||||
<string name="trending_links_info_banner">Ezek azok a sztorik, amiket a legtöbbet osztanak meg a Mastodon-szobádban.</string>
|
||||
<string name="local_timeline_info_banner">Ezek a legújabb posztok ugyanazon a Mastodon szerveren, ahol te is vagy.</string>
|
||||
<string name="dismiss">Elvetés</string>
|
||||
<string name="see_new_posts">Megnézem az új bejegyzéseket</string>
|
||||
<string name="see_new_posts">Új bejegyzések megtekintése</string>
|
||||
<string name="load_missing_posts">Hiányzó bejegyzések betöltése</string>
|
||||
<string name="follow_back">Visszakövetés</string>
|
||||
<string name="button_follow_pending">Függőben</string>
|
||||
@@ -363,8 +381,8 @@
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">(%s) letöltése</string>
|
||||
<string name="install_update">Telepítés</string>
|
||||
<string name="privacy_policy_title">Mastodon és az adatvédelmed</string>
|
||||
<string name="privacy_policy_subtitle">Bár a Mastodon alkalmazás nem gyűjt adatokat, a szerver, amelyen keresztül regisztrálsz, eltérő irányelvekkel rendelkezhet. Szánj egy percet a Mastodon alkalmazás adatvédelmi szabályzatának és a kiszolgáló adatvédelmi szabályzatának áttekintésére és elfogadására.</string>
|
||||
<string name="privacy_policy_title">Személyes Adatbiztonság</string>
|
||||
<string name="privacy_policy_subtitle">Bár a Mastodon app nem gyűjt adatokat, a kiszolgáló, melyen bejelentkezel rendelkezhet más szabályokkal.\n\nHa nem értesz egyet a %s szabályzatával, visszamehetsz és választhatsz egy másik kiszolgálót.</string>
|
||||
<string name="i_agree">Elfogadom</string>
|
||||
<string name="empty_list">A lista üres</string>
|
||||
<string name="instance_signup_closed">Ez a szerver nem fogad új regisztrációkat.</string>
|
||||
@@ -373,4 +391,44 @@
|
||||
<string name="remove_bookmark">Könyvjelző eltávolítása</string>
|
||||
<string name="bookmarks">Könyvjelzők</string>
|
||||
<string name="your_favorites">Kedvencek</string>
|
||||
<string name="login_title">Üdv újra</string>
|
||||
<string name="login_subtitle">Azon a kiszolgálón jelentkezz be, ahol a fiókodat létrehoztad.</string>
|
||||
<string name="server_url">Kiszolgáló URL</string>
|
||||
<string name="welcome_page1_title">Mi a Mastodon?</string>
|
||||
<string name="welcome_page1_text">Képzeld el, hogy az emailcímed @example.com-ra végződik.\n\nEttől még küldhtesz és fogadhatsz emailt bárkitől, akkor is, ha a címük @gmail.com-ra, @icloud.com-ra vagy @example.com-ra végződik.</string>
|
||||
<string name="welcome_page2_title">Ilyen a Mastodon.</string>
|
||||
<string name="welcome_page2_text">Lehet, hogy az azonosítód @gothgirl654@example.social, de ettől még követheted, megtolhatod és csetelhetsz @fallout5ever@example.online-nal.</string>
|
||||
<string name="welcome_page3_title">Hogyan választok kiszolgálót?</string>
|
||||
<string name="welcome_page3_text">Az emberek különböző okok miatt választanak más és más kiszolgálót. Az art.example egy jó hely lehet a művészek számára, miközben a glasgow.example a skótoknak lehet megfelelő.\n\nAz általunk javasolt kiszolgálókkal nem lehet probléma, de teljesen mindegy, hogy melyiket választod (vagy ha saját kiszolgálót használsz a keresőmezőben), nem maradsz le semmiről egy kiszolgálón sem.</string>
|
||||
<string name="signup_random_server_explain">Választunk egy kiszolgálót a saját nyelvedhez, ha választás nélkül folytatod.</string>
|
||||
<string name="server_filter_any_language">Bármely Nyelv</string>
|
||||
<string name="server_filter_instant_signup">Azonnali Regisztráció</string>
|
||||
<string name="server_filter_manual_review">Kézi Felülvizsgálat</string>
|
||||
<string name="server_filter_any_signup_speed">Bármely Regisztrációs Sebesség</string>
|
||||
<string name="server_filter_region_europe">Európa</string>
|
||||
<string name="server_filter_region_north_america">Észak-Amerika</string>
|
||||
<string name="server_filter_region_south_america">Dél-Amerika</string>
|
||||
<string name="server_filter_region_africa">Afrika</string>
|
||||
<string name="server_filter_region_asia">Ázsia</string>
|
||||
<string name="server_filter_region_oceania">Óceánia</string>
|
||||
<string name="not_accepting_new_members">Nem fogad új tagokat</string>
|
||||
<string name="category_special_interests">Különleges Érdeklődés</string>
|
||||
<string name="signup_passwords_dont_match">Jelszavak nem egyeznek</string>
|
||||
<string name="pick_server_for_me">Válassz egyet nekem</string>
|
||||
<string name="profile_add_row">Sor hozzáadása</string>
|
||||
<string name="profile_setup">Profilbeállítás</string>
|
||||
<string name="profile_setup_subtitle">Ezt később is bármikor kitöltheted a Profil fülön.</string>
|
||||
<string name="profile_setup_explanation">Legfeljebb négy profilmezőt adhatsz hozzá bármiről, amiről csak akarsz. Helyadatok, hivatkozások, szólítások/névmások — határ a csillagos ég.</string>
|
||||
<string name="popular_on_mastodon">Népszerű Mastodonon</string>
|
||||
<string name="follow_all">Összes követése</string>
|
||||
<string name="server_rules_disagree">Elutasítás</string>
|
||||
<string name="privacy_policy_explanation">TL;DR: Nem gyűjtünk és nem dolgozunk fel semmit.</string>
|
||||
<!-- %s is server domain -->
|
||||
<string name="server_policy_disagree">Nem egyezek bele a %s szabályzatába</string>
|
||||
<string name="profile_bio">Bemutatkozás</string>
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<string name="sending_follows">Felhasználók bekövetése…</string>
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
<string name="signup_email_domain_blocked">%1$s nem engedélyez feliratkozásokat innen: %2$s. Próbálj meg egy másikat, vagy <a>válassz másik kiszolgálót</a>.</string>
|
||||
<string name="signup_username_taken">Ez a felhasználónév már foglalt.</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Սկսել</string>
|
||||
<string name="log_in">Մուտք գործել</string>
|
||||
<string name="next">Հաջորդը</string>
|
||||
<string name="error">Սխալ</string>
|
||||
@@ -48,8 +47,12 @@
|
||||
<string name="block_user">Արգելափակել%s</string>
|
||||
<string name="unblock_user">Հանել արգելափակումից %s</string>
|
||||
<string name="report_user">Բողոքել %s</string>
|
||||
<!-- %s is the email address -->
|
||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is file size -->
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
14
mastodon/src/main/res/values-ig-rNG/strings.xml
Normal file
14
mastodon/src/main/res/values-ig-rNG/strings.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Igodo: ịbi_do
|
||||
ibi_do
|
||||
Faịlụ: eriri. xml</string>
|
||||
<!-- %s is the email address -->
|
||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is version like 1.2.3 -->
|
||||
<!-- %s is file size -->
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
@@ -1,9 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Mulai</string>
|
||||
<string name="get_started">Buat akun</string>
|
||||
<string name="already_have_account">Saya sudah memiliki akun</string>
|
||||
<string name="log_in">Masuk</string>
|
||||
<string name="next">Selanjutnya</string>
|
||||
<string name="loading_instance">Mengambil info server…</string>
|
||||
<string name="error">Kesalahan</string>
|
||||
<string name="not_a_mastodon_instance">%s sepertinya bukan server Mastodon.</string>
|
||||
<string name="ok">Oke</string>
|
||||
<string name="preparing_auth">Menyiapkan untuk otentikasi…</string>
|
||||
<string name="finishing_auth">Menyelesaikan otentikasi…</string>
|
||||
@@ -156,15 +159,7 @@
|
||||
<string name="back">Kembali</string>
|
||||
<string name="instance_catalog_title">Mastodon dibuat oleh pengguna di server yang berbeda-beda.</string>
|
||||
<string name="instance_catalog_subtitle">Pilih sebuah server berdasarkan minat atau wilayah Anda, atau yang umum. Anda masih dapat berkomunikasi dengan semua orang, tanpa memedulikan server yang Anda berada.</string>
|
||||
<string name="search_communities">Cari server atau masukkan URL</string>
|
||||
<string name="instance_rules_title">Beberapa aturan dasar</string>
|
||||
<string name="instance_rules_subtitle">Luangkan beberapa menit untuk melihat peraturan yang ditetapkan oleh admin %s.</string>
|
||||
<string name="signup_title">Mari kita siapkan Anda di %s</string>
|
||||
<string name="edit_photo">sunting</string>
|
||||
<string name="display_name">nama tampilan</string>
|
||||
<string name="username">nama pengguna</string>
|
||||
<string name="email">surel</string>
|
||||
<string name="password">kata sandi</string>
|
||||
<string name="password_note">Tambahkan huruf besar, karakter spesial, dan nomor untuk meningkatkan kekuatan kata sandi Anda.</string>
|
||||
<string name="category_academia">Akademisi</string>
|
||||
<string name="category_activism">Aktivisme</string>
|
||||
@@ -179,8 +174,7 @@
|
||||
<string name="category_music">Musik</string>
|
||||
<string name="category_regional">Regional</string>
|
||||
<string name="category_tech">Teknologi</string>
|
||||
<string name="confirm_email_title">Satu hal lagi</string>
|
||||
<string name="confirm_email_subtitle">Ketuk tautan yang kami kirim ke Anda melalui surel untuk memverifikasi akun Anda.</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="resend">Kirim ulang</string>
|
||||
<string name="open_email_app">Buka aplikasi surel</string>
|
||||
<string name="resent_email">Surel konfirmasi terkirim</string>
|
||||
@@ -258,7 +252,7 @@
|
||||
<string name="add_poll">Tambahkan pemungutan suara</string>
|
||||
<string name="emoji">Emoji</string>
|
||||
<string name="post_visibility">Keterlihatan kiriman</string>
|
||||
<string name="home_timeline">Linimasa beranda</string>
|
||||
<string name="home_timeline">Lini masa beranda</string>
|
||||
<string name="my_profile">Profil saya</string>
|
||||
<string name="media_viewer">Penampil media</string>
|
||||
<string name="follow_user">Ikuti %s</string>
|
||||
@@ -267,7 +261,6 @@
|
||||
<string name="open_in_browser">Buka di peramban</string>
|
||||
<string name="hide_boosts_from_user">Sembunyikan pembagian dari %s</string>
|
||||
<string name="show_boosts_from_user">Tampilkan pembagian dari %s</string>
|
||||
<string name="signup_reason">mengapa Anda ingin bergabung?</string>
|
||||
<string name="signup_reason_note">Ini akan membantu kami meninjau aplikasi Anda.</string>
|
||||
<string name="clear">Hapus</string>
|
||||
<string name="profile_header">Gambar tajuk</string>
|
||||
@@ -354,9 +347,23 @@
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">Unduh (%s)</string>
|
||||
<string name="install_update">Pasang</string>
|
||||
<string name="privacy_policy_title">Mastodon dan privasi Anda</string>
|
||||
<string name="privacy_policy_subtitle">Walaupun aplikasi Mastodon tidak mengumpulkan data apa pun, server yang Anda daftar di sana mungkin memiliki kebijakan yang berbeda. Luangkan beberapa menit untuk melihat dan menerima kebijakan privasi aplikasi Mastodon dan kebijakan privasi server Anda.</string>
|
||||
<string name="i_agree">Saya Setuju</string>
|
||||
<string name="empty_list">Daftar ini kosong</string>
|
||||
<string name="instance_signup_closed">Server ini tidak menerima pendaftaran baru.</string>
|
||||
<string name="text_copied">Disalin ke papan klip</string>
|
||||
<string name="add_bookmark">Markah</string>
|
||||
<string name="remove_bookmark">Hapus markah</string>
|
||||
<string name="bookmarks">Markah</string>
|
||||
<string name="your_favorites">Favorit Anda</string>
|
||||
<string name="login_title">Selamat Datang Kembali</string>
|
||||
<string name="login_subtitle">Masuk dengan server di mana Anda buat akun Anda.</string>
|
||||
<string name="server_url">URL Server</string>
|
||||
<string name="welcome_page1_text">Bayangkan Anda memikiki alamat surel yang berakhiran @contoh.com.\n\nAnda masih bisa mengirim dan menerima surel dari siapa pun, bahkan jika alamat surel mereka berakhiran @gmail.com atau @icloud.com atau @contoh.com.</string>
|
||||
<string name="welcome_page2_title">Mastodon seperti itu.</string>
|
||||
<string name="welcome_page2_text">Alamat akun Anda bisa seperti @gadisgothic654@contoh.social, tetapi Anda masih dapat mengikuti, membagikan, dan mengobrol dengan @fallout5selamanya@contoh.online.</string>
|
||||
<string name="welcome_page3_title">Bagaimana saya memilih server?</string>
|
||||
<string name="welcome_page3_text">Kebanyakan orang memilih server berbeda karena berbagai alasan. seni.contoh adalah tempat yang cocok bagi artis, sedangkan glasgow.example mungkin pilihan yang baik untuk para Scots.\n\nAnda tidak bisa salah dengan server yang kami rekomendasikan, jadi server apa yang Anda pilih (atau jika Anda memasukkan Anda sendiri di bilah pencarian server), Anda tidak akan melewatkan apa pun di mana pun.</string>
|
||||
<!-- %s is server domain -->
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
</resources>
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
<string name="sk_alt_text_missing_title">Tidak ada teks alternatif</string>
|
||||
<string name="sk_alt_text_missing">Setidaknya satu lampiran tidak memilki deskripsi.</string>
|
||||
<string name="sk_publish_anyway">Terbitkan saja</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Nonaktifkan pengingat teks alternatif</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Nonaktifkan pengingat untuk menambahkan teks alternatif</string>
|
||||
<string name="sk_timeline_posts">Kiriman</string>
|
||||
<string name="sk_timelines">Lini Masa</string>
|
||||
<string name="sk_timelines_add">Tambahkan</string>
|
||||
@@ -250,4 +250,6 @@
|
||||
<string name="sk_settings_see_new_posts_button">Tombol “Lihat kiriman baru”</string>
|
||||
<string name="sk_settings_local_only_explanation">Server rumah Anda harus mendukung pengiriman hanya lokal untuk ini bekerja. Kebanyakan versi Mastodon yang dimodifikasi bisa, tetapi Mastodon tidak.</string>
|
||||
<string name="sk_settings_support_local_only">Server hanya mendukung pengiriman hanya lokal</string>
|
||||
<string name="sk_settings_server_version">Versi server: %s</string>
|
||||
<string name="sk_notify_poll_results">Hasil japat</string>
|
||||
</resources>
|
||||
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Byrjum á þessu</string>
|
||||
<string name="get_started">Búa til notandaaðgang</string>
|
||||
<string name="already_have_account">Ég er þegar með notandaaðgang</string>
|
||||
<string name="log_in">Skrá inn</string>
|
||||
<string name="next">Næsta</string>
|
||||
<string name="loading_instance">Sæki upplýsingar um netþjón…</string>
|
||||
@@ -173,15 +174,16 @@ Viðkomandi aðilar munu ekki vita að þaggað hefur verið niður í þeim.</s
|
||||
<string name="back">Til baka</string>
|
||||
<string name="instance_catalog_title">Mastodon samanstendur af notendum á mismunandi netþjónum.</string>
|
||||
<string name="instance_catalog_subtitle">Veldu netþjón út frá svæðinu þínu, áhugamálum, nú eða einhvern almennan. Þú getur samt spjallað við hvern sem er á Mastodon, burtséð frá á hvaða netþjóni þú ert.</string>
|
||||
<string name="search_communities">Leitaðu að netþjónum eða settu inn slóð</string>
|
||||
<string name="instance_rules_title">Nokkrar grunnreglur</string>
|
||||
<string name="instance_rules_subtitle">Gefðu þér mínútu til að kynna þér reglurnar sem stjórnendur %s munu sjá um að framfylgja.</string>
|
||||
<string name="signup_title">Komum þér í gang á %s</string>
|
||||
<string name="search_communities">Nafn þjóns eða vefslóð</string>
|
||||
<string name="instance_rules_title">Reglur netþjónsins</string>
|
||||
<string name="instance_rules_subtitle">Með því að halda áfram, samþykkir þú að fylgja eftirfarandi reglum sem settar eru af umsjónarmönnum %s, sem sjá um að þeim sé fylgt.</string>
|
||||
<string name="signup_title">Búa til notandaaðgang</string>
|
||||
<string name="edit_photo">breyta</string>
|
||||
<string name="display_name">birtingarnafn</string>
|
||||
<string name="username">notandanafn</string>
|
||||
<string name="email">tölvupóstur</string>
|
||||
<string name="password">lykilorð</string>
|
||||
<string name="display_name">Nafn</string>
|
||||
<string name="username">Notandanafn</string>
|
||||
<string name="email">Tölvupóstfang</string>
|
||||
<string name="password">Lykilorð</string>
|
||||
<string name="confirm_password">Staðfestu lykilorðið</string>
|
||||
<string name="password_note">Settu hástafi, sértákn og tölustafi til að auka styrk lykilorðins þíns.</string>
|
||||
<string name="category_academia">Akademískt</string>
|
||||
<string name="category_activism">Aðgerðasinnar</string>
|
||||
@@ -196,8 +198,10 @@ Viðkomandi aðilar munu ekki vita að þaggað hefur verið niður í þeim.</s
|
||||
<string name="category_music">Tónlist</string>
|
||||
<string name="category_regional">Svæðisbundið</string>
|
||||
<string name="category_tech">Tækni</string>
|
||||
<string name="confirm_email_title">Eitt að lokum</string>
|
||||
<string name="confirm_email_subtitle">Ýttu á tengilinn sem við sendum þér til að staðfesta tölvupóstfangið þitt.</string>
|
||||
<string name="confirm_email_title">Athugaðu innhólfið þitt</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="confirm_email_subtitle">Ýttu á tengilinn sem við sendum þér til að staðfesta %s. Við bíðum á meðan.</string>
|
||||
<string name="confirm_email_didnt_get">Fékkstu ekki neinn tengil?</string>
|
||||
<string name="resend">Endursenda</string>
|
||||
<string name="open_email_app">Opna tölvupóstforrit</string>
|
||||
<string name="resent_email">Staðfestingartölvupóstur sendur</string>
|
||||
@@ -285,7 +289,7 @@ Viðkomandi aðilar munu ekki vita að þaggað hefur verið niður í þeim.</s
|
||||
<string name="open_in_browser">Opna í vafra</string>
|
||||
<string name="hide_boosts_from_user">Fela endurbirtingar frá %s</string>
|
||||
<string name="show_boosts_from_user">Sýna endurbirtingar frá %s</string>
|
||||
<string name="signup_reason">hvers vegna vilt þú taka þátt?</string>
|
||||
<string name="signup_reason">Hvers vegna vilt þú taka þátt?</string>
|
||||
<string name="signup_reason_note">Þetta mun hjálpa okkur við að yfirfara umsóknina þína.</string>
|
||||
<string name="clear">Hreinsa</string>
|
||||
<string name="profile_header">Mynd í síðuhaus</string>
|
||||
@@ -378,8 +382,8 @@ Viðkomandi aðilar munu ekki vita að þaggað hefur verið niður í þeim.</s
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">Sækja (%s)</string>
|
||||
<string name="install_update">Setja upp</string>
|
||||
<string name="privacy_policy_title">Mastodon og friðhelgi þín</string>
|
||||
<string name="privacy_policy_subtitle">Þó svo að Mastodon-forritið safni ekki neinum gögnum, má samt vera að netþjónninn sem þú skráðir þig á hafi aðra stefnu hvað slíkt varðar. Taktu þér tíma til að yfirfara og samþykkja persónuverndarstefnu Mastodon-forritsins og einnig hjá netþjóninum þínum.</string>
|
||||
<string name="privacy_policy_title">Friðhelgi þín</string>
|
||||
<string name="privacy_policy_subtitle">Þó svo að Mastodon-forritið safni engum gögnum, þá getur netþjónninn sem þú skráir þig á haft aðra stefnu varðandi þetta.\n\nEf þú samþykkir ekki stefnuna hjá %s, geturðu farið til baka og valið annan netþjón.</string>
|
||||
<string name="i_agree">Ég samþykki</string>
|
||||
<string name="empty_list">Þessi listi er tómur</string>
|
||||
<string name="instance_signup_closed">Þessi netþjónn tekur ekki við nýjum skráningum.</string>
|
||||
@@ -391,4 +395,41 @@ Viðkomandi aðilar munu ekki vita að þaggað hefur verið niður í þeim.</s
|
||||
<string name="login_title">Velkomin aftur</string>
|
||||
<string name="login_subtitle">Skráðu þig inn á netþjóninn þar sem þú útbjóst notandaaðganginn þinn.</string>
|
||||
<string name="server_url">Vefslóð netþjóns</string>
|
||||
<string name="welcome_page1_title">Hvað er Mastodon?</string>
|
||||
<string name="welcome_page1_text">Ímyndaðu þér að þú sért með tölvupóstfang sem endar á @lén.is.\n\nÞú getur alltaf tekið við og sent tölvupóst til allra, jafnvel þótt tölvupóstfangið þeirra endi á @gmail.com, @icloud.com eða @lén.is.</string>
|
||||
<string name="welcome_page2_title">Mastodon er eins og þetta.</string>
|
||||
<string name="welcome_page2_text">Auðkennið þitt gæti verið @gothgirl654@example.social, en þú getur samt fylgst með, endurbirt og spjallað við @fallout5ever@example.online.</string>
|
||||
<string name="welcome_page3_title">Hvernig vel ég netþjón?</string>
|
||||
<string name="welcome_page3_text">Mismunandi fólk velur sér mismunandi netþjóna af ýmsum ólíkum ástæðum. Netþjónninn art.example er frábær staður fyrir listafólk, á meðan glasgow.example gæti verið góður kostur fyrir suma skota.\n\nÞú getur eiginlega ekki lent á röngum stað á neinum að þeim netþjónum sem við mælum með, þannig að hvern þeirra sem þú velur (eða ef þú setur inn þinn eigin netþjón í leitarreitinn), þá ættirðu ekki að missa af neinu neinsstaðar.</string>
|
||||
<string name="signup_random_server_explain">Við munum velja netþjón út frá tungumálinu þínu, ef þú heldur áfram án þess að velja neitt.</string>
|
||||
<string name="server_filter_any_language">Hvaða tungumál sem er</string>
|
||||
<string name="server_filter_instant_signup">Nýskráning á stundinni</string>
|
||||
<string name="server_filter_manual_review">Handvirk yfirferð</string>
|
||||
<string name="server_filter_any_signup_speed">Hvaða afgreiðsluhraði nýskráninga sem er</string>
|
||||
<string name="server_filter_region_europe">Evrópa</string>
|
||||
<string name="server_filter_region_north_america">Norður-Ameríka</string>
|
||||
<string name="server_filter_region_south_america">Suður-Ameríka</string>
|
||||
<string name="server_filter_region_africa">Afríka</string>
|
||||
<string name="server_filter_region_asia">Asía</string>
|
||||
<string name="server_filter_region_oceania">Eyjaálfa</string>
|
||||
<string name="not_accepting_new_members">Tekur ekki við nýjum meðlimum</string>
|
||||
<string name="category_special_interests">Sérstök áhugamál</string>
|
||||
<string name="signup_passwords_dont_match">Lykilorðin samsvara ekki</string>
|
||||
<string name="pick_server_for_me">Velja fyrir mig</string>
|
||||
<string name="profile_add_row">Bæta við röð</string>
|
||||
<string name="profile_setup">Uppsetning notandasniðs</string>
|
||||
<string name="profile_setup_subtitle">Þú getur alltaf klárað þetta síðar á notendasniðaflipanum.</string>
|
||||
<string name="profile_setup_explanation">Þú getur bætt við allt að fjórum gagnasviðum að eigin vali. Staðsetning, tenglar, fornöfn - ímyndunaraflið er einu takmörkin.</string>
|
||||
<string name="popular_on_mastodon">Vinsælt á Mastodon</string>
|
||||
<string name="follow_all">Fylgjast með öllum</string>
|
||||
<string name="server_rules_disagree">Ósammála</string>
|
||||
<string name="privacy_policy_explanation">Athugaðu: Við söfnum ekki eða vinnum með neinar upplýsingar.</string>
|
||||
<!-- %s is server domain -->
|
||||
<string name="server_policy_disagree">Ósammála %s</string>
|
||||
<string name="profile_bio">Æviágrip</string>
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<string name="sending_follows">Fylgist með notendum…</string>
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
<string name="signup_email_domain_blocked">%1$s leyfir ekki nýskráningar frá %2$s. Veldu eitthvað annað lén eða <a>veldu annan netþjón</a>.</string>
|
||||
<string name="signup_username_taken">Þetta notandanafn er þegar í notkun.</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="get_started">Iniziamo</string>
|
||||
<string name="get_started">Crea un profilo</string>
|
||||
<string name="already_have_account">Ho già un account</string>
|
||||
<string name="log_in">Accedi</string>
|
||||
<string name="next">Avanti</string>
|
||||
<string name="loading_instance">Recupero delle informazioni sul server…</string>
|
||||
<string name="error">Errore</string>
|
||||
<string name="not_a_mastodon_instance">%s non sembra essere un server Mastodon.</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="preparing_auth">Preparazione all\'autenticazione…</string>
|
||||
<string name="finishing_auth">Completamento autenticazione…</string>
|
||||
@@ -35,10 +38,10 @@
|
||||
</plurals>
|
||||
<plurals name="posts">
|
||||
<item quantity="one">post</item>
|
||||
<item quantity="other">posts</item>
|
||||
<item quantity="other">post</item>
|
||||
</plurals>
|
||||
<string name="posts">Posts</string>
|
||||
<string name="posts_and_replies">Post e Risposte</string>
|
||||
<string name="posts">Post</string>
|
||||
<string name="posts_and_replies">Post e risposte</string>
|
||||
<string name="media">Media</string>
|
||||
<string name="profile_about">Info</string>
|
||||
<string name="button_follow">Segui</string>
|
||||
@@ -55,7 +58,7 @@
|
||||
<string name="unblock_domain">Sblocca %s</string>
|
||||
<plurals name="x_posts">
|
||||
<item quantity="one">%,d post</item>
|
||||
<item quantity="other">%,d posts</item>
|
||||
<item quantity="other">%,d post</item>
|
||||
</plurals>
|
||||
<string name="profile_joined">Iscritto</string>
|
||||
<string name="done">Fatto</string>
|
||||
@@ -170,15 +173,16 @@
|
||||
<string name="back">Indietro</string>
|
||||
<string name="instance_catalog_title">Mastodon è fatto di utenti in diverse comunità.</string>
|
||||
<string name="instance_catalog_subtitle">Scegli una comunità basata sui tuoi interessi, regionale o una generica. Puoi comunque connetterti con tutti, indipendentemente dalla comunità.</string>
|
||||
<string name="search_communities">Cerca servers o inserisci URL</string>
|
||||
<string name="instance_rules_title">Alcune regole di base</string>
|
||||
<string name="instance_rules_subtitle">Prenditi un minuto per rivedere le regole impostate e applicate dagli amministratori di %s.</string>
|
||||
<string name="signup_title">Facciamo in modo che sia configurato su %s</string>
|
||||
<string name="search_communities">Nome del server o URL</string>
|
||||
<string name="instance_rules_title">Regole del server</string>
|
||||
<string name="instance_rules_subtitle">Continuando, accetti di seguire le seguenti regole stabilite e applicate dai moderatori di %s.</string>
|
||||
<string name="signup_title">Crea un profilo</string>
|
||||
<string name="edit_photo">modifica</string>
|
||||
<string name="display_name">nome visualizzato</string>
|
||||
<string name="username">nome utente</string>
|
||||
<string name="email">email</string>
|
||||
<string name="password">password</string>
|
||||
<string name="display_name">Nome</string>
|
||||
<string name="username">Nome utente</string>
|
||||
<string name="email">Email</string>
|
||||
<string name="password">Password</string>
|
||||
<string name="confirm_password">Conferma la password</string>
|
||||
<string name="password_note">Includi lettere maiuscole, caratteri speciali e numeri per aumentare la forza della tua password.</string>
|
||||
<string name="category_academia">Accademia</string>
|
||||
<string name="category_activism">Attivismo</string>
|
||||
@@ -193,8 +197,10 @@
|
||||
<string name="category_music">Musica</string>
|
||||
<string name="category_regional">Regionale</string>
|
||||
<string name="category_tech">Tecnologia</string>
|
||||
<string name="confirm_email_title">Un\'ultima cosa</string>
|
||||
<string name="confirm_email_subtitle">Tocca il link che ti abbiamo inviato per verificare il tuo account.</string>
|
||||
<string name="confirm_email_title">Controlla la tua casella di posta</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="confirm_email_subtitle">Tocca il collegamento che ti abbiamo inviato per verificare %s. Aspetteremo proprio qui.</string>
|
||||
<string name="confirm_email_didnt_get">Non hai ricevuto un collegamento?</string>
|
||||
<string name="resend">Invia di nuovo</string>
|
||||
<string name="open_email_app">Apri l\'app email</string>
|
||||
<string name="resent_email">Email di conferma inviata</string>
|
||||
@@ -282,7 +288,7 @@
|
||||
<string name="open_in_browser">Apri nel browser</string>
|
||||
<string name="hide_boosts_from_user">Nascondi le condivisioni di %s</string>
|
||||
<string name="show_boosts_from_user">Mostra le condivisioni di %s</string>
|
||||
<string name="signup_reason">perché vuoi unirti?</string>
|
||||
<string name="signup_reason">Perché vuoi unirti?</string>
|
||||
<string name="signup_reason_note">Questo ci aiuterà ad esaminare la tua richiesta.</string>
|
||||
<string name="clear">Cancella</string>
|
||||
<string name="profile_header">Immagine di intestazione</string>
|
||||
@@ -302,8 +308,8 @@
|
||||
<string name="trending_links_info_banner">Queste sono le notizie che vengono condivise più nel tuo angolo di Mastodon.</string>
|
||||
<string name="local_timeline_info_banner">Questi sono i post più recenti delle persone che utilizzano il tuo stesso server Mastodon.</string>
|
||||
<string name="dismiss">Ignora</string>
|
||||
<string name="see_new_posts">Visualizza nuovi posts</string>
|
||||
<string name="load_missing_posts">Carica i posts mancanti</string>
|
||||
<string name="see_new_posts">Visualizza nuovi post</string>
|
||||
<string name="load_missing_posts">Carica i post mancanti</string>
|
||||
<string name="follow_back">Segui anche tu</string>
|
||||
<string name="button_follow_pending">In attesa</string>
|
||||
<string name="follows_you">Ha iniziato a seguirti</string>
|
||||
@@ -331,7 +337,7 @@
|
||||
<string name="time_now">ora</string>
|
||||
<string name="post_info_reblogs">Condivisioni</string>
|
||||
<string name="post_info_favorites">Preferiti</string>
|
||||
<string name="edit_history">Modifica cronologia</string>
|
||||
<string name="edit_history">Cronologia delle modifiche</string>
|
||||
<string name="last_edit_at_x">Ultima modifica: %s</string>
|
||||
<string name="time_just_now">proprio ora</string>
|
||||
<plurals name="x_seconds_ago">
|
||||
@@ -375,8 +381,8 @@
|
||||
<!-- %s is file size -->
|
||||
<string name="download_update">Scarica (%s)</string>
|
||||
<string name="install_update">Installa</string>
|
||||
<string name="privacy_policy_title">Mastodon e la tua privacy</string>
|
||||
<string name="privacy_policy_subtitle">Sebbene l\'app Mastodon non raccolga alcun dato, il server tramite il quale ti iscrivi potrebbe avere una politica diversa. Prenditi un minuto per rivedere e accettare l\'informativa sulla privacy dell\'app Mastodon e l\'informativa sulla privacy del tuo server.</string>
|
||||
<string name="privacy_policy_title">La tua privacy</string>
|
||||
<string name="privacy_policy_subtitle">Sebbene l\'app Mastodon non raccolga alcun dato, il server attraverso il quale ti registri potrebbe avere una politica diversa.\n\nSe non sei d\'accordo con la politica per %s, puoi tornare indietro e scegliere un server diverso.</string>
|
||||
<string name="i_agree">Accetto</string>
|
||||
<string name="empty_list">Questo elenco è vuoto</string>
|
||||
<string name="instance_signup_closed">Questo server non accetta nuove registrazioni.</string>
|
||||
@@ -385,4 +391,44 @@
|
||||
<string name="remove_bookmark">Rimuovi segnalibro</string>
|
||||
<string name="bookmarks">Segnalibri</string>
|
||||
<string name="your_favorites">I Tuoi Preferiti</string>
|
||||
<string name="login_title">Bentornato/a</string>
|
||||
<string name="login_subtitle">Accedi con il server in cui hai creato il tuo account.</string>
|
||||
<string name="server_url">URL del server</string>
|
||||
<string name="welcome_page1_title">Che cos\'è Mastodon?</string>
|
||||
<string name="welcome_page1_text">Immaginate di avere un indirizzo email che termina con @example.com.\n\nPotete ancora inviare e ricevere email da chiunque, anche se la loro email termina in @gmail.com o @icloud.com o @example.com.</string>
|
||||
<string name="welcome_page2_title">Mastodon è così.</string>
|
||||
<string name="welcome_page2_text">Il tuo pseudonimo potrebbe essere @gothgirl654@example.social, ma puoi ancora seguire, condividere e chattare con @fallout5ever@example.online.</string>
|
||||
<string name="welcome_page3_title">Come scegliere un server?</string>
|
||||
<string name="welcome_page3_text">Diverse persone scelgono server diversi per vari motivi. art.example è un server ottimo per gli artisti, mentre glasgow.example è una buona scelta per i Scozzesi. \n\nNon si può sbagliare con nessuno dei nostri server consigliati, e qualsiasi server scegli (o se cerchi un altro che conosci tu usando la barra di ricerca dei server) non perderai mai un colpo.</string>
|
||||
<string name="signup_random_server_explain">Sceglieremo un server in base alla tua lingua se continui senza effettuare una selezione.</string>
|
||||
<string name="server_filter_any_language">Qualsiasi lingua</string>
|
||||
<string name="server_filter_instant_signup">Iscrizione immediata</string>
|
||||
<string name="server_filter_manual_review">Revisione manuale</string>
|
||||
<string name="server_filter_any_signup_speed">Qualsiasi velocità di iscrizione</string>
|
||||
<string name="server_filter_region_europe">Europa</string>
|
||||
<string name="server_filter_region_north_america">America del nord</string>
|
||||
<string name="server_filter_region_south_america">America del sud</string>
|
||||
<string name="server_filter_region_africa">Africa</string>
|
||||
<string name="server_filter_region_asia">Asia</string>
|
||||
<string name="server_filter_region_oceania">Oceania</string>
|
||||
<string name="not_accepting_new_members">Non accetta nuovi membri</string>
|
||||
<string name="category_special_interests">Interessi speciali</string>
|
||||
<string name="signup_passwords_dont_match">Le password non corrispondono</string>
|
||||
<string name="pick_server_for_me">Scegli per me</string>
|
||||
<string name="profile_add_row">Aggiungi riga</string>
|
||||
<string name="profile_setup">Configurazione del profilo</string>
|
||||
<string name="profile_setup_subtitle">Puoi sempre completarlo più tardi nella scheda Profilo.</string>
|
||||
<string name="profile_setup_explanation">Puoi aggiungere fino a quattro campi del profilo per tutto ciò che desideri. Posizione, collegamenti, pronomi — il limite è il cielo.</string>
|
||||
<string name="popular_on_mastodon">Popolare su Mastodon</string>
|
||||
<string name="follow_all">Segui tutto</string>
|
||||
<string name="server_rules_disagree">Non sono d\'accordo</string>
|
||||
<string name="privacy_policy_explanation">TL;DR: Non raccogliamo, né elaboriamo nulla.</string>
|
||||
<!-- %s is server domain -->
|
||||
<string name="server_policy_disagree">Non sono d\'accordo con %s</string>
|
||||
<string name="profile_bio">Biografia</string>
|
||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||
<string name="sending_follows">Seguendo gli utenti…</string>
|
||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||
<string name="signup_email_domain_blocked">%1$s non consente iscrizioni da %2$s. Provane uno diverso o <a>scegli un altro server</a>.</string>
|
||||
<string name="signup_username_taken">Questo nome utente è già in uso.</string>
|
||||
</resources>
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
<string name="sk_welcome_text">Lo squalo ti saluta! Per iniziare inserisci il dominio dell\'istanza a cui sei iscritto.</string>
|
||||
<string name="sk_color_palette_material3">Sistema</string>
|
||||
<string name="sk_timeline_local">Locale</string>
|
||||
<string name="sk_timeline_federated">Federazione</string>
|
||||
<string name="sk_timeline_federated">Federata</string>
|
||||
<string name="sk_bookmark_as">Salva con un altro account</string>
|
||||
<string name="sk_bookmarked_as">Salvato come %s</string>
|
||||
<string name="sk_favorite_as">Inserisci tra i preferiti con un altro account</string>
|
||||
@@ -150,10 +150,10 @@
|
||||
<string name="sk_changelog">Registro delle modifiche</string>
|
||||
<string name="sk_alt_text_missing_title">Testo alternativo mancante</string>
|
||||
<string name="sk_publish_anyway">Pubblica comunque</string>
|
||||
<string name="sk_timelines">Linee temporali</string>
|
||||
<string name="sk_timelines">Timeline</string>
|
||||
<string name="sk_timeline_posts">Post</string>
|
||||
<string name="sk_timelines_add">Aggiungi</string>
|
||||
<string name="sk_timeline">Linea temporale</string>
|
||||
<string name="sk_timeline">Timeline</string>
|
||||
<string name="sk_list">Lista</string>
|
||||
<string name="sk_hashtag">Hashtag</string>
|
||||
<string name="sk_pin_timeline">Fissa timeline</string>
|
||||
@@ -184,7 +184,7 @@
|
||||
<string name="sk_icon_pi">Pi</string>
|
||||
<string name="sk_icon_color_palette">Tavolozza di colori</string>
|
||||
<string name="sk_alt_text_missing">Almeno un allegato non contiene una descrizione.</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Disabilita gli avvertimenti per la descrizione</string>
|
||||
<string name="sk_settings_disable_alt_text_reminder">Disabilita gli avvertimenti per aggiungere il testo alternativo</string>
|
||||
<string name="sk_notify_posts_info_banner">Se abiliti le notifiche per i post per alcune persone, i loro nuovi post appariranno qui.</string>
|
||||
<string name="sk_icon_academic_cap">Tocco universitario</string>
|
||||
<string name="sk_icon_tag">Etichetta</string>
|
||||
@@ -219,7 +219,7 @@
|
||||
<string name="sk_icon_human">Umano</string>
|
||||
<string name="sk_icon_globe">Mappamondo</string>
|
||||
<string name="sk_edit_timeline">Modifica timeline</string>
|
||||
<string name="sk_edit_timelines">Modifica timelines</string>
|
||||
<string name="sk_edit_timelines">Modifica timeline</string>
|
||||
<string name="sk_notify_update">Modifica un post condiviso</string>
|
||||
<string name="sk_notification_type_update">Post modificati</string>
|
||||
<string name="sk_attach_file">Allega file</string>
|
||||
@@ -234,4 +234,20 @@
|
||||
<string name="sk_settings_show_alt_indicator">Indicatore per le descrizioni</string>
|
||||
<string name="sk_settings_show_no_alt_indicator">Indicatore per descrizioni mancanti</string>
|
||||
<string name="sk_updater_enable_pre_releases">Abilita prerilasci</string>
|
||||
<string name="sk_inline_local_only">solo locale</string>
|
||||
<string name="sk_inline_direct">Solo menzioni</string>
|
||||
<string name="sk_separator">·</string>
|
||||
<string name="sk_local_only">Solo istanza locale</string>
|
||||
<string name="sk_instance_features">Funzionalità dell\'istanza</string>
|
||||
<string name="sk_settings_support_local_only">Il server supporta solo post locali</string>
|
||||
<string name="sk_settings_local_only_explanation">La tua istanza deve supportare post solo locali per far funzionare questa opzione. Molte versioni modificate di Mastodon lo fanno, ma Mastodon no.</string>
|
||||
<string name="sk_settings_glitch_instance">Modalità solo locale di Glitch</string>
|
||||
<string name="sk_settings_glitch_mode_explanation">Abilita se la tua istanza utilizza Glitch. Non necessario per Hometown o Akkoma.</string>
|
||||
<string name="sk_signed_up">iscritto</string>
|
||||
<string name="sk_reported">segnalato</string>
|
||||
<string name="sk_new_reports">Nuove segnalazioni</string>
|
||||
<string name="sk_sign_ups">Utenti registrati</string>
|
||||
<string name="sk_settings_see_new_posts_button">Pulsante \"Mostra nuovi post\"</string>
|
||||
<string name="sk_settings_server_version">Versione server:%s</string>
|
||||
<string name="sk_notify_poll_results">Risultati del sondaggio</string>
|
||||
</resources>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user