Compare commits

...

584 Commits

Author SHA1 Message Date
sk
92beac8dff fuck it, indented header line
closes #448
2023-03-14 15:34:05 +01:00
sk
ed1fdba9a5 Merge remote-tracking branch 'upstream/master' 2023-03-14 15:01:30 +01:00
sk
5e194e3079 display both reply and reblog
re: sk22#448
2023-03-14 14:59:11 +01:00
sk
27c2791d6c add reblogged account to known accounts 2023-03-14 14:58:21 +01:00
Grishka
d6bcc9c156 Fix button color 2023-03-14 07:31:01 +03:00
sk
4c85fd4387 use custom string for anonymous reply 2023-03-13 20:06:05 +01:00
sk
80d529d503 display reply header for unknown original poster
re: mastodon#342
2023-03-13 20:00:56 +01:00
sk
c5a19a2334 fix duplicate notification status header 2023-03-13 19:29:40 +01:00
sk
16857bebd9 add tooltip
closes sk22#436
2023-03-13 19:05:22 +01:00
sk
1c340b7c66 fix extra text padding in compose 2023-03-13 18:56:06 +01:00
sk
7d9d8f0aae Merge remote-tracking branch 'upstream/master' 2023-03-13 18:52:52 +01:00
sk
21fc35230c Merge remote-tracking branch 'upstream/master' 2023-03-13 18:51:26 +01:00
Grishka
fc67c82040 Fix #544 2023-03-13 20:46:29 +03:00
FineFindus
4d04741fe0 feat(welcome): use URI InputType (#454) 2023-03-11 13:01:11 +01:00
FineFindus
5c7fe9dcb5 fix: disable group divider on EMUI (#453)
Fixes an issues, where the forth menu item does not show up, when the divider is enabled on EMUI devices
2023-03-11 13:00:36 +01:00
Grishka
c3aa3af650 Fix #540 2023-03-08 22:46:24 +03:00
Grishka
4a695b2a83 Use a single display item for the image attachment grid 2023-03-06 02:25:13 +03:00
Grishka
a8ba50e762 Merge branch 'dev_clickable_links_hold_to_copy' 2023-03-05 22:33:35 +03:00
Grishka
f79fc66578 Fix 2023-03-05 22:33:18 +03:00
Torge Rosendahl
4144639b75 docu 2023-02-26 13:59:39 -05:00
sk22
7ea42c8403 Translated using Weblate (German)
Currently translated at 100.0% (16 of 16 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/de/
2023-02-17 12:30:41 +00:00
sk22
af9b527f35 Translated using Weblate (German)
Currently translated at 100.0% (262 of 262 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-02-17 12:30:40 +00:00
Espasant3
df58cdd86e Translated using Weblate (Galician)
Currently translated at 100.0% (15 of 15 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/gl/
2023-02-17 12:27:57 +00:00
ihor_ck
507fcea646 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (15 of 15 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/
2023-02-17 12:27:57 +00:00
McKris
5cd1e88da9 Translated using Weblate (Polish)
Currently translated at 100.0% (15 of 15 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pl/
2023-02-17 12:27:57 +00:00
AiOO
e2293899f0 Translated using Weblate (Korean)
Currently translated at 100.0% (15 of 15 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ko/
2023-02-17 12:27:57 +00:00
gallegonovato
1c743ee3a6 Translated using Weblate (Spanish)
Currently translated at 100.0% (15 of 15 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/
2023-02-17 12:27:57 +00:00
ihor_ck
daf4c69df4 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-02-17 12:27:57 +00:00
McKris
14d3add7b3 Translated using Weblate (Polish)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-02-17 12:27:57 +00:00
Espasant3
7e3193a708 Translated using Weblate (Galician)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-02-17 12:27:57 +00:00
gallegonovato
545aa16cd3 Translated using Weblate (Spanish)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-02-17 12:27:57 +00:00
poesty
4dcf32d13a Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-02-17 12:27:57 +00:00
AiOO
e0aba23e80 Translated using Weblate (Korean)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2023-02-17 12:27:57 +00:00
sk
b19ae9bb10 bump version 2023-02-17 13:27:41 +01:00
sk22
d20f8669e8 Auto-hide FAB on scroll (#435)
* feat(composeButton): hide fab on scroll
* feat(composeButton): hide when scrolling in profile fragment
* refactor(compose-fab): show fab after small scroll distance
* refactor(compose-fab): code cleanup
* feat(composeButton): hide when scrolling in profile
* fix: duplicate fab var
* feat(fab): show when scrolled to top
* add option to turn it off

---------

Co-authored-by: FineFindus <63370021+FineFindus@users.noreply.github.com>
2023-02-17 13:20:22 +01:00
sk
1567e5aba4 Merge remote-tracking branch 'upstream/master' 2023-02-17 12:45:36 +01:00
sk
6b9b6710cf enable remote-following accounts
closes sk22#431
2023-02-16 19:44:39 +01:00
sk
b07858a66d don't crash when language array empty 2023-02-16 17:04:56 +01:00
sk
c05d0b600e default role color if not provided
fixes sk22#430
2023-02-16 16:42:47 +01:00
Torge Rosendahl
0a8d73dc0b cleanup, resolved some warnings 2023-02-15 20:19:10 -05:00
Torge Rosendahl
fd99f3caa1 changed url longclick implementation to GestureListener 2023-02-15 20:16:20 -05:00
Torge Rosendahl
794c4e5227 removed longClickHandler and moved to view itself 2023-02-15 19:54:08 -05:00
Torge Rosendahl
f5df8225d1 whitespace corrections 2023-02-15 18:20:02 -05:00
Torge Rosendahl
42c6446125 refactoring: moved runnable and made it private, added copy toast localization. 2023-02-15 18:04:52 -05:00
Torge Rosendahl
e3486ebf7c added clickable link type switch for copy, to not copy hashtags and user IDs 2023-02-15 18:00:45 -05:00
Torge Rosendahl
c0115f068c implemented copy service 2023-02-15 17:40:43 -05:00
Torge Rosendahl
41682d1147 added press-and-hold listener to ClickableLinks 2023-02-15 17:30:31 -05:00
Grishka
dd582c4bee Update locales & bump version 2023-02-14 03:57:49 +03:00
Grishka
3a0d314af0 Merge branch 'l10n_master' 2023-02-14 03:49:36 +03:00
sk
a00ca599c1 add newline 2023-02-13 17:58:27 +01:00
Choukajohn
263b5b10b6 Translated using Weblate (French)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-02-13 16:50:55 +00:00
sk22
1068fa3120 Translated using Weblate (German)
Currently translated at 100.0% (15 of 15 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/de/
2023-02-13 16:50:55 +00:00
sk22
569f288c00 Translated using Weblate (German)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/de/
2023-02-13 16:50:54 +00:00
sk
dfd94511a5 bump version 2023-02-13 17:47:39 +01:00
sk
2271f336b0 Merge remote-tracking branch 'upstream/l10n_master' 2023-02-13 17:37:40 +01:00
Espasant3
4486feee76 Translated using Weblate (Galician)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-02-13 16:30:34 +00:00
ca
baaff2573c Translated using Weblate (Catalan)
Currently translated at 97.6% (253 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ca/
2023-02-13 16:30:34 +00:00
sk
b9c3b23757 Merge remote-tracking branch 'weblate/main' 2023-02-13 17:30:04 +01:00
sk
0c1fd22253 Merge remote-tracking branch 'upstream' 2023-02-13 17:26:26 +01:00
sk
466c489b4d get edit image drawable with theme
closes sk22#401
2023-02-13 17:07:27 +01:00
sk
625f715e26 clarify spectator mode name 2023-02-13 16:57:18 +01:00
sk
61caec4060 fix wrong icon
closes sk22#421
2023-02-13 16:53:26 +01:00
sk
df233eb1e2 fix headers not filtered in notifications list 2023-02-13 16:51:55 +01:00
sk
78225c482f fix overlapping text
closes sk22#428
2023-02-13 16:32:52 +01:00
sk
c55703f0ba fix layout inconsistency
closes sk22#427
2023-02-13 16:28:51 +01:00
Eugen Rochko
3b26dd44a0 New translations strings.xml (Arabic) 2023-02-13 09:09:52 +01:00
HudobniVolk
2a1386a87a Translated using Weblate (Slovenian)
Currently translated at 71.4% (10 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/sl/
2023-02-12 16:56:42 +00:00
AiOO
fb32430f96 Translated using Weblate (Korean)
Currently translated at 100.0% (14 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ko/
2023-02-12 16:56:42 +00:00
ihor_ck
2288c53adc Translated using Weblate (Ukrainian)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-02-12 16:56:41 +00:00
HudobniVolk
84b7b67045 Translated using Weblate (Slovenian)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/sl/
2023-02-12 16:56:41 +00:00
edxkl
d233f039a3 Translated using Weblate (Portuguese (Brazil))
Currently translated at 95.7% (248 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-02-12 16:56:41 +00:00
Choukajohn
8b01955a18 Translated using Weblate (French)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-02-12 16:56:41 +00:00
gallegonovato
427aa1722d Translated using Weblate (Spanish)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-02-12 16:56:41 +00:00
ling0412
2a7eb09998 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-02-12 16:56:41 +00:00
AiOO
f2f48fce79 Translated using Weblate (Korean)
Currently translated at 100.0% (259 of 259 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2023-02-12 16:56:41 +00:00
Grishka
634408b8cb Minor onboarding tweaks 2023-02-12 14:25:03 +03:00
Grishka
f050e3f22d Fix #500 2023-02-12 04:03:09 +03:00
Grishka
8e9531b718 Fix #528 2023-02-12 03:58:24 +03:00
HudobniVolk
00457c1edb Translated using Weblate (Slovenian)
Currently translated at 57.1% (8 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/sl/
2023-02-11 13:13:09 +00:00
Andrewblasco
aa14986fcc Translated using Weblate (Spanish)
Currently translated at 100.0% (14 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/
2023-02-11 13:13:09 +00:00
HudobniVolk
1493cd9034 Translated using Weblate (Slovenian)
Currently translated at 100.0% (258 of 258 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/sl/
2023-02-11 13:13:09 +00:00
edxkl
b2b295ee5b Translated using Weblate (Portuguese (Brazil))
Currently translated at 95.3% (246 of 258 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-02-11 13:13:08 +00:00
Andrewblasco
58847f80fd Translated using Weblate (Spanish)
Currently translated at 100.0% (258 of 258 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-02-11 13:13:08 +00:00
Eyre_S
ed9db7b5fd Translated using Weblate (Chinese (Traditional))
Currently translated at 14.2% (2 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/zh_Hant/
2023-02-11 13:13:08 +00:00
edxkl
433a7c6b7a Translated using Weblate (Portuguese (Brazil))
Currently translated at 92.8% (13 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pt_BR/
2023-02-11 13:13:08 +00:00
Eyre_S
7692f587ef Translated using Weblate (Chinese (Traditional))
Currently translated at 23.2% (60 of 258 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hant/
2023-02-11 13:13:08 +00:00
ihor_ck
67583150b2 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (258 of 258 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-02-11 13:13:08 +00:00
McKris
ed49422f76 Translated using Weblate (Polish)
Currently translated at 100.0% (258 of 258 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-02-11 13:13:08 +00:00
Oliebol
63078aaa3e Translated using Weblate (Dutch)
Currently translated at 96.1% (248 of 258 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/
2023-02-11 13:13:08 +00:00
Espasant3
9246c43ffe Translated using Weblate (Galician)
Currently translated at 100.0% (258 of 258 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-02-11 13:13:08 +00:00
Choukajohn
15f02863c0 Translated using Weblate (French)
Currently translated at 100.0% (258 of 258 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-02-11 13:13:08 +00:00
poesty
be1921879d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (258 of 258 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-02-11 13:13:08 +00:00
ling0412
61b43e0112 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (258 of 258 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-02-11 13:13:08 +00:00
nkufideal
b25b482630 Translated using Weblate (Belarusian)
Currently translated at 7.1% (18 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/be/
2023-02-11 13:13:08 +00:00
AiOO
1d44875a65 Translated using Weblate (Korean)
Currently translated at 98.0% (246 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2023-02-11 13:13:08 +00:00
edxkl
0dc5004898 Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.0% (241 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pt_BR/
2023-02-11 13:13:08 +00:00
Andrewblasco
0df86e315b Translated using Weblate (Spanish)
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-02-11 13:13:08 +00:00
tygyh
31d3fa77de Translated using Weblate (Swedish)
Currently translated at 71.4% (10 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/sv/
2023-02-11 13:13:08 +00:00
sandboiii
ec74b18c1a Translated using Weblate (Russian)
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2023-02-11 13:13:08 +00:00
poesty
de36c31f45 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-02-11 13:13:08 +00:00
HudobniVolk
43bcf0008e Translated using Weblate (Slovenian)
Currently translated at 42.8% (6 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/sl/
2023-02-11 13:13:08 +00:00
sheepnik
ac64087018 Translated using Weblate (Welsh)
Currently translated at 100.0% (14 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/cy/
2023-02-11 13:13:08 +00:00
sheepnik
af77865a46 Translated using Weblate (Welsh)
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/cy/
2023-02-11 13:13:08 +00:00
ling0412
51a4a41147 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (14 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/zh_Hans/
2023-02-11 13:13:08 +00:00
HudobniVolk
987474462d Translated using Weblate (Slovenian)
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/sl/
2023-02-11 13:13:08 +00:00
Oliebol
c34ab79c6c Translated using Weblate (Dutch)
Currently translated at 96.8% (243 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/nl/
2023-02-11 13:13:08 +00:00
ling0412
8bac664a34 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-02-11 13:13:08 +00:00
poesty
d77647c354 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/zh_Hans/
2023-02-11 13:13:08 +00:00
sheepnik
e8ef6ef2c7 Translated using Weblate (Welsh)
Currently translated at 91.6% (230 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/cy/
2023-02-11 13:13:08 +00:00
ca
a87cf640dd Translated using Weblate (Catalan)
Currently translated at 100.0% (14 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/ca/
2023-02-11 13:13:08 +00:00
Daudix_UFO
bcb69f1f47 Translated using Weblate (Russian)
Currently translated at 89.6% (225 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2023-02-11 13:13:08 +00:00
Mannivu
0bdcc9057b Translated using Weblate (Italian)
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/it/
2023-02-11 13:13:08 +00:00
ghose
f92977fddf Translated using Weblate (Galician)
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/gl/
2023-02-11 13:13:08 +00:00
Tribela
230a59266d Translated using Weblate (Korean)
Currently translated at 93.6% (235 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ko/
2023-02-11 13:13:08 +00:00
ca
d97f3ed5c8 Translated using Weblate (Catalan)
Currently translated at 98.0% (246 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ca/
2023-02-11 13:13:08 +00:00
Linerly
aae2cd2b65 Translated using Weblate (Indonesian)
Currently translated at 100.0% (14 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/id/
2023-02-11 13:13:08 +00:00
Linerly
8b8763bffc Translated using Weblate (Indonesian)
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-02-11 13:13:08 +00:00
McKris
35758e720d Translated using Weblate (Polish)
Currently translated at 100.0% (14 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/pl/
2023-02-11 13:13:08 +00:00
McKris
fa48c80ab1 Translated using Weblate (Polish)
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/pl/
2023-02-11 13:13:08 +00:00
ihor_ck
1621dbc67a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (14 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/
2023-02-11 13:13:08 +00:00
Andrewblasco
4ece7b883f Translated using Weblate (Spanish)
Currently translated at 100.0% (14 of 14 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/es/
2023-02-11 13:13:07 +00:00
ihor_ck
66a5b749fe Translated using Weblate (Ukrainian)
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-02-11 13:13:07 +00:00
Andrewblasco
49a80767a7 Translated using Weblate (Spanish)
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/es/
2023-02-11 13:13:07 +00:00
Choukajohn
7683b464f3 Translated using Weblate (French)
Currently translated at 100.0% (251 of 251 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-02-11 13:13:07 +00:00
Grishka
64fbbb2f07 Minor onboarding stuff 2023-02-10 21:09:06 +03:00
Eugen Rochko
9003f690d1 New translations strings.xml (French) 2023-02-10 14:16:02 +01:00
Eugen Rochko
8ffaca61bd New translations strings.xml (Portuguese, Brazilian) 2023-02-08 22:57:10 +01:00
Eugen Rochko
f6c3b10c2b New translations strings.xml (Portuguese, Brazilian) 2023-02-08 20:46:53 +01:00
sk
8933c0647e bump version 2023-02-07 16:03:18 +01:00
Eugen Rochko
d68a3a6ef5 New translations strings.xml (Polish) 2023-02-05 18:37:14 +01:00
Eugen Rochko
4475bd039a New translations strings.xml (Hungarian) 2023-02-05 10:32:04 +01:00
Eugen Rochko
98dc7d0524 New translations strings.xml (Hungarian) 2023-02-05 09:17:45 +01:00
Eugen Rochko
65948030a6 New translations strings.xml (Russian) 2023-02-04 14:07:29 +01:00
Eugen Rochko
89edfaaa6d New translations strings.xml (Russian) 2023-02-04 13:11:55 +01:00
Eugen Rochko
10372804e4 New translations strings.xml (Thai) 2023-02-04 09:10:51 +01:00
Eugen Rochko
d1dd7d203b New translations strings.xml (German) 2023-02-03 18:47:42 +01:00
Eugen Rochko
c6aed0b52e New translations strings.xml (French) 2023-02-03 16:09:58 +01:00
Eugen Rochko
5f902d25a9 New translations strings.xml (Basque) 2023-02-03 12:29:06 +01:00
Eugen Rochko
c43bed665d New translations strings.xml (Catalan) 2023-02-03 12:29:05 +01:00
Eugen Rochko
d70a2ae5b3 New translations strings.xml (Russian) 2023-02-03 10:03:24 +01:00
Eugen Rochko
1fdf36b4d8 New translations strings.xml (Portuguese, Brazilian) 2023-02-03 09:05:37 +01:00
Eugen Rochko
5d1cd0f4f6 New translations strings.xml (Vietnamese) 2023-02-02 07:01:44 +01:00
Eugen Rochko
3505460372 New translations strings.xml (Chinese Traditional) 2023-02-01 03:56:06 +01:00
Eugen Rochko
eeb91e867e New translations strings.xml (Chinese Traditional) 2023-02-01 02:54:48 +01:00
Eugen Rochko
c87062ee31 New translations strings.xml (Slovenian) 2023-01-31 21:33:54 +01:00
Eugen Rochko
fb66fa1c6f New translations strings.xml (Italian) 2023-01-31 20:07:33 +01:00
Eugen Rochko
f80af9f5bf New translations strings.xml (Italian) 2023-01-31 18:30:56 +01:00
Eugen Rochko
85157ffe25 New translations strings.xml (Thai) 2023-01-31 17:27:18 +01:00
Eugen Rochko
59f95159b7 New translations strings.xml (German) 2023-01-31 13:41:46 +01:00
Eugen Rochko
703dbd4c8a New translations strings.xml (Portuguese, Brazilian) 2023-01-31 07:47:05 +01:00
Eugen Rochko
1e75f9f1c2 New translations strings.xml (Dutch) 2023-01-30 23:35:25 +01:00
Eugen Rochko
d0860333a9 New translations strings.xml (Dutch) 2023-01-30 22:36:37 +01:00
Eugen Rochko
64b3951c25 New translations strings.xml (German) 2023-01-30 18:52:51 +01:00
Eugen Rochko
e89e6cc3f5 New translations strings.xml (Icelandic) 2023-01-30 11:40:53 +01:00
Eugen Rochko
3c2985fa6e New translations strings.xml (Icelandic) 2023-01-30 10:39:01 +01:00
Eugen Rochko
bee01429f2 New translations full_description.txt (Portuguese, Brazilian) 2023-01-30 05:41:59 +01:00
Eugen Rochko
a96431cc00 New translations strings.xml (Portuguese, Brazilian) 2023-01-30 05:41:58 +01:00
Eugen Rochko
bf9e6f54cf New translations strings.xml (Portuguese, Brazilian) 2023-01-30 04:35:45 +01:00
Eugen Rochko
63084857a3 New translations strings.xml (Kabyle) 2023-01-30 00:02:18 +01:00
Eugen Rochko
d8b7038972 New translations strings.xml (Occitan) 2023-01-30 00:02:18 +01:00
Eugen Rochko
976e71db25 New translations strings.xml (Scottish Gaelic) 2023-01-30 00:02:17 +01:00
Eugen Rochko
2b59c2c080 New translations strings.xml (Sinhala) 2023-01-30 00:02:16 +01:00
Eugen Rochko
5929b0c6b9 New translations strings.xml (Bosnian) 2023-01-30 00:02:15 +01:00
Eugen Rochko
e160a05411 New translations strings.xml (Filipino) 2023-01-30 00:02:14 +01:00
Eugen Rochko
78d8f075a9 New translations strings.xml (Burmese) 2023-01-30 00:02:13 +01:00
Eugen Rochko
3784873cad New translations strings.xml (Hindi) 2023-01-30 00:02:12 +01:00
Eugen Rochko
528f8aaead New translations strings.xml (Croatian) 2023-01-30 00:02:11 +01:00
Eugen Rochko
4ba9f1ecaf New translations strings.xml (Thai) 2023-01-30 00:02:10 +01:00
Eugen Rochko
697a666545 New translations strings.xml (Bengali) 2023-01-30 00:02:09 +01:00
Eugen Rochko
0ee6798424 New translations strings.xml (Persian) 2023-01-30 00:02:08 +01:00
Eugen Rochko
9a95deb346 New translations strings.xml (Indonesian) 2023-01-30 00:02:07 +01:00
Eugen Rochko
0155ef2675 New translations strings.xml (Icelandic) 2023-01-30 00:02:06 +01:00
Eugen Rochko
858195f813 New translations strings.xml (Vietnamese) 2023-01-30 00:02:06 +01:00
Eugen Rochko
b681c7dfeb New translations strings.xml (Chinese Traditional) 2023-01-30 00:02:05 +01:00
Eugen Rochko
b89f931ffd New translations strings.xml (Galician) 2023-01-30 00:02:04 +01:00
Eugen Rochko
1658e56729 New translations strings.xml (Igbo) 2023-01-30 00:02:03 +01:00
Eugen Rochko
2b7d8292ed New translations strings.xml (Portuguese, Brazilian) 2023-01-30 00:02:02 +01:00
Eugen Rochko
494abdfeee New translations strings.xml (Chinese Simplified) 2023-01-30 00:02:01 +01:00
Eugen Rochko
426f3fe95b New translations strings.xml (Ukrainian) 2023-01-30 00:02:00 +01:00
Eugen Rochko
b7a96778b8 New translations strings.xml (Swedish) 2023-01-30 00:01:59 +01:00
Eugen Rochko
125cd525bf New translations strings.xml (Slovenian) 2023-01-30 00:01:58 +01:00
Eugen Rochko
ed281a4619 New translations strings.xml (Russian) 2023-01-30 00:01:58 +01:00
Eugen Rochko
f418a5a2c4 New translations strings.xml (Portuguese) 2023-01-30 00:01:57 +01:00
Eugen Rochko
6d8971df64 New translations strings.xml (Dutch) 2023-01-30 00:01:56 +01:00
Eugen Rochko
8dd3343906 New translations strings.xml (Korean) 2023-01-30 00:01:55 +01:00
Eugen Rochko
f65fc9299a New translations strings.xml (Japanese) 2023-01-30 00:01:54 +01:00
Eugen Rochko
ac00889001 New translations strings.xml (Italian) 2023-01-30 00:01:53 +01:00
Eugen Rochko
7af0a3f351 New translations strings.xml (Armenian) 2023-01-30 00:01:52 +01:00
Eugen Rochko
2734f88206 New translations strings.xml (Hebrew) 2023-01-30 00:01:51 +01:00
Eugen Rochko
c6cd8ca14b New translations strings.xml (Irish) 2023-01-30 00:01:50 +01:00
Eugen Rochko
2fd61f738f New translations strings.xml (Finnish) 2023-01-30 00:01:50 +01:00
Eugen Rochko
d3575b60fe New translations strings.xml (Basque) 2023-01-30 00:01:49 +01:00
Eugen Rochko
dce8808d62 New translations strings.xml (Greek) 2023-01-30 00:01:48 +01:00
Eugen Rochko
db97dadb25 New translations strings.xml (German) 2023-01-30 00:01:47 +01:00
Eugen Rochko
34116d9914 New translations strings.xml (Danish) 2023-01-30 00:01:46 +01:00
Eugen Rochko
bc676e6eb3 New translations strings.xml (Catalan) 2023-01-30 00:01:45 +01:00
Eugen Rochko
ef2cb31b6c New translations strings.xml (Arabic) 2023-01-30 00:01:44 +01:00
Eugen Rochko
c45dc96316 New translations strings.xml (French) 2023-01-30 00:01:43 +01:00
Eugen Rochko
f9b34b53c1 New translations strings.xml (Romanian) 2023-01-30 00:01:42 +01:00
Eugen Rochko
e128e144b1 New translations strings.xml (Turkish) 2023-01-30 00:01:41 +01:00
Eugen Rochko
c68ed6088f New translations strings.xml (Spanish) 2023-01-30 00:01:40 +01:00
Eugen Rochko
b66ad0e6f5 New translations strings.xml (Polish) 2023-01-30 00:01:39 +01:00
Eugen Rochko
02a470bd7d New translations strings.xml (Belarusian) 2023-01-30 00:01:39 +01:00
Eugen Rochko
9407bd9e86 New translations strings.xml (Hungarian) 2023-01-30 00:01:38 +01:00
Eugen Rochko
825adda664 New translations strings.xml (Czech) 2023-01-30 00:01:37 +01:00
Eugen Rochko
0a22c14eec New translations strings.xml (Norwegian) 2023-01-30 00:01:35 +01:00
Eugen Rochko
5452da6a65 New translations strings.xml (German) 2023-01-29 22:55:32 +01:00
Eugen Rochko
ffb321e36f New translations strings.xml (German) 2023-01-29 21:52:09 +01:00
Eugen Rochko
eaecff52c9 New translations strings.xml (Portuguese, Brazilian) 2023-01-29 21:52:08 +01:00
Eugen Rochko
b141a9ac74 New translations strings.xml (Portuguese, Brazilian) 2023-01-29 18:37:47 +01:00
Eugen Rochko
a890f21ace New translations strings.xml (Polish) 2023-01-28 23:17:50 +01:00
Eugen Rochko
4e72e5c234 New translations strings.xml (Polish) 2023-01-28 22:19:28 +01:00
Eugen Rochko
1def56057a New translations strings.xml (Vietnamese) 2023-01-28 15:42:21 +01:00
Eugen Rochko
d99f6c7167 New translations strings.xml (Vietnamese) 2023-01-28 14:39:22 +01:00
Eugen Rochko
0d5d169e5f New translations strings.xml (Korean) 2023-01-28 01:46:35 +01:00
Eugen Rochko
90e55c1043 New translations strings.xml (Korean) 2023-01-28 00:36:07 +01:00
Eugen Rochko
780c5c345c New translations strings.xml (Spanish) 2023-01-27 17:31:12 +01:00
Eugen Rochko
c2bc0a4055 New translations strings.xml (Dutch) 2023-01-27 14:07:08 +01:00
Eugen Rochko
8032de4595 New translations strings.xml (Ukrainian) 2023-01-26 19:50:28 +01:00
Eugen Rochko
bd3f5018ed New translations strings.xml (Ukrainian) 2023-01-26 18:48:15 +01:00
Eugen Rochko
91c4e5e51f New translations strings.xml (Thai) 2023-01-26 14:50:19 +01:00
Eugen Rochko
ca1cb668f3 New translations strings.xml (Chinese Traditional) 2023-01-26 06:12:30 +01:00
Eugen Rochko
a12ca697ed New translations strings.xml (Arabic) 2023-01-26 06:12:29 +01:00
Eugen Rochko
3ccb629a4e New translations strings.xml (Kabyle) 2023-01-25 23:45:26 +01:00
Eugen Rochko
4db041c28f New translations strings.xml (Occitan) 2023-01-25 23:45:25 +01:00
Eugen Rochko
bdcf4a5438 New translations strings.xml (Scottish Gaelic) 2023-01-25 23:45:24 +01:00
Eugen Rochko
c042050295 New translations strings.xml (Sinhala) 2023-01-25 23:45:23 +01:00
Eugen Rochko
f87a87aba1 New translations strings.xml (Bosnian) 2023-01-25 23:45:22 +01:00
Eugen Rochko
b3a88c4a7c New translations strings.xml (Filipino) 2023-01-25 23:45:21 +01:00
Eugen Rochko
9729663cb4 New translations strings.xml (Burmese) 2023-01-25 23:45:20 +01:00
Eugen Rochko
f66e6197d3 New translations strings.xml (Hindi) 2023-01-25 23:45:19 +01:00
Eugen Rochko
4ff940030d New translations strings.xml (Croatian) 2023-01-25 23:45:18 +01:00
Eugen Rochko
da8b88dfc6 New translations strings.xml (Thai) 2023-01-25 23:45:17 +01:00
Eugen Rochko
ed13b1074d New translations strings.xml (Bengali) 2023-01-25 23:45:16 +01:00
Eugen Rochko
c5e985f6a4 New translations strings.xml (Persian) 2023-01-25 23:45:15 +01:00
Eugen Rochko
160bb4e272 New translations strings.xml (Indonesian) 2023-01-25 23:45:14 +01:00
Eugen Rochko
f89a3e644a New translations strings.xml (Icelandic) 2023-01-25 23:45:13 +01:00
Eugen Rochko
4cfd0db899 New translations strings.xml (Vietnamese) 2023-01-25 23:45:12 +01:00
Eugen Rochko
c6cb992b92 New translations strings.xml (Chinese Traditional) 2023-01-25 23:45:11 +01:00
Eugen Rochko
1b3ea6cdbe New translations strings.xml (Chinese Simplified) 2023-01-25 23:45:10 +01:00
Eugen Rochko
79323e392b New translations strings.xml (Ukrainian) 2023-01-25 23:45:08 +01:00
Eugen Rochko
c6c985c1db New translations strings.xml (Swedish) 2023-01-25 23:45:07 +01:00
Eugen Rochko
8988b22a52 New translations strings.xml (Slovenian) 2023-01-25 23:45:06 +01:00
Eugen Rochko
692ede503c New translations strings.xml (Russian) 2023-01-25 23:45:05 +01:00
Eugen Rochko
3be04343b8 New translations strings.xml (Portuguese) 2023-01-25 23:45:04 +01:00
Eugen Rochko
521157315b New translations strings.xml (Dutch) 2023-01-25 23:45:03 +01:00
Eugen Rochko
b4d7b34767 New translations strings.xml (Korean) 2023-01-25 23:45:02 +01:00
Eugen Rochko
f912e90691 New translations strings.xml (Japanese) 2023-01-25 23:45:01 +01:00
Eugen Rochko
61ff2ce7e4 New translations strings.xml (Italian) 2023-01-25 23:45:00 +01:00
Eugen Rochko
0316ec340a New translations strings.xml (Armenian) 2023-01-25 23:44:59 +01:00
Eugen Rochko
3975e8c280 New translations strings.xml (Hebrew) 2023-01-25 23:44:58 +01:00
Eugen Rochko
37c40e4a8d New translations strings.xml (Irish) 2023-01-25 23:44:57 +01:00
Eugen Rochko
7dc691deae New translations strings.xml (Finnish) 2023-01-25 23:44:56 +01:00
Eugen Rochko
ab5dfe6f62 New translations strings.xml (Basque) 2023-01-25 23:44:55 +01:00
Eugen Rochko
b445e6f79f New translations strings.xml (Greek) 2023-01-25 23:44:54 +01:00
Eugen Rochko
5f0cd72303 New translations strings.xml (German) 2023-01-25 23:44:53 +01:00
Eugen Rochko
53dfa08300 New translations strings.xml (Danish) 2023-01-25 23:44:53 +01:00
Eugen Rochko
321c23c52e New translations strings.xml (Catalan) 2023-01-25 23:44:51 +01:00
Eugen Rochko
dd6cb4af74 New translations strings.xml (Arabic) 2023-01-25 23:44:50 +01:00
Eugen Rochko
54b6aaec09 New translations strings.xml (French) 2023-01-25 23:44:50 +01:00
Eugen Rochko
624d21d18b New translations strings.xml (Romanian) 2023-01-25 23:44:49 +01:00
Eugen Rochko
5c27155507 New translations strings.xml (Galician) 2023-01-25 23:44:48 +01:00
Eugen Rochko
35552cfbef New translations strings.xml (Turkish) 2023-01-25 23:44:46 +01:00
Eugen Rochko
31bbeef24e New translations strings.xml (Spanish) 2023-01-25 23:44:46 +01:00
Eugen Rochko
5ee42c0294 New translations strings.xml (Igbo) 2023-01-25 23:44:45 +01:00
Eugen Rochko
3d08f768f8 New translations strings.xml (Polish) 2023-01-25 23:44:44 +01:00
Eugen Rochko
603e3d7d65 New translations strings.xml (Belarusian) 2023-01-25 23:44:43 +01:00
Eugen Rochko
eb8f71aa31 New translations strings.xml (Portuguese, Brazilian) 2023-01-25 23:44:42 +01:00
Eugen Rochko
c7b5b41128 New translations strings.xml (Hungarian) 2023-01-25 23:44:41 +01:00
Eugen Rochko
98dbff38ff New translations strings.xml (Czech) 2023-01-25 23:44:40 +01:00
Eugen Rochko
d9317f6eb1 New translations strings.xml (Norwegian) 2023-01-25 23:44:39 +01:00
Eugen Rochko
4b5dff8742 New translations short_description.txt (Danish) 2023-01-25 22:14:11 +01:00
Eugen Rochko
2256ef6232 New translations full_description.txt (Danish) 2023-01-25 22:14:10 +01:00
Eugen Rochko
182bc09023 New translations strings.xml (Danish) 2023-01-25 22:14:09 +01:00
Eugen Rochko
a60e5040ea New translations strings.xml (Portuguese, Brazilian) 2023-01-25 22:14:08 +01:00
Eugen Rochko
c2a6e17fa5 New translations strings.xml (Thai) 2023-01-25 21:08:37 +01:00
Eugen Rochko
85931e2a65 New translations strings.xml (Portuguese, Brazilian) 2023-01-25 21:08:36 +01:00
Eugen Rochko
da94cd801b New translations strings.xml (Thai) 2023-01-25 18:24:53 +01:00
Eugen Rochko
594570f9a1 New translations strings.xml (Italian) 2023-01-25 10:10:05 +01:00
Eugen Rochko
548a14ab60 New translations strings.xml (Chinese Traditional) 2023-01-25 05:20:29 +01:00
Eugen Rochko
40016332ff New translations strings.xml (Chinese Traditional) 2023-01-25 04:16:16 +01:00
Eugen Rochko
2b9746232b New translations strings.xml (Kabyle) 2023-01-24 21:53:35 +01:00
Eugen Rochko
1fe31e9262 New translations strings.xml (Occitan) 2023-01-24 21:53:34 +01:00
Eugen Rochko
b2a152a728 New translations strings.xml (Scottish Gaelic) 2023-01-24 21:53:33 +01:00
Eugen Rochko
f93d9a0c35 New translations strings.xml (Sinhala) 2023-01-24 21:53:31 +01:00
Eugen Rochko
af9d9c3f48 New translations strings.xml (Bosnian) 2023-01-24 21:53:30 +01:00
Eugen Rochko
5cae41a500 New translations strings.xml (Filipino) 2023-01-24 21:53:29 +01:00
Eugen Rochko
d6c560e015 New translations strings.xml (Burmese) 2023-01-24 21:53:28 +01:00
Eugen Rochko
a2679a3841 New translations strings.xml (Hindi) 2023-01-24 21:53:27 +01:00
Eugen Rochko
d826e0172b New translations strings.xml (Croatian) 2023-01-24 21:53:26 +01:00
Eugen Rochko
f593f5eb58 New translations strings.xml (Thai) 2023-01-24 21:53:25 +01:00
Eugen Rochko
d29565af9c New translations strings.xml (Bengali) 2023-01-24 21:53:24 +01:00
Eugen Rochko
7c3cef32ed New translations strings.xml (Persian) 2023-01-24 21:53:23 +01:00
Eugen Rochko
2c15796108 New translations strings.xml (Indonesian) 2023-01-24 21:53:22 +01:00
Eugen Rochko
553a3ef7e1 New translations strings.xml (Icelandic) 2023-01-24 21:53:21 +01:00
Eugen Rochko
a7dfb671ce New translations strings.xml (Vietnamese) 2023-01-24 21:53:20 +01:00
Eugen Rochko
929218d74c New translations strings.xml (Chinese Traditional) 2023-01-24 21:53:19 +01:00
Eugen Rochko
a5ec9695df New translations strings.xml (Chinese Simplified) 2023-01-24 21:53:18 +01:00
Eugen Rochko
2784828a93 New translations strings.xml (Ukrainian) 2023-01-24 21:53:16 +01:00
Eugen Rochko
84657e9529 New translations strings.xml (Swedish) 2023-01-24 21:53:15 +01:00
Eugen Rochko
110375462e New translations strings.xml (Slovenian) 2023-01-24 21:53:14 +01:00
Eugen Rochko
09e385633e New translations strings.xml (Russian) 2023-01-24 21:53:14 +01:00
Eugen Rochko
f7410a510f New translations strings.xml (Portuguese) 2023-01-24 21:53:13 +01:00
Eugen Rochko
20511fd39d New translations strings.xml (Dutch) 2023-01-24 21:53:12 +01:00
Eugen Rochko
dbacbe0341 New translations strings.xml (Korean) 2023-01-24 21:53:11 +01:00
Eugen Rochko
bd8da39a19 New translations strings.xml (Japanese) 2023-01-24 21:53:09 +01:00
Eugen Rochko
675a353494 New translations strings.xml (Italian) 2023-01-24 21:53:08 +01:00
Eugen Rochko
7b23ca1c96 New translations strings.xml (Armenian) 2023-01-24 21:53:08 +01:00
Eugen Rochko
61e8c6f435 New translations strings.xml (Hebrew) 2023-01-24 21:53:07 +01:00
Eugen Rochko
a41b8dbb01 New translations strings.xml (Irish) 2023-01-24 21:53:06 +01:00
Eugen Rochko
fe525f9242 New translations strings.xml (Finnish) 2023-01-24 21:53:05 +01:00
Eugen Rochko
7cbae9c0a9 New translations strings.xml (Basque) 2023-01-24 21:53:04 +01:00
Eugen Rochko
93ac0a103f New translations strings.xml (Greek) 2023-01-24 21:53:03 +01:00
Eugen Rochko
3b11787984 New translations strings.xml (German) 2023-01-24 21:53:02 +01:00
Eugen Rochko
7b6fcaf3db New translations strings.xml (Danish) 2023-01-24 21:53:00 +01:00
Eugen Rochko
11b838f394 New translations strings.xml (Catalan) 2023-01-24 21:52:59 +01:00
Eugen Rochko
38bd5eb68e New translations strings.xml (Arabic) 2023-01-24 21:52:58 +01:00
Eugen Rochko
1dc8d66b3f New translations strings.xml (French) 2023-01-24 21:52:57 +01:00
Eugen Rochko
9f64e56923 New translations strings.xml (Romanian) 2023-01-24 21:52:56 +01:00
Eugen Rochko
a9e84678b3 New translations strings.xml (Galician) 2023-01-24 21:52:55 +01:00
Eugen Rochko
d7c5c0074d New translations strings.xml (Turkish) 2023-01-24 21:52:54 +01:00
Eugen Rochko
97e148f4c8 New translations strings.xml (Spanish) 2023-01-24 21:52:53 +01:00
Eugen Rochko
e83bd039b3 New translations strings.xml (Igbo) 2023-01-24 21:52:52 +01:00
Eugen Rochko
a30d288b13 New translations strings.xml (Polish) 2023-01-24 21:52:51 +01:00
Eugen Rochko
ded14711ac New translations strings.xml (Belarusian) 2023-01-24 21:52:50 +01:00
Eugen Rochko
cece9d4aa1 New translations strings.xml (Portuguese, Brazilian) 2023-01-24 21:52:49 +01:00
Eugen Rochko
f7f56c7a9b New translations strings.xml (Hungarian) 2023-01-24 21:52:48 +01:00
Eugen Rochko
613a9de40e New translations strings.xml (Czech) 2023-01-24 21:52:47 +01:00
Eugen Rochko
9ed8ad1382 New translations strings.xml (Norwegian) 2023-01-24 21:52:46 +01:00
Eugen Rochko
7498118800 New translations strings.xml (Belarusian) 2023-01-23 13:24:17 +01:00
Eugen Rochko
b894827607 New translations strings.xml (Belarusian) 2023-01-23 12:18:10 +01:00
Eugen Rochko
8788fb0b27 New translations full_description.txt (Galician) 2023-01-19 06:28:17 +01:00
Eugen Rochko
62d4c62888 New translations strings.xml (Galician) 2023-01-19 06:28:15 +01:00
Eugen Rochko
572d092f88 New translations strings.xml (Galician) 2023-01-19 05:18:11 +01:00
Eugen Rochko
2ff771391c New translations strings.xml (Turkish) 2023-01-17 21:00:59 +01:00
Eugen Rochko
087e55277c New translations strings.xml (Spanish) 2023-01-17 14:46:10 +01:00
Eugen Rochko
a2d45fbbc5 New translations full_description.txt (Spanish) 2023-01-17 13:50:33 +01:00
Eugen Rochko
59262fe345 New translations full_description.txt (Belarusian) 2023-01-17 08:34:46 +01:00
Eugen Rochko
ffc36f7346 New translations short_description.txt (Belarusian) 2023-01-16 16:05:34 +01:00
Eugen Rochko
549ace65f5 New translations full_description.txt (Belarusian) 2023-01-16 16:05:33 +01:00
Eugen Rochko
c76bec2298 New translations strings.xml (Belarusian) 2023-01-16 16:05:32 +01:00
Eugen Rochko
290e47386e New translations strings.xml (Belarusian) 2023-01-16 14:43:34 +01:00
Eugen Rochko
3d96475c21 New translations strings.xml (Belarusian) 2023-01-16 12:54:15 +01:00
Eugen Rochko
b62fe06187 New translations strings.xml (Belarusian) 2023-01-16 11:49:53 +01:00
Eugen Rochko
c0dc2b8392 New translations strings.xml (Belarusian) 2023-01-16 09:21:59 +01:00
Eugen Rochko
e777bbb215 New translations strings.xml (Belarusian) 2023-01-16 08:16:21 +01:00
Eugen Rochko
014f9f4d99 New translations strings.xml (Belarusian) 2023-01-15 22:22:23 +01:00
Eugen Rochko
86bfd3d09f New translations strings.xml (Igbo) 2023-01-15 14:40:38 +01:00
Eugen Rochko
21d6f6da4c New translations title.txt (Igbo) 2023-01-15 13:36:28 +01:00
Eugen Rochko
f826e0ceef New translations short_description.txt (Igbo) 2023-01-15 13:36:28 +01:00
Eugen Rochko
458ad0f51a New translations full_description.txt (Igbo) 2023-01-15 13:36:27 +01:00
Eugen Rochko
9a0ff42ec2 New translations strings.xml (Igbo) 2023-01-15 13:36:26 +01:00
Eugen Rochko
18dae448ec New translations full_description.txt (Portuguese) 2023-01-14 14:57:31 +01:00
Eugen Rochko
fc36a8cc8f New translations full_description.txt (Portuguese) 2023-01-14 13:59:38 +01:00
Eugen Rochko
a390df2b9e New translations full_description.txt (Polish) 2023-01-14 07:31:44 +01:00
Eugen Rochko
6f61d3f0e3 New translations strings.xml (Polish) 2023-01-14 07:31:43 +01:00
Eugen Rochko
3a4e8ebdf4 New translations strings.xml (Polish) 2023-01-14 06:36:08 +01:00
Eugen Rochko
537242b277 New translations strings.xml (Czech) 2023-01-13 17:24:51 +01:00
Eugen Rochko
97eece59ea New translations strings.xml (Belarusian) 2023-01-13 15:29:36 +01:00
Eugen Rochko
fc88d42e50 New translations strings.xml (Belarusian) 2023-01-13 14:21:42 +01:00
Eugen Rochko
ec74712e55 New translations strings.xml (Belarusian) 2023-01-13 11:50:08 +01:00
Eugen Rochko
12e1ccf439 New translations strings.xml (Belarusian) 2023-01-13 10:53:08 +01:00
Eugen Rochko
24b8d5ce7c New translations strings.xml (Belarusian) 2023-01-13 07:50:35 +01:00
Eugen Rochko
46c9c83b63 New translations strings.xml (Belarusian) 2023-01-13 06:47:00 +01:00
Eugen Rochko
526a9fec03 New translations strings.xml (Belarusian) 2023-01-13 05:47:47 +01:00
Eugen Rochko
ca20f3b906 New translations strings.xml (Portuguese, Brazilian) 2023-01-13 01:19:33 +01:00
Eugen Rochko
af8c8a6248 New translations strings.xml (Portuguese, Brazilian) 2023-01-12 22:31:03 +01:00
Eugen Rochko
2940e5d3d8 New translations strings.xml (Portuguese, Brazilian) 2023-01-12 03:45:12 +01:00
Eugen Rochko
c98b001c9f New translations strings.xml (Portuguese, Brazilian) 2023-01-12 02:45:05 +01:00
Eugen Rochko
1fc1c95d6e New translations full_description.txt (Czech) 2023-01-11 12:16:25 +01:00
Eugen Rochko
e4d0c4eda5 New translations strings.xml (Czech) 2023-01-11 12:16:23 +01:00
Eugen Rochko
801d11c8e6 New translations short_description.txt (Norwegian) 2023-01-11 11:15:30 +01:00
Eugen Rochko
8143374929 New translations full_description.txt (Norwegian) 2023-01-11 11:15:29 +01:00
Eugen Rochko
df2ff9f874 New translations strings.xml (Norwegian) 2023-01-11 11:15:28 +01:00
Eugen Rochko
4bac852d37 New translations strings.xml (Norwegian) 2023-01-11 08:30:29 +01:00
Eugen Rochko
862a173392 New translations title.txt (Norwegian) 2023-01-07 17:43:49 +01:00
Eugen Rochko
bd47b31c65 New translations short_description.txt (Norwegian) 2023-01-07 17:43:48 +01:00
Eugen Rochko
aefb7f2e23 New translations full_description.txt (Norwegian) 2023-01-07 17:43:48 +01:00
Eugen Rochko
e509b8afa4 New translations strings.xml (Norwegian) 2023-01-07 17:43:47 +01:00
Eugen Rochko
7b94f7258f New translations title.txt (Danish) 2023-01-07 17:43:46 +01:00
Eugen Rochko
8d81efae4e New translations short_description.txt (Danish) 2023-01-07 17:43:45 +01:00
Eugen Rochko
5b0b80277c New translations full_description.txt (Danish) 2023-01-07 17:43:44 +01:00
Eugen Rochko
60293d5a65 New translations strings.xml (Danish) 2023-01-07 17:43:43 +01:00
Eugen Rochko
09b4aff9f5 New translations strings.xml (Filipino) 2023-01-06 11:31:21 +01:00
Eugen Rochko
7326cbeb14 New translations strings.xml (Burmese) 2023-01-06 10:13:45 +01:00
Eugen Rochko
91bd3fa4ea New translations full_description.txt (Burmese) 2023-01-06 09:04:21 +01:00
Eugen Rochko
3cc6a9905e New translations strings.xml (Burmese) 2023-01-06 09:04:20 +01:00
Eugen Rochko
f01bfcd372 New translations full_description.txt (Burmese) 2023-01-06 06:45:57 +01:00
Eugen Rochko
81b4365a14 New translations full_description.txt (Swedish) 2023-01-03 12:40:32 +01:00
Eugen Rochko
7ab28a6db6 New translations strings.xml (Swedish) 2023-01-03 12:40:31 +01:00
Eugen Rochko
3bb548cf22 New translations full_description.txt (Burmese) 2023-01-03 08:43:34 +01:00
Eugen Rochko
ba788d1b34 New translations full_description.txt (Burmese) 2023-01-03 07:13:43 +01:00
Eugen Rochko
f51b01bcd9 New translations short_description.txt (Burmese) 2023-01-03 06:17:54 +01:00
Eugen Rochko
361c97a9df New translations full_description.txt (Burmese) 2023-01-03 06:17:53 +01:00
Eugen Rochko
f34153e601 New translations title.txt (Burmese) 2023-01-02 22:49:11 +01:00
Eugen Rochko
67240acb48 New translations short_description.txt (Burmese) 2023-01-02 22:49:11 +01:00
Eugen Rochko
4395dbfa7c New translations full_description.txt (Burmese) 2023-01-02 22:49:10 +01:00
Eugen Rochko
48b0207636 New translations strings.xml (Burmese) 2023-01-02 22:49:09 +01:00
Eugen Rochko
f7b8ed519c New translations strings.xml (Filipino) 2023-01-02 20:56:03 +01:00
Eugen Rochko
eba88f2c0a New translations strings.xml (Filipino) 2023-01-02 20:00:36 +01:00
Eugen Rochko
8d95355727 New translations short_description.txt (Filipino) 2023-01-01 17:18:41 +01:00
Eugen Rochko
e05a67c4ab New translations full_description.txt (Filipino) 2023-01-01 17:18:40 +01:00
Eugen Rochko
5db91627a1 New translations strings.xml (Filipino) 2023-01-01 17:18:39 +01:00
Eugen Rochko
7e473aa8a8 New translations strings.xml (Filipino) 2023-01-01 16:17:30 +01:00
Eugen Rochko
1e1edd698d New translations strings.xml (Vietnamese) 2023-01-01 09:16:11 +01:00
Eugen Rochko
aa42a0a4c4 New translations strings.xml (Filipino) 2022-12-29 06:02:04 +01:00
Eugen Rochko
ad61596f66 New translations strings.xml (Filipino) 2022-12-29 05:04:36 +01:00
Eugen Rochko
bd518b3038 New translations strings.xml (Filipino) 2022-12-28 14:31:07 +01:00
Eugen Rochko
db3129ab11 New translations strings.xml (Arabic) 2022-12-27 21:32:08 +01:00
Eugen Rochko
57a38a83e4 New translations strings.xml (Russian) 2022-12-24 14:52:14 +01:00
Eugen Rochko
c0de43e2f3 New translations strings.xml (Vietnamese) 2022-12-24 06:25:12 +01:00
Eugen Rochko
c6e29c9ce4 New translations strings.xml (Filipino) 2022-12-23 14:24:05 +01:00
Eugen Rochko
35e8f5eddf New translations strings.xml (Filipino) 2022-12-23 11:33:45 +01:00
Eugen Rochko
40ed72aeff New translations full_description.txt (Dutch) 2022-12-22 02:02:15 +01:00
Eugen Rochko
75033cf42e New translations strings.xml (Dutch) 2022-12-22 02:02:14 +01:00
Eugen Rochko
4a29a63d50 New translations short_description.txt (Dutch) 2022-12-21 23:28:34 +01:00
Eugen Rochko
595a6847dc New translations strings.xml (Dutch) 2022-12-21 23:28:33 +01:00
Eugen Rochko
64f403b644 New translations full_description.txt (Thai) 2022-12-19 21:15:22 +01:00
Eugen Rochko
314517c378 New translations full_description.txt (Hungarian) 2022-12-19 11:42:43 +01:00
Eugen Rochko
b90fc55b3f New translations strings.xml (Hungarian) 2022-12-19 11:42:42 +01:00
Eugen Rochko
cd57966810 New translations full_description.txt (Indonesian) 2022-12-18 00:52:58 +01:00
Eugen Rochko
8c0851e2b5 New translations strings.xml (Indonesian) 2022-12-18 00:52:57 +01:00
Eugen Rochko
b9efa434d2 New translations strings.xml (Thai) 2022-12-16 22:37:47 +01:00
Eugen Rochko
adc085a313 New translations strings.xml (Thai) 2022-12-16 21:27:39 +01:00
Eugen Rochko
a2a2f67239 New translations strings.xml (Catalan) 2022-12-16 17:40:43 +01:00
Eugen Rochko
c30fba61ca New translations strings.xml (Swedish) 2022-12-16 13:09:15 +01:00
Eugen Rochko
f09b37d28f New translations strings.xml (Persian) 2022-12-16 09:28:27 +01:00
Eugen Rochko
6cbc89b01d New translations strings.xml (Persian) 2022-12-16 08:22:43 +01:00
Eugen Rochko
ffd538fbd0 New translations strings.xml (Dutch) 2022-12-15 17:36:44 +01:00
Eugen Rochko
1f27f66432 New translations full_description.txt (Dutch) 2022-12-15 16:30:46 +01:00
Eugen Rochko
25f302f62f New translations strings.xml (Basque) 2022-12-14 13:39:14 +01:00
Eugen Rochko
d54eb6ed73 New translations strings.xml (Basque) 2022-12-14 12:41:52 +01:00
Eugen Rochko
24a6d77777 New translations strings.xml (Spanish) 2022-12-13 16:47:57 +01:00
Eugen Rochko
5cbebe7ec6 New translations strings.xml (Portuguese) 2022-12-13 13:29:44 +01:00
Eugen Rochko
a31c310ffa New translations full_description.txt (German) 2022-12-13 12:26:47 +01:00
Eugen Rochko
752d0b5ca9 New translations strings.xml (Korean) 2022-12-13 02:15:40 +01:00
Eugen Rochko
170131188a New translations title.txt (Persian) 2022-12-12 14:17:48 +01:00
Eugen Rochko
3269613139 New translations short_description.txt (Persian) 2022-12-12 14:17:47 +01:00
Eugen Rochko
52cc74fb85 New translations full_description.txt (Persian) 2022-12-12 14:17:46 +01:00
Eugen Rochko
d7d09b1d56 New translations strings.xml (Persian) 2022-12-12 14:17:45 +01:00
Eugen Rochko
797f2b5929 New translations strings.xml (Spanish) 2022-12-12 13:22:18 +01:00
Eugen Rochko
fa5053fe38 New translations full_description.txt (Spanish) 2022-12-12 11:19:07 +01:00
Eugen Rochko
c682c249bd New translations strings.xml (Spanish) 2022-12-12 11:19:06 +01:00
Eugen Rochko
01c229c7c1 New translations strings.xml (Spanish) 2022-12-12 10:19:26 +01:00
Eugen Rochko
83f39d6b22 New translations strings.xml (Thai) 2022-12-11 21:27:37 +01:00
Eugen Rochko
715ec6e7c6 New translations strings.xml (Thai) 2022-12-11 20:11:30 +01:00
Eugen Rochko
b6fa34e87f New translations strings.xml (Italian) 2022-12-11 17:31:10 +01:00
Eugen Rochko
6ff14cc7a1 New translations full_description.txt (Slovenian) 2022-12-11 15:55:38 +01:00
Eugen Rochko
d606ce89e0 New translations strings.xml (Slovenian) 2022-12-11 15:55:37 +01:00
Eugen Rochko
41e80f1d24 New translations full_description.txt (Hungarian) 2022-12-11 14:42:32 +01:00
Eugen Rochko
8decd66e26 New translations strings.xml (Hungarian) 2022-12-11 14:42:31 +01:00
Eugen Rochko
c033849fb4 New translations strings.xml (Thai) 2022-12-11 14:42:30 +01:00
Eugen Rochko
14054b2198 New translations strings.xml (Hungarian) 2022-12-11 13:46:42 +01:00
Eugen Rochko
3c3a6712bd New translations strings.xml (Icelandic) 2022-12-11 10:41:24 +01:00
Eugen Rochko
6a97ed41e0 New translations strings.xml (Icelandic) 2022-12-11 09:42:40 +01:00
Eugen Rochko
bfedd6c953 New translations full_description.txt (Vietnamese) 2022-12-11 06:15:06 +01:00
Eugen Rochko
23d72346b3 New translations strings.xml (Vietnamese) 2022-12-11 06:15:05 +01:00
Eugen Rochko
e9510875ea New translations strings.xml (Vietnamese) 2022-12-11 05:13:59 +01:00
Eugen Rochko
84d7b6c48f New translations strings.xml (Italian) 2022-12-11 01:14:30 +01:00
Eugen Rochko
5f4af7024d New translations full_description.txt (Portuguese, Brazilian) 2022-12-10 20:48:20 +01:00
Eugen Rochko
3b16eb807e New translations strings.xml (Portuguese, Brazilian) 2022-12-10 20:48:19 +01:00
Eugen Rochko
ef6b52049f New translations strings.xml (German) 2022-12-10 17:34:19 +01:00
Eugen Rochko
a7b035bb8e New translations strings.xml (Chinese Simplified) 2022-12-10 16:11:51 +01:00
Eugen Rochko
645216b8eb New translations strings.xml (Chinese Simplified) 2022-12-10 15:10:07 +01:00
Eugen Rochko
2b1c18635e New translations strings.xml (Italian) 2022-12-10 11:42:34 +01:00
Eugen Rochko
bb7a76617e New translations full_description.txt (Korean) 2022-12-10 06:43:06 +01:00
Eugen Rochko
ab50e7861a New translations strings.xml (Korean) 2022-12-10 05:29:13 +01:00
Eugen Rochko
d52b88c816 New translations strings.xml (Korean) 2022-12-10 03:51:49 +01:00
Eugen Rochko
e5d0a2a14c New translations full_description.txt (Korean) 2022-12-10 02:44:45 +01:00
Eugen Rochko
11e9db7ded New translations strings.xml (Korean) 2022-12-10 02:44:44 +01:00
Eugen Rochko
23c1a78d01 New translations strings.xml (German) 2022-12-09 21:35:30 +01:00
Eugen Rochko
e524423191 New translations full_description.txt (Ukrainian) 2022-12-09 20:36:43 +01:00
Eugen Rochko
7286e71442 New translations strings.xml (Ukrainian) 2022-12-09 20:36:42 +01:00
Eugen Rochko
71681458a1 New translations strings.xml (French) 2022-12-09 19:20:25 +01:00
Eugen Rochko
4d4b3c8867 New translations strings.xml (French) 2022-12-09 17:51:26 +01:00
Eugen Rochko
681d808a74 New translations strings.xml (Kabyle) 2022-12-09 16:35:54 +01:00
Eugen Rochko
876a0b27a6 New translations strings.xml (French) 2022-12-09 16:35:53 +01:00
Eugen Rochko
9dce3b9a17 New translations full_description.txt (Arabic) 2022-12-09 14:48:38 +01:00
Eugen Rochko
f77b487520 New translations strings.xml (Arabic) 2022-12-09 14:48:37 +01:00
Eugen Rochko
f3c73a5c8a New translations strings.xml (Chinese Traditional) 2022-12-09 03:47:27 +01:00
Eugen Rochko
37502b3747 New translations strings.xml (Chinese Traditional) 2022-12-09 02:46:30 +01:00
Eugen Rochko
309e84d14c New translations strings.xml (Filipino) 2022-12-08 21:26:30 +01:00
Eugen Rochko
ff464bef9f New translations strings.xml (Hungarian) 2022-12-08 21:26:29 +01:00
Eugen Rochko
dfa5cd65f3 New translations strings.xml (Icelandic) 2022-12-08 21:26:28 +01:00
Eugen Rochko
ccba5969a5 New translations strings.xml (Belarusian) 2022-12-08 21:26:27 +01:00
Eugen Rochko
03baef713d New translations strings.xml (Slovenian) 2022-12-08 21:26:27 +01:00
Eugen Rochko
a3617349bb New translations strings.xml (Irish) 2022-12-08 21:26:26 +01:00
Eugen Rochko
e57b22d2fc New translations strings.xml (Romanian) 2022-12-08 21:26:25 +01:00
Eugen Rochko
6aabaa497d New translations strings.xml (Bengali) 2022-12-08 21:26:24 +01:00
Eugen Rochko
6caa142ead New translations strings.xml (Hindi) 2022-12-08 21:26:23 +01:00
Eugen Rochko
b01e6e30a4 New translations strings.xml (Scottish Gaelic) 2022-12-08 21:26:21 +01:00
Eugen Rochko
5e3a612828 New translations strings.xml (Sinhala) 2022-12-08 21:26:19 +01:00
Eugen Rochko
b498e7e83e New translations strings.xml (Indonesian) 2022-12-08 21:26:18 +01:00
Eugen Rochko
7508643c89 New translations strings.xml (Dutch) 2022-12-08 21:26:17 +01:00
Eugen Rochko
24d2189399 New translations strings.xml (Kabyle) 2022-12-08 21:26:17 +01:00
Eugen Rochko
4e470f34fd New translations strings.xml (Occitan) 2022-12-08 21:26:16 +01:00
Eugen Rochko
e3ca6448f2 New translations strings.xml (Bosnian) 2022-12-08 21:26:15 +01:00
Eugen Rochko
9dadac7d93 New translations strings.xml (Croatian) 2022-12-08 21:26:14 +01:00
Eugen Rochko
0715bd0aba New translations strings.xml (Thai) 2022-12-08 21:26:13 +01:00
Eugen Rochko
92772e7ee0 New translations strings.xml (Galician) 2022-12-08 21:26:12 +01:00
Eugen Rochko
f9f6c879e0 New translations strings.xml (Vietnamese) 2022-12-08 21:26:11 +01:00
Eugen Rochko
ec7623f5c5 New translations strings.xml (Chinese Simplified) 2022-12-08 21:26:10 +01:00
Eugen Rochko
0163242258 New translations strings.xml (Ukrainian) 2022-12-08 21:26:09 +01:00
Eugen Rochko
3f9c8247c6 New translations strings.xml (Turkish) 2022-12-08 21:26:08 +01:00
Eugen Rochko
20865ad202 New translations strings.xml (Swedish) 2022-12-08 21:26:06 +01:00
Eugen Rochko
b5ac895b15 New translations strings.xml (Russian) 2022-12-08 21:26:05 +01:00
Eugen Rochko
fbd550228b New translations strings.xml (Portuguese) 2022-12-08 21:26:04 +01:00
Eugen Rochko
238758fc0b New translations strings.xml (Korean) 2022-12-08 21:26:03 +01:00
Eugen Rochko
328a4339a4 New translations strings.xml (Japanese) 2022-12-08 21:26:02 +01:00
Eugen Rochko
747d958507 New translations strings.xml (Italian) 2022-12-08 21:26:01 +01:00
Eugen Rochko
8622160e62 New translations strings.xml (Armenian) 2022-12-08 21:26:00 +01:00
Eugen Rochko
df1042e87d New translations strings.xml (Hebrew) 2022-12-08 21:25:59 +01:00
Eugen Rochko
a5c6c11f09 New translations strings.xml (Finnish) 2022-12-08 21:25:58 +01:00
Eugen Rochko
7bd602cd45 New translations strings.xml (Basque) 2022-12-08 21:25:57 +01:00
Eugen Rochko
2065468f1f New translations strings.xml (Greek) 2022-12-08 21:25:56 +01:00
Eugen Rochko
7f9061d0c8 New translations strings.xml (Czech) 2022-12-08 21:25:55 +01:00
Eugen Rochko
00a638393e New translations strings.xml (Catalan) 2022-12-08 21:25:54 +01:00
Eugen Rochko
f21194f877 New translations strings.xml (Spanish) 2022-12-08 21:25:53 +01:00
Eugen Rochko
1772351fc5 New translations strings.xml (French) 2022-12-08 21:25:52 +01:00
Eugen Rochko
1030fc5e16 New translations strings.xml (Arabic) 2022-12-08 21:25:51 +01:00
Eugen Rochko
bef3ae96f6 New translations strings.xml (German) 2022-12-08 21:25:51 +01:00
Eugen Rochko
c9fa5b2104 New translations strings.xml (Chinese Traditional) 2022-12-08 21:25:50 +01:00
Eugen Rochko
79cd8c0805 New translations strings.xml (Polish) 2022-12-08 21:25:48 +01:00
Eugen Rochko
2b80420794 New translations strings.xml (Portuguese, Brazilian) 2022-12-08 21:25:47 +01:00
Eugen Rochko
b8e18613b1 New translations full_description.txt (French) 2022-12-08 18:43:26 +01:00
Eugen Rochko
87289e4804 New translations strings.xml (Ukrainian) 2022-12-08 18:43:25 +01:00
Eugen Rochko
ba3a06a782 New translations full_description.txt (Ukrainian) 2022-12-08 15:57:19 +01:00
Eugen Rochko
2764ef0417 New translations strings.xml (Ukrainian) 2022-12-08 15:57:18 +01:00
Eugen Rochko
ae0e89aa31 New translations full_description.txt (Catalan) 2022-12-08 13:36:42 +01:00
Eugen Rochko
d0e99cc517 New translations strings.xml (Catalan) 2022-12-08 13:36:41 +01:00
Eugen Rochko
604fb01d6c New translations strings.xml (Catalan) 2022-12-08 12:29:42 +01:00
Eugen Rochko
256a1687d1 New translations full_description.txt (Chinese Traditional) 2022-12-07 12:56:51 +01:00
Eugen Rochko
ea1ae58e54 New translations strings.xml (Chinese Traditional) 2022-12-07 12:56:50 +01:00
Eugen Rochko
fe9d119fe2 New translations strings.xml (Chinese Traditional) 2022-12-07 11:55:33 +01:00
Eugen Rochko
4a199533c1 New translations short_description.txt (Vietnamese) 2022-12-07 02:58:56 +01:00
Eugen Rochko
7e785f1b6c New translations strings.xml (Ukrainian) 2022-12-07 02:58:55 +01:00
Eugen Rochko
85b4824ea2 New translations strings.xml (Russian) 2022-12-07 02:58:54 +01:00
Eugen Rochko
d39af74bcc New translations strings.xml (Italian) 2022-12-07 00:52:19 +01:00
Eugen Rochko
bfb52af454 New translations full_description.txt (Italian) 2022-12-06 23:44:22 +01:00
Eugen Rochko
5630e5d488 New translations strings.xml (Italian) 2022-12-06 23:44:21 +01:00
Eugen Rochko
29780ecf22 New translations full_description.txt (Icelandic) 2022-12-06 19:46:01 +01:00
Eugen Rochko
a8b542feaa New translations full_description.txt (Kabyle) 2022-12-06 17:09:14 +01:00
Eugen Rochko
e85b182da7 New translations full_description.txt (Occitan) 2022-12-06 17:09:13 +01:00
Eugen Rochko
84e9195869 New translations full_description.txt (Scottish Gaelic) 2022-12-06 17:09:12 +01:00
Eugen Rochko
7a739457c9 New translations full_description.txt (Sinhala) 2022-12-06 17:09:11 +01:00
Eugen Rochko
30905a7c36 New translations full_description.txt (Bosnian) 2022-12-06 17:09:10 +01:00
Eugen Rochko
0326a6834a New translations full_description.txt (Hindi) 2022-12-06 17:09:09 +01:00
Eugen Rochko
7c75a67f9f New translations full_description.txt (Croatian) 2022-12-06 17:09:06 +01:00
Eugen Rochko
1aa0fbf7d5 New translations full_description.txt (Thai) 2022-12-06 17:09:04 +01:00
Eugen Rochko
9adce93645 New translations full_description.txt (Bengali) 2022-12-06 17:09:03 +01:00
Eugen Rochko
b7392ef62d New translations full_description.txt (Indonesian) 2022-12-06 17:09:02 +01:00
Eugen Rochko
6b55c90a93 New translations full_description.txt (Portuguese, Brazilian) 2022-12-06 17:09:00 +01:00
Eugen Rochko
9e9cd9ea4e New translations full_description.txt (Galician) 2022-12-06 17:08:59 +01:00
Eugen Rochko
ef91fb9e06 New translations full_description.txt (Vietnamese) 2022-12-06 17:08:57 +01:00
Eugen Rochko
2f49c525b6 New translations full_description.txt (Chinese Traditional) 2022-12-06 17:08:56 +01:00
Eugen Rochko
f78f179071 New translations full_description.txt (Chinese Simplified) 2022-12-06 17:08:55 +01:00
Eugen Rochko
6ed310f8ce New translations full_description.txt (Ukrainian) 2022-12-06 17:08:54 +01:00
Eugen Rochko
8da5a32b48 New translations full_description.txt (Turkish) 2022-12-06 17:08:53 +01:00
Eugen Rochko
74fcdaa223 New translations full_description.txt (Swedish) 2022-12-06 17:08:52 +01:00
Eugen Rochko
6b77b8fbbb New translations full_description.txt (Slovenian) 2022-12-06 17:08:51 +01:00
Eugen Rochko
9f9fdca53d New translations full_description.txt (Russian) 2022-12-06 17:08:50 +01:00
Eugen Rochko
540317017f New translations full_description.txt (Portuguese) 2022-12-06 17:08:47 +01:00
Eugen Rochko
567174fcde New translations full_description.txt (Polish) 2022-12-06 17:08:44 +01:00
Eugen Rochko
262bc1dcbe New translations full_description.txt (Dutch) 2022-12-06 17:08:43 +01:00
Eugen Rochko
b931928434 New translations full_description.txt (Korean) 2022-12-06 17:08:42 +01:00
Eugen Rochko
7e2057a847 New translations full_description.txt (Japanese) 2022-12-06 17:08:40 +01:00
Eugen Rochko
4a9b98f534 New translations full_description.txt (Italian) 2022-12-06 17:08:39 +01:00
Eugen Rochko
7bf45581e3 New translations full_description.txt (Armenian) 2022-12-06 17:08:38 +01:00
Eugen Rochko
61a7fe6217 New translations full_description.txt (Hebrew) 2022-12-06 17:08:37 +01:00
Eugen Rochko
efa1a3f14f New translations full_description.txt (Irish) 2022-12-06 17:08:36 +01:00
Eugen Rochko
925866c3f0 New translations full_description.txt (Finnish) 2022-12-06 17:08:35 +01:00
Eugen Rochko
7291ec6f88 New translations full_description.txt (Basque) 2022-12-06 17:08:34 +01:00
Eugen Rochko
16c9203956 New translations full_description.txt (Greek) 2022-12-06 17:08:33 +01:00
Eugen Rochko
b08f104663 New translations full_description.txt (Catalan) 2022-12-06 17:08:32 +01:00
Eugen Rochko
82b7c6c290 New translations full_description.txt (Arabic) 2022-12-06 17:08:31 +01:00
Eugen Rochko
63009a332f New translations full_description.txt (Spanish) 2022-12-06 17:08:29 +01:00
Eugen Rochko
95e56db159 New translations full_description.txt (French) 2022-12-06 17:08:28 +01:00
Eugen Rochko
48f981036b New translations full_description.txt (Romanian) 2022-12-06 17:08:27 +01:00
Eugen Rochko
79be77f986 New translations full_description.txt (Filipino) 2022-12-06 17:08:26 +01:00
Eugen Rochko
4fafab19fc New translations full_description.txt (Hungarian) 2022-12-06 17:08:25 +01:00
Eugen Rochko
cd71f6e858 New translations full_description.txt (Icelandic) 2022-12-06 17:08:24 +01:00
Eugen Rochko
63d5068c2c New translations full_description.txt (Belarusian) 2022-12-06 17:08:21 +01:00
Eugen Rochko
a9bc7fdeb7 New translations full_description.txt (Czech) 2022-12-06 17:08:20 +01:00
Eugen Rochko
89dc2608bc New translations full_description.txt (German) 2022-12-06 17:08:19 +01:00
172 changed files with 5231 additions and 1635 deletions

View File

@@ -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 {

View File

@@ -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())

View File

@@ -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;

View File

@@ -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);

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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));

View File

@@ -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();

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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<>(){

View File

@@ -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;
}

View File

@@ -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));

View File

@@ -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{

View File

@@ -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);
}
}

View File

@@ -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()));

View File

@@ -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;

View File

@@ -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{

View File

@@ -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+
'}';
}

View File

@@ -0,0 +1,5 @@
package org.joinmastodon.android.model;
public interface Searchable {
String getQuery();
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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);
});

View File

@@ -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
}
});
}
}
}

View File

@@ -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);
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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{

View File

@@ -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
}
});
}
}
}

View File

@@ -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);
}

View File

@@ -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();
}
}
}

View File

@@ -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;
}

View File

@@ -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)

View File

@@ -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);
}
}

View File

@@ -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.

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}
}

View File

@@ -1,4 +1,4 @@
package org.joinmastodon.android.ui.utils;
package org.joinmastodon.android.utils;
import android.os.SystemClock;

View File

@@ -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);
}
}

View File

@@ -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>

View File

@@ -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>

View 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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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" />

View File

@@ -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>

View File

@@ -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

View File

@@ -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>

View File

@@ -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"

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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"

View File

@@ -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"

View 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>

View File

@@ -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"/>

View File

@@ -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"/>

View File

@@ -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. جرب واحدا أو &lt;a&gt;اختار خادم مختلف&lt;/a&gt;.</string>
<string name="signup_username_taken">اِسم المُستَخدِم هذا مأخوذٌ بالفعل.</string>
</resources>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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">Sha 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">Dacord</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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View 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>

View File

@@ -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 &lt;a&gt;wähle einen anderen Server&lt;/a&gt;.</string>
<string name="signup_username_taken">Dieser Benutzername ist bereits vergeben.</string>
</resources>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View 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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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é dutilisateurs 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 dutilisateur</string>
<string name="email">courriel</string>
<string name="password">mot de passe</string>
<string name="display_name">Nom</string>
<string name="username">Nom dutilisateur</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 lapplication 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 den-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 lapplication 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 lapplication Mastodon ainsi que celle de votre serveur.</string>
<string name="privacy_policy_title">Votre Confidentialité</string>
<string name="i_agree">Jaccepte</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">Quest-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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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, dhfhaoidte 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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 &lt;a&gt;válassz másik kiszolgálót&lt;/a&gt;.</string>
<string name="signup_username_taken">Ez a felhasználónév már foglalt.</string>
</resources>

View File

@@ -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>

View 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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 &lt;a&gt;veldu annan netþjón&lt;/a&gt;.</string>
<string name="signup_username_taken">Þetta notandanafn er þegar í notkun.</string>
</resources>

View File

@@ -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 &lt;a&gt;scegli un altro server&lt;/a&gt;.</string>
<string name="signup_username_taken">Questo nome utente è già in uso.</string>
</resources>

View File

@@ -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