Compare commits

...

189 Commits

Author SHA1 Message Date
sk
58abdad62a bump version 2022-11-07 21:18:41 +01:00
sk
c693414cc3 update readme 2022-11-07 21:18:37 +01:00
sk
ee158e1aba Merge branch 'feature/mark-media-as-sensitive' into fork 2022-11-07 21:04:44 +01:00
sk
40d478aaec tweak styles 2022-11-07 21:04:28 +01:00
sk
e7fb96b3ff Merge branch 'feature/mark-media-as-sensitive' into fork 2022-11-07 20:47:15 +01:00
sk
ef75427b45 fix option not being there when editing 2022-11-07 20:46:49 +01:00
sk
2ff4f00774 Merge branch 'feature/mark-media-as-sensitive' into fork 2022-11-07 20:17:39 +01:00
sk
534fd8c119 implement "mark media as sensitive" button
fixes #21
2022-11-07 20:15:16 +01:00
sk
2d2cd89454 Merge branch 'spoiler-height-independent' into fork 2022-11-07 17:32:55 +01:00
sk
9f3f5ca7c1 make spoiler height independent of content
fixes #12, fixes mastodon/mastodon-android#166
2022-11-07 17:32:37 +01:00
Samuel Kaiser
c0e6f17c83 Merge pull request #28 from br4yd/patch-1
Add German translation for the federated timeline
2022-11-07 16:57:21 +01:00
sk
677f1cb42d Merge remote-tracking branch 'origin/upstream' into fork 2022-11-07 16:56:27 +01:00
Gregory K
1ac6a04a46 Merge pull request #309 from julroy67/perapp-language
Add Android 13 per-app language preferences
2022-11-07 06:49:58 +03:00
Julien Humbert
21927d2e25 Add missing line in Android Manifest 2022-11-07 12:32:20 +09:00
Julien Humbert
c35441f5f7 Add per-app language preferences 2022-11-07 12:27:26 +09:00
br4yd
3718fe6601 Add German translation for the federated timeline
I added the translation strings for the federation timeline tab to the German translation file and also translated the values.
2022-11-06 22:21:53 +01:00
sk
095f234bd5 bump version 2022-11-06 11:16:31 +01:00
sk
f10c0e06db Merge branch 'fork' of github.com:sk22/mastodon-android-fork into fork 2022-11-06 11:13:42 +01:00
sk
ebbd5d1fa3 Merge branch 'upstream' into fork 2022-11-06 11:13:26 +01:00
Grishka
c8abf26040 Fix #301 2022-11-06 05:43:17 +03:00
Grishka
bc733af147 Actually no, this makes more sense 2022-11-06 05:39:22 +03:00
Grishka
77a2fd2a60 Fix #298 2022-11-06 05:36:43 +03:00
Samuel Kaiser
5cfc5eb08a Update README.md 2022-11-05 11:27:02 +01:00
Samuel Kaiser
b832d2df26 Update README.md 2022-11-04 18:02:33 +01:00
Samuel Kaiser
db34dc40ba Merge branch 'mastodon:master' into fork 2022-11-04 14:32:13 +01:00
Gregory K
bfa48c2d3e Merge pull request #289 from sk22/fix-editing-cw
Fix spoiler not being published when editing
2022-11-04 07:02:40 +03:00
Gregory K
b5e229a84d Merge pull request #288 from sk22/fix-editing-visibility
Fix wrong visibility displayed when editing
2022-11-04 07:02:19 +03:00
sk
ef207f885b increase update check interval 2022-11-04 03:37:32 +01:00
sk
c4eee28335 Merge branch 'feature/check-for-update-button' into fork 2022-11-04 03:34:06 +01:00
sk
6fe466779e add toash message 2022-11-04 03:33:41 +01:00
sk
e71db1b883 custom app name in strings 2022-11-04 03:11:10 +01:00
sk
b6efafe99d Merge branch 'feature/check-for-update-button' into fork 2022-11-04 03:09:39 +01:00
sk
688d466f8e implement manual update check settings item 2022-11-04 03:09:19 +01:00
Samuel Kaiser
3c5797932e add download badge 2022-11-03 17:42:31 +01:00
sk
48a5e262ce bump version 2022-11-03 17:18:57 +01:00
sk
63b0365208 remove reverted default visibility 2022-11-03 17:18:42 +01:00
sk
972c05d60b Revert "set unlisted as default visibility"
This reverts commit d34653750e.
2022-11-03 17:13:10 +01:00
sk
acb5778e0b bump version, again 2022-11-03 16:36:31 +01:00
sk
7694c50358 Merge branch 'fix-editing-cw' into fork 2022-11-03 16:35:31 +01:00
sk
7ffa368d10 fix spoiler not being published when editing 2022-11-03 16:33:12 +01:00
Y32Gcnte8z
53f8f41d88 remain visibility when editing 2022-11-03 16:15:17 +01:00
sk
93d57d847e fix newly published posts appearing twice
see https://github.com/mastodon/mastodon-android/issues/283
2022-11-03 16:14:12 +01:00
sk
83a4f5eec2 re-add missing onStatusUpdate event listener 2022-11-03 16:11:44 +01:00
Samuel Kaiser
836c2dba8d Merge branch 'mastodon:master' into fork 2022-11-02 22:32:57 +01:00
Samuel Kaiser
13ae8d2ebe Update README.md 2022-11-02 22:30:16 +01:00
Gregory K
98dafb4e49 Merge pull request #280 from sk22/fix-notifications-crash
Check whether title status item is null to fix null pointer exception
2022-11-03 00:27:07 +03:00
sk
85b8bae42e bump version 2022-11-02 22:15:26 +01:00
Samuel Kaiser
64416ef9ee Merge pull request #26 from Y32Gcnte8z/fork
Should we also change the client name in the footer of status?
2022-11-02 21:55:20 +01:00
Samuel Kaiser
6274ab3384 Merge pull request #27 from Y32Gcnte8z/visibility
Retain visibility of status when editing
2022-11-02 21:53:34 +01:00
sk
4ea5d94dc6 Merge branch 'fix-notifications-crash' into fork 2022-11-02 21:41:30 +01:00
sk
db4dd436b7 more concise null check 2022-11-02 21:36:14 +01:00
sk
6906ac6c8f remove unnecessary import 2022-11-02 21:34:05 +01:00
sk
bc0b56a90e avoid null in notification display items
fixes bug where type = status, but status = null,
causing buildDisplayItems to return a null title status item and an account card
2022-11-02 21:31:44 +01:00
sk
349d95b8ee fix syntax error 2022-11-02 20:25:42 +01:00
sk
8c8eb395de Merge remote-tracking branch 'origin/upstream' into fork 2022-11-02 20:22:33 +01:00
Grishka
50c844aa25 It was the wrong icon this whole time 2022-11-02 11:06:00 +03:00
Grishka
85b232330b Merge branch 'l10n_master' 2022-11-02 11:02:18 +03:00
Grishka
b4c305d094 Add privacy policy step to the signup flow 2022-11-02 11:01:52 +03:00
Grishka
be2ee3a029 Fix #277 2022-11-02 09:07:48 +03:00
Eugen Rochko
118c5d4b44 New translations strings.xml (French) 2022-11-01 21:31:10 +01:00
Eugen Rochko
699ececc42 New translations strings.xml (French) 2022-11-01 20:17:30 +01:00
Eugen Rochko
30083837a5 New translations full_description.txt (Vietnamese) 2022-11-01 18:21:16 +01:00
Eugen Rochko
ea7aa6c52f New translations strings.xml (Vietnamese) 2022-11-01 18:21:15 +01:00
Eugen Rochko
99a71c67e4 New translations full_description.txt (German) 2022-11-01 15:23:49 +01:00
Eugen Rochko
b3c0550a86 New translations strings.xml (German) 2022-11-01 15:23:47 +01:00
Eugen Rochko
39a0c6d08a New translations strings.xml (Vietnamese) 2022-11-01 11:03:52 +01:00
Eugen Rochko
4233c743e2 New translations strings.xml (Italian) 2022-10-31 22:06:56 +01:00
Eugen Rochko
7cef4d282c New translations strings.xml (German) 2022-10-31 19:11:31 +01:00
Eugen Rochko
df6e085c97 New translations strings.xml (German) 2022-10-31 18:14:37 +01:00
Eugen Rochko
70cf48355e New translations strings.xml (German) 2022-10-31 10:54:54 +01:00
Eugen Rochko
da06c798d7 New translations strings.xml (German) 2022-10-31 09:23:34 +01:00
Eugen Rochko
9055c094e8 New translations strings.xml (Kabyle) 2022-10-31 07:46:18 +01:00
Eugen Rochko
5ab3ae3d59 New translations strings.xml (Chinese Traditional) 2022-10-31 07:46:17 +01:00
Eugen Rochko
92ebb2f339 New translations strings.xml (German) 2022-10-31 07:46:16 +01:00
Eugen Rochko
d8c034dfa3 New translations strings.xml (Arabic) 2022-10-31 07:46:15 +01:00
Eugen Rochko
247516849e New translations strings.xml (French) 2022-10-31 07:46:14 +01:00
Eugen Rochko
aad9996b6f New translations strings.xml (Spanish) 2022-10-31 07:46:13 +01:00
Eugen Rochko
76c1ad07a3 New translations strings.xml (Catalan) 2022-10-31 07:46:12 +01:00
Eugen Rochko
49599f48bb New translations strings.xml (Czech) 2022-10-31 07:46:11 +01:00
Eugen Rochko
158d128316 New translations strings.xml (Greek) 2022-10-31 07:46:09 +01:00
Eugen Rochko
00897e7388 New translations strings.xml (Basque) 2022-10-31 07:46:08 +01:00
Eugen Rochko
1867f294c8 New translations strings.xml (Finnish) 2022-10-31 07:46:07 +01:00
Eugen Rochko
eaa189d6b0 New translations strings.xml (Hebrew) 2022-10-31 07:46:06 +01:00
Eugen Rochko
87d11dcb0a New translations strings.xml (Armenian) 2022-10-31 07:46:05 +01:00
Eugen Rochko
ba99394890 New translations strings.xml (Italian) 2022-10-31 07:46:04 +01:00
Eugen Rochko
6b8236021e New translations strings.xml (Polish) 2022-10-31 07:46:03 +01:00
Eugen Rochko
68b12a579c New translations strings.xml (Japanese) 2022-10-31 07:46:01 +01:00
Eugen Rochko
3f0ae887b8 New translations strings.xml (Portuguese) 2022-10-31 07:46:00 +01:00
Eugen Rochko
187f9a2246 New translations strings.xml (Russian) 2022-10-31 07:45:59 +01:00
Eugen Rochko
e8566bc24b New translations strings.xml (Swedish) 2022-10-31 07:45:58 +01:00
Eugen Rochko
e375fc7d4d New translations strings.xml (Turkish) 2022-10-31 07:45:57 +01:00
Eugen Rochko
89157efce8 New translations strings.xml (Ukrainian) 2022-10-31 07:45:55 +01:00
Eugen Rochko
5e95291016 New translations strings.xml (Chinese Simplified) 2022-10-31 07:45:54 +01:00
Eugen Rochko
cbd6e668dc New translations strings.xml (Vietnamese) 2022-10-31 07:45:53 +01:00
Eugen Rochko
898e62490b New translations strings.xml (Galician) 2022-10-31 07:45:52 +01:00
Eugen Rochko
326ab4edf1 New translations strings.xml (Thai) 2022-10-31 07:45:51 +01:00
Eugen Rochko
f25a965478 New translations strings.xml (Croatian) 2022-10-31 07:45:50 +01:00
Eugen Rochko
f3f3bea7b3 New translations strings.xml (Bosnian) 2022-10-31 07:45:48 +01:00
Eugen Rochko
583b0788c6 New translations strings.xml (Occitan) 2022-10-31 07:45:47 +01:00
Eugen Rochko
ca29cee586 New translations strings.xml (Korean) 2022-10-31 07:45:46 +01:00
Eugen Rochko
ec905448b0 New translations strings.xml (Portuguese, Brazilian) 2022-10-31 07:45:45 +01:00
Eugen Rochko
1a9752d53b New translations strings.xml (German) 2022-10-30 23:05:59 +01:00
Eugen Rochko
09cc5c5fd2 New translations strings.xml (German) 2022-10-30 22:00:42 +01:00
Eugen Rochko
4e8d510d38 New translations strings.xml (German) 2022-10-30 20:57:57 +01:00
Eugen Rochko
7f7f6bae80 New translations strings.xml (German) 2022-10-30 17:30:49 +01:00
Eugen Rochko
358ff12fba New translations strings.xml (German) 2022-10-30 16:07:19 +01:00
Eugen Rochko
47df35f0fd New translations full_description.txt (Chinese Traditional) 2022-10-30 01:23:19 +02:00
Eugen Rochko
e226851e03 New translations strings.xml (Arabic) 2022-10-29 14:15:24 +02:00
Eugen Rochko
7228907682 New translations strings.xml (Arabic) 2022-10-29 13:13:13 +02:00
Eugen Rochko
1dbabed716 New translations strings.xml (German) 2022-10-28 16:21:33 +02:00
Eugen Rochko
4224cd037d New translations strings.xml (German) 2022-10-28 15:11:58 +02:00
Eugen Rochko
9aa6d3f531 New translations strings.xml (Chinese Traditional) 2022-10-28 05:30:56 +02:00
Eugen Rochko
c9823ae9d0 New translations strings.xml (Chinese Traditional) 2022-10-28 04:30:39 +02:00
Eugen Rochko
c821480842 New translations strings.xml (Polish) 2022-10-24 00:07:29 +02:00
Eugen Rochko
3ef7c11e3b New translations strings.xml (Portuguese, Brazilian) 2022-10-17 16:18:05 +02:00
Eugen Rochko
1112756bc2 New translations strings.xml (Galician) 2022-10-15 17:57:46 +02:00
Eugen Rochko
878ed43135 New translations strings.xml (Thai) 2022-10-15 16:57:55 +02:00
Eugen Rochko
01b746d30a New translations strings.xml (Thai) 2022-10-15 13:55:51 +02:00
Eugen Rochko
a900351729 New translations strings.xml (Arabic) 2022-10-08 17:35:18 +02:00
Eugen Rochko
4114a6e5d8 New translations strings.xml (Turkish) 2022-10-07 18:41:40 +02:00
Eugen Rochko
04dd232e38 New translations strings.xml (Italian) 2022-10-05 21:07:13 +02:00
Eugen Rochko
bc26dfe856 New translations strings.xml (Chinese Simplified) 2022-10-05 07:12:25 +02:00
Eugen Rochko
0322f845af New translations strings.xml (Chinese Simplified) 2022-10-05 06:12:27 +02:00
Eugen Rochko
7daa2d63e6 New translations strings.xml (Vietnamese) 2022-10-04 18:08:26 +02:00
Eugen Rochko
3a8a41f568 New translations strings.xml (Kabyle) 2022-10-04 06:41:10 +02:00
Eugen Rochko
65cd7d076b New translations strings.xml (French) 2022-10-04 06:41:09 +02:00
Eugen Rochko
a1f71091fe New translations strings.xml (Spanish) 2022-10-04 06:41:08 +02:00
Eugen Rochko
131834af86 New translations strings.xml (Arabic) 2022-10-04 06:41:07 +02:00
Eugen Rochko
c0789cbdb9 New translations strings.xml (Catalan) 2022-10-04 06:41:06 +02:00
Eugen Rochko
7d12d866ab New translations strings.xml (Czech) 2022-10-04 06:41:05 +02:00
Eugen Rochko
7c2589c35b New translations strings.xml (German) 2022-10-04 06:41:04 +02:00
Eugen Rochko
fd2031ccf5 New translations strings.xml (Basque) 2022-10-04 06:41:02 +02:00
Eugen Rochko
6a165ec9f4 New translations strings.xml (Italian) 2022-10-04 06:40:59 +02:00
Eugen Rochko
fd8dad487a New translations strings.xml (Japanese) 2022-10-04 06:40:58 +02:00
Eugen Rochko
e9443b841a New translations strings.xml (Thai) 2022-10-04 06:40:57 +02:00
Eugen Rochko
89ec6acac9 New translations strings.xml (Korean) 2022-10-04 06:40:56 +02:00
Eugen Rochko
9b389b346f New translations strings.xml (Portuguese) 2022-10-04 06:40:55 +02:00
Eugen Rochko
4a522bffc0 New translations strings.xml (Russian) 2022-10-04 06:40:54 +02:00
Eugen Rochko
9b62f8b7a2 New translations strings.xml (Turkish) 2022-10-04 06:40:52 +02:00
Eugen Rochko
96342d67e3 New translations strings.xml (Chinese Traditional) 2022-10-04 06:40:50 +02:00
Eugen Rochko
95fc2bef9e New translations strings.xml (Vietnamese) 2022-10-04 06:40:49 +02:00
Eugen Rochko
4f36fbe3b9 New translations strings.xml (Galician) 2022-10-04 06:40:48 +02:00
Eugen Rochko
a501d8b995 New translations strings.xml (Portuguese, Brazilian) 2022-10-04 06:40:47 +02:00
Eugen Rochko
74691650b3 New translations strings.xml (Croatian) 2022-10-04 06:40:46 +02:00
Eugen Rochko
9325781cbc New translations strings.xml (Bosnian) 2022-10-04 06:40:45 +02:00
Eugen Rochko
b383dd6419 New translations strings.xml (Polish) 2022-10-04 06:40:43 +02:00
Eugen Rochko
fe98ecf0cc New translations strings.xml (Chinese Simplified) 2022-10-04 06:40:42 +02:00
Eugen Rochko
b79619b6e4 New translations strings.xml (Chinese Simplified) 2022-09-24 19:11:57 +02:00
Eugen Rochko
dbb03ee688 New translations strings.xml (Thai) 2022-09-23 21:06:49 +02:00
Eugen Rochko
00894b41d2 New translations strings.xml (Thai) 2022-09-23 20:09:36 +02:00
Eugen Rochko
8868ace90d New translations full_description.txt (German) 2022-09-19 19:52:12 +02:00
Eugen Rochko
a7586eeba8 New translations strings.xml (German) 2022-09-19 19:52:10 +02:00
Eugen Rochko
19b89c606a New translations strings.xml (German) 2022-09-19 18:43:32 +02:00
Eugen Rochko
b6c1e7d11e New translations strings.xml (Italian) 2022-09-18 02:43:45 +02:00
Eugen Rochko
ca90c89b2a New translations strings.xml (Italian) 2022-09-18 01:24:36 +02:00
Eugen Rochko
170a758f5f New translations strings.xml (Polish) 2022-09-16 12:51:10 +02:00
Eugen Rochko
43dcd6e7f4 New translations strings.xml (Polish) 2022-09-16 11:20:42 +02:00
Eugen Rochko
063542b2f5 New translations strings.xml (Spanish) 2022-09-16 09:46:29 +02:00
Eugen Rochko
70e4ae4fb4 New translations short_description.txt (Czech) 2022-09-15 21:09:48 +02:00
Eugen Rochko
8f1a4c60df New translations full_description.txt (Czech) 2022-09-15 21:09:47 +02:00
Eugen Rochko
07212dba96 New translations strings.xml (Czech) 2022-09-15 21:09:46 +02:00
Eugen Rochko
fb95caadbe New translations full_description.txt (Czech) 2022-09-15 20:01:47 +02:00
Eugen Rochko
51e86b686d New translations strings.xml (Czech) 2022-09-15 20:01:46 +02:00
Eugen Rochko
6ec335087d New translations strings.xml (Chinese Simplified) 2022-09-15 17:03:34 +02:00
Y32Gcnte8z
96040e15fd remain visibility when editing 2022-09-15 22:38:44 +08:00
Y32Gcnte8z
12a5670441 change client name in footer of status 2022-09-15 21:21:50 +08:00
Eugen Rochko
b756fe2cdb New translations strings.xml (Italian) 2022-09-12 22:55:33 +02:00
Eugen Rochko
3732a4c844 New translations full_description.txt (German) 2022-09-10 20:18:22 +02:00
Eugen Rochko
5bd59bd999 New translations strings.xml (German) 2022-09-10 20:18:21 +02:00
Eugen Rochko
90ba5551d2 New translations strings.xml (German) 2022-09-10 18:59:59 +02:00
Eugen Rochko
484b6891fd New translations strings.xml (Chinese Simplified) 2022-09-10 16:02:25 +02:00
Eugen Rochko
0435d5f0c7 New translations strings.xml (Spanish) 2022-09-10 12:46:24 +02:00
Eugen Rochko
864c8de8de New translations strings.xml (Spanish) 2022-09-10 11:45:40 +02:00
Eugen Rochko
8bcea5bfb8 New translations strings.xml (Spanish) 2022-09-10 10:49:12 +02:00
Eugen Rochko
beded04579 New translations strings.xml (Vietnamese) 2022-09-09 19:55:30 +02:00
Eugen Rochko
5dcd41170c New translations strings.xml (Vietnamese) 2022-09-09 16:55:37 +02:00
Eugen Rochko
3bb921a859 New translations strings.xml (Chinese Traditional) 2022-09-03 08:09:40 +02:00
Eugen Rochko
38edbde645 New translations strings.xml (Chinese Traditional) 2022-09-03 07:11:51 +02:00
Eugen Rochko
bcac7401ee New translations strings.xml (Chinese Simplified) 2022-08-28 23:21:49 +02:00
Eugen Rochko
c15f6519c0 New translations strings.xml (Vietnamese) 2022-08-01 08:15:42 +02:00
Eugen Rochko
2809b27be0 New translations strings.xml (Turkish) 2022-07-31 20:49:45 +02:00
Eugen Rochko
1b6e096bf9 New translations strings.xml (Kabyle) 2022-07-30 08:41:42 +02:00
Eugen Rochko
85db37f6a7 New translations full_description.txt (Czech) 2022-07-24 19:10:28 +02:00
Eugen Rochko
0cee490466 New translations strings.xml (Czech) 2022-07-24 19:10:27 +02:00
Eugen Rochko
a148c92da2 New translations full_description.txt (Czech) 2022-07-24 17:58:57 +02:00
Eugen Rochko
6272797834 New translations strings.xml (Czech) 2022-07-20 17:22:53 +02:00
Eugen Rochko
c048134ef2 New translations strings.xml (Czech) 2022-07-20 15:30:06 +02:00
Eugen Rochko
6f57cd9ffe New translations strings.xml (Czech) 2022-07-19 12:39:11 +02:00
Eugen Rochko
76815f8194 New translations strings.xml (Japanese) 2022-07-13 15:46:09 +02:00
74 changed files with 1503 additions and 260 deletions

View File

@@ -1,34 +1,47 @@
![Pink version of the Mastodon for Android launcher icon](mastodon/src/main/res/mipmap-xhdpi/ic_launcher_round.png)
# Mastodon for Android Fork
# Mastodos
> A fork of the [official Mastodon Android app](https://github.com/mastodon/mastodon-android) adding important features that are missing in the official app and possibly wont ever be implemented, such as the federated timeline, unlisted posting, bookmarks and an image description viewer.
[![Download latest release](https://img.shields.io/badge/dynamic/json?color=d92aad&label=download%20apk&query=%24.tag_name&url=https%3A%2F%2Fapi.github.com%2Frepos%2Fsk22%2Fmastodon-android-fork%2Freleases%2Flatest&style=for-the-badge)](https://github.com/sk22/mastodon-android-fork/releases/latest/download/mastodos.apk)
## Changes
* [Enable "Unlisted" as a visibility option](https://github.com/sk22/mastodon-android-fork/tree/feature/enable-unlisted)
([Pull request](https://github.com/mastodon/mastodon-android/pull/103)) and
[set as default](https://github.com/sk22/mastodon-android-fork/tree/feature/enable-unlisted-as-default)
* [Add "Federation" tab and change Discover tab order](https://github.com/sk22/mastodon-android-fork/tree/feature/add-federated-timeline) ([Fixes issue](https://github.com/mastodon/mastodon-android/issues/8))
### Features
* [Add “Unlisted” as a post visibility option](https://github.com/sk22/mastodon-android-fork/tree/feature/enable-unlisted)
([Pull request](https://github.com/mastodon/mastodon-android/pull/103))
* [Add “Federation” tab and change Discover tab order](https://github.com/sk22/mastodon-android-fork/tree/feature/add-federated-timeline) ([Fixes issue](https://github.com/mastodon/mastodon-android/issues/8))
* [Add image description button and viewer](https://github.com/sk22/mastodon-android-fork/tree/feature/display-alt-text) ([Pull request](https://github.com/mastodon/mastodon-android/pull/129))
* [Implement pinning posts and displaying pinned posts](https://github.com/sk22/mastodon-android-fork/tree/feature/pin-posts) ([Pull request](https://github.com/mastodon/mastodon-android/pull/140))
* [Display full image when adding image description](https://github.com/sk22/mastodon-android-fork/tree/feature/compose-image-description-full-image) ([Pull request](https://github.com/mastodon/mastodon-android/pull/182))
* [Always preserve content warnings when replying](https://github.com/sk22/mastodon-android-fork/tree/feature/always-preserve-cw) ([Fixes issue](https://github.com/mastodon/mastodon-android/issues/113))
* [Make back button return to the home tab before exiting the app](https://github.com/sk22/mastodon-android-fork/tree/feature/back-returns-home) ([Fixes issue](https://github.com/mastodon/mastodon-android/issues/118))
* [Implement a bookmark button and list](https://github.com/sk22/mastodon-android-fork/tree/feature/bookmarks) ([Fixes issue](https://github.com/mastodon/mastodon-android/issues/22))
* [Add “Mark media as sensitive” option](https://github.com/sk22/mastodon-android-fork/tree/feature/mark-media-as-sensitive)
* [Add “Check for update” button in addition to integrated update checker](https://github.com/sk22/mastodon-android-fork/commits/feature/check-for-update-button)
### Behavior
* [Make back button return to the home tab before exiting the app](https://github.com/sk22/mastodon-android-fork/tree/feature/back-returns-home) ([Fixes issue](https://github.com/mastodon/mastodon-android/issues/118))
* [Always preserve content warnings when replying](https://github.com/sk22/mastodon-android-fork/tree/feature/always-preserve-cw) ([Fixes issue](https://github.com/mastodon/mastodon-android/issues/113))
* [Display full image when adding image description](https://github.com/sk22/mastodon-android-fork/tree/feature/compose-image-description-full-image) ([Pull request](https://github.com/mastodon/mastodon-android/pull/182))
* [Implement deleting and re-drafting](https://github.com/sk22/mastodon-android-fork/tree/feature/delete-redraft) ([Fixes issue](https://github.com/mastodon/mastodon-android/issues/21))
* [Set spoiler height independently to content height](https://github.com/sk22/mastodon-android-fork/commits/spoiler-height-independent) ([Fixes issue](https://github.com/mastodon/mastodon-android/issues/166))
## Fork-specific changes
### Installation
* Custom app name
To install this app on your Android device, download the [latest release from GitHub](https://github.com/sk22/mastodon-android-fork/releases/latest/download/mastodos.apk) and open it. You might have to accept installing APK files from your browser when trying to install it. You can also take a look at all releases on the [Releases](https://github.com/sk22/mastodon-android-fork/releases) page.
Mastodos makes use of [Mastodon for Android](https://github.com/mastodon/mastodon-android)s automatic update checker. Mastodos will check for new updates available on GitHub and offer to download and install them. You can also manually press “Check for updates” at the bottom of the settings page!
### Branding
* App name “Mastodos”
* Pink primary color
* Custom icon: Modulate upstream icon using ImageMagick
```bash
mogrify -modulate 90,100,140 mastodon/src/main/res/mipmap-*/ic_launcher*.png
```
* Custom primary color: Hue of all `primary` colors in `colors.xml` is rotated, on basis of upstream Mastodon's [old branding](https://github.com/mastodon/mastodon-android/commit/74f03026cfcfcfd23237c38ff47d2b2a98a6f92a#diff-59134ec2a1cf3761f80b0ecccbbf8b9e433d9780d2f5c5d6ac3ac8cc254e808f)
by `109.8°` (equivalent of `161%`, done by hand using
[PineTools](https://pinetools.com/shift-hue-color))
## Building
As this app is using Java 17 features, you need JDK 17 or newer to build it. Other than that, everything is pretty standard. You can either import the project into Android Studio and build it from there, or run the following command in the project directory:

View File

@@ -1,16 +1,16 @@
Mastodon is the largest decentralized social network on the internet. Instead of a single website, its a network of millions of users in independent communities that can all interact with one another, seamlessly. No matter what youre into, you can meet passionate people posting about it on Mastodon!
Mastodon je největší decentralizovanou sociální sítí na internetu. Místo jednné webové stránky je to síť pro miliony uživatelů v nezávislých komunitách, kteří mohou všichni vzájemně a bezproblémově komunikovat. Bez ohledu na to, co vás baví, můžete se setkat s vášnivými lidmi, kteří o tom vysílají na Mastodon!
Join a community and create your profile. Find and and follow fascinating folks and read their posts in an ad-free, chronological timeline. Express yourself with custom emoji, images, GIFs, videos, and audio in 500-character posts. Reply to threads and reblog posts from anyone to share great stuff. Find new accounts to follow and trending hashtags to expand your network.
Připojte se ke komunitě a vytvořte svůj profil. Najděte a sledujte fascinující lidi a přečtěte si jejich příspěvky v bezreklamní a chronologické časové linii. Vyjádřete se pomocí vlastních emojí, obrázků, GIFů, videí a zvuku v 500-znakových příspěvcích. Odpovězte na vlákna a reblogujte příspěvky od kohokoliv, abyste mohli sdílet skvělé věci. Najděte nové účty pro sledování a populární hashtagy pro rozšíření vaší sítě.
Mastodon is built with a focus on privacy and safety. Decide whether your posts are shared with your followers, just the people you mention, or the whole world. Content warnings let you hide posts containing sensitive or triggering material until you're ready to engage with them. Each community has its own guidelines and moderators to keep its members safe, and robust blocking and reporting tools help prevent abuse.
Mastodon je postaven se zaměřením na soukromí a bezpečnost. Rozhodněte, zda jsou vaše příspěvky sdíleny se svými sledujícími, jen s lidmi, které zmiňujete, nebo s celým světem. Upozornění na obsah vám umožní skrýt příspěvky obsahující citlivý nebo spouštěcí materiál, dokud se s nimi nezačnete zabývat. Každá komunita má vlastní pokyny a moderátory, aby udržela své členy v bezpečí, a robust blokování a hlášení nástrojů pomáhá předcházet zneužití.
More features:
Další funkce:
Dark Mode: Read posts in light, dark, or true black mode
Polls: Ask followers for their opinion and tally the votes
Explore: Trending hashtags and accounts are a tap away
Notifications: Get notified about new follows, replies, and reblogs
• Sharing: Post directly to Mastodon from any share sheet in any app
Cuteness: Our mascot is an adorable elephant, and you'll see them pop up from time to time
Tmavý režim: Čtěte příspěvky ve světlém, tmavém nebo zcela černém režimu
Ankety: Požádejte sledující o jejich názor a spojte se s jejich hlasováním
Průzkum: Trendové hashtagy a účty jsou pryč na jedno klepnutí
Upozornění: Dostávejte upozornění na nové sledování, odpovědi a reblogy
• Sdílení: Odesílání přímo do Mastodonu z libovolného seznamu sdílení v jakékoliv aplikaci
Roztomilost: Naším maskotem je roztomilý slon, kterého čas od času uvidíte
Mastodon is a registered nonprofit and development is supported directly by your donations. Theres no advertising, no monetization, and no venture capital, and we plan to keep it that way.
Mastodon je registrovaný neziskový projekt a vývojový program je podporován přímo vašimi dary. Neexistuje žádná reklama, žádná monetizace a žádný rizikový kapitál a my máme v plánu to udržet.

View File

@@ -1 +1 @@
Decentralized social network
Decentralizovaná sociální síť

View File

@@ -1,6 +1,6 @@
Mastodon ist das größte dezentralisierte soziale Netzwerk im Internet. Statt einer einzigen Website ist es ein Netzwerk von Millionen von Benutzer*innen in unabhängigen Gemeinschaften, die alle miteinander interagieren können. Egal was dich interessiert, auf Mastodon kannst du interessierte Leute treffen, die darüber schreiben!
Tritt einer Gemeinschaft bei und erstelle dein Profil. Finde und folge faszinierenden Leuten und lies ihre Beiträge in einer werbefreien, chronologischen Zeitachse. Drücke dich mit benutzerdefinierten Emojis, Bilderns, GIFs, Videos und Audio in 500-Zeichen-Beiträgen aus. Antworte auf Threads und teile Beiträge von anderen, um großartige Sachen zu verbreiten. Finde neue Accounts zum Folgen und angesagte Hashtags, um dein Netzwerk zu erweitern.
Tritt einer Gemeinschaft bei und erstelle dein Profil. Finde und folge faszinierenden Leuten, und lies ihre Beiträge in einer werbefreien, chronologischen Zeitachse. Drücke dich mit benutzerdefinierten Emojis, Bildern, GIFs, Videos und Audio in 500-Zeichen-Beiträgen aus. Antworte auf Threads und teile Beiträge von anderen, um großartige Sachen zu verbreiten. Finde neue Accounts zum Folgen und angesagte Hashtags, um dein Netzwerk zu erweitern.
Mastodon wurde mit einem Schwerpunkt auf Privatsphäre und Sicherheit gebaut. Entscheide, ob du deine Beiträge mit deinen Followern, nur mit den Menschen, die du erwähnst, oder mit der ganzen Welt teilen möchtest. Mit Inhaltswarnungen kannst du Beiträge mit sensiblem oder triggerndem Inhalt ausblenden, bis du bereit bist, dich damit auseinanderzusetzen. Jede Gemeinschaft hat ihre eigenen Regeln und Moderator*innen, um die Sicherheit ihrer Mitglieder zu gewährleisten, sowie robuste Sperr- und Meldewerkzeuge, um Missbrauch vorzubeugen.
@@ -8,9 +8,9 @@ Weitere Funktionen:
• Dunkler Modus: Beiträge im hellen, dunklen oder schwarzen Modus lesen
• Umfragen: Frage deine Follower nach ihrer Meinung und zähle die Stimmen
• Entdecken: Trending Hashtags und Accounts sind nur einen Fingertipp entfernt
• Entdecken: trendende Hashtags und Profile sind nur einen Fingertipp entfernt
• Benachrichtigungen: Erhalte Benachrichtigungen über neue Follower, Antworten und geteilte Beiträge
• Teilen: Veröffentliche auf Mastodon aus jeder beliebigen anderen App
• Niedlichkeit: Unser Maskottchen ist ein entzückender Elefant, und du wirst ihn von Zeit zu Zeit auftauchen sehen
Mastodon ist eine eingetragene gemeinnützige Organisation, und die Entwicklung wird direkt durch deine Spenden unterstützt. Es gibt keine Werbung, keine Monetisierung und kein Venture-Capital, und wir planen es so zu erhalten.
Mastodon ist eine eingetragene gemeinnützige Organisation, und die Entwicklung wird direkt durch deine Spenden unterstützt. Es gibt keine Werbung, keine Monetisierung und kein Venture-Capital, und wir planen, das auch so beizubehalten.

View File

@@ -1,6 +1,6 @@
Mastodon là mạng xã hội liên hợp lớn nhất trên internet. Thay vì một trang web duy nhất, nó là một mạng lưới hàng triệu người dùng trong các máy chủ độc lập, tất cả đều có thể tương tác với nhau một cách liền mạch. Bất kể bạn thích gì, bạn đều có thể gặp gỡ những người đăng tút về nó trên Mastodon!
Tham gia một máy chủ và tạo trang hồ sơ của bạn. Tìm, theo dõi những người thú vị và đọc tút của họ theo trình tự thời gian, không có quảng cáo. Thể hiện bản thân bằng emoji, hình ảnh, GIF, video và âm thanh trong tút tối đa 500 ký tự. Trả lời tút và đăng lại tút từ bất kỳ ai để chia sẻ những điều tuyệt vời. Tìm những người dùng mới để theo dõi và các hashtag xu hướng để mở rộng mạng lưới của bạn.
Tham gia một máy chủ và tạo trang hồ sơ của bạn. Tìm, theo dõi những người thú vị và đọc tút của họ theo trình tự thời gian, không có quảng cáo. Thể hiện bản thân bằng emoji, hình ảnh, GIF, video và âm thanh trong tút tối đa 500 ký tự. Trả lời tút và đăng lại tút từ bất kỳ ai để chia sẻ những điều tuyệt vời. Tìm những người dùng mới để theo dõi và các hashtag nổi bật để mở rộng mạng lưới của bạn.
Mastodon được xây dựng tập trung vào sự riêng tư và an toàn. Quyết định xem tút của bạn được chia sẻ với những người theo dõi, chỉ những người bạn nhắc đến hay cả thế giới. Nội dung ẩn cho phép bạn ẩn các tút chứa nội dung nhạy cảm hoặc chơi chữ cho đến khi bạn sẵn sàng tương tác với chúng. Mỗi máy chủ có các nguyên tắc riêng và kiểm duyệt viên riêng để giữ an toàn cho các thành viên, song song với các công cụ chặn và báo cáo mạnh mẽ giúp ngăn chặn hành vi bậy.
@@ -8,7 +8,7 @@ Tính năng khác:
• Chế độ Tối: Đọc tút ở chế độ sáng, tối hoặc đen
• Bình chọn: Hỏi cộng đồng về ý kiến của họ và đếm lượt bình chọn
• Khám phá: Xem hashtag xu hướng và tài khoản chỉ bằng một nhấn
• Khám phá: Xem hashtag nổi bật và tài khoản chỉ bằng một nhấn
• Thông báo: Nhận thông báo về người theo dõi, lượt trả lời và đăng lại mới
• Chia sẻ: Đăng trực tiếp lên Mastodon từ bất kỳ ứng dụng nào
• Đáng yêu: Linh vật của chúng tôi là một chú voi ma mút và bạn sẽ thấy anh ấy thỉnh thoảng xuất hiện

View File

@@ -1,16 +1,16 @@
Mastodon 是網際網路上最大的去中心化社交網路。 它是一個由能無縫互動的獨立社群中,數百萬使用者組成的網路,而非單一網站。 無論您對什麼事情感興趣,您都能在 Mastodon 上遇到充滿熱情的人們討論該話題。
加入社群並建立您的個人檔案。 尋找並追蹤迷人的夥伴,並在無廣告、按時間順序排列的時間軸上閱讀他們的文。 在 500 個字元的文中使用自訂表情符號、GIF、視訊與音訊來表達您自己。 回覆任何人的話題與轉發貼文以分享精彩內容。 尋找要追蹤的新帳號與熱門主題標籤來拓展您的網路。
加入社群並建立您的個人檔案。 尋找並跟隨迷人的朋友們,並在無廣告、按時間順序排列的時間軸上閱讀他們的文。 在 500 個字元的文中使用自訂表情符號、GIF、視訊與音訊來表達您自己。 回覆任何人的話題與轉發貼文以分享精彩內容。 尋找要跟隨的新帳號與熱門主題標籤來拓展您的網路。
Mastodon 以隱私與安全為要。 決定您的文要與您的追蹤者分享、只與您提及的人們分享,又或是與全世界分享。 內容警告可讓您隱藏包含敏感或可能觸發強烈情緒反應的文,直到您準備好與它們進行互動。 每個社群都有它們自己的指導方針與管理原來確保其成員安全,強大的封鎖與回報工具有助於防止濫用。
Mastodon 以隱私與安全為要。 決定您的文要與您的跟隨者分享、只與您提及的人們分享,又或是與全世界分享。 內容警告可讓您隱藏包含敏感或可能觸發強烈情緒反應的文,直到您準備好與它們進行互動。 每個社群都有它們自己的指導方針與管理原來確保其成員安全,強大的封鎖與回報工具有助於防止濫用。
更多功能:
• 深色模式:以淺色、深色或純黑色模式閱讀貼文
• 投票:詢問追蹤的意見並計票
• 投票:詢問跟隨者們的意見並計票
• 探索:僅需輕點一下,即可看到熱門主題標籤與帳號
• 通知:取得關於新追蹤、回覆與轉發的通知
• 分享:從任何應用程式中的分享表中直接發表文到 Mastodon 中
• 通知:取得關於新跟隨者們、回覆與轉發的通知
• 分享:從任何應用程式中的分享表中直接發表文到 Mastodon 中
• 可愛:我們的吉祥物是一隻可愛的大象,您會不時看到牠出現
Mastodon 是一家註冊的非營利組織,您的捐款會直接支援開發工作。 沒有廣告、沒有貨幣化、沒有風險投資,我們計畫維持這種狀態。

View File

@@ -9,9 +9,13 @@ android {
applicationId "org.joinmastodon.android.sk"
minSdk 23
targetSdk 33
versionCode 24
versionName "1.1.3+fork.24"
versionCode 30
versionName "1.1.4+fork.30"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resConfigs "en", "ar-rSA", "bs-rBA", "ca-rES", "cs-rCZ", "de-rDE", "el-rGR", "es-rES",
"eu-rES", "fi-rFI", "fr-rFR", "gl-rES", "hr-rHR", "hy-rAM", "it-rIT", "iw-rIL",
"ja-rJP", "kab", "ko-rKR", "oc-rFR", "pl-rPL", "pt-rBR", "pt-rPT", "ru-rRU",
"sv-rSE", "th-rTH", "tr-rTR", "uk-rUA", "vi-rVN", "zh-rCN", "zh-rTW"
}
buildTypes {

View File

@@ -26,6 +26,8 @@ import org.joinmastodon.android.api.MastodonAPIController;
import org.joinmastodon.android.events.SelfUpdateStateChangedEvent;
import java.io.File;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -36,7 +38,7 @@ import okhttp3.Response;
@Keep
public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
private static final long CHECK_PERIOD=24*3600*1000L;
private static final long CHECK_PERIOD=6*3600*1000L;
private static final String TAG="GithubSelfUpdater";
private UpdateState state=UpdateState.NO_UPDATE;
@@ -101,6 +103,12 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
}
}
@Override
public void checkForUpdates() {
setState(UpdateState.CHECKING);
MastodonAPIController.runInBackground(this::actuallyCheckForUpdates);
}
private void actuallyCheckForUpdates(){
Request req=new Request.Builder()
.url("https://api.github.com/repos/sk22/mastodon-android-fork/releases/latest")
@@ -109,7 +117,8 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
try(Response resp=call.execute()){
JsonObject obj=JsonParser.parseReader(resp.body().charStream()).getAsJsonObject();
String tag=obj.get("tag_name").getAsString();
Matcher matcher=Pattern.compile("v(\\d+)\\.(\\d+)\\.(\\d+)\\+fork\\.(\\d+)").matcher(tag);
Pattern pattern=Pattern.compile("v?(\\d+)\\.(\\d+)\\.(\\d+)\\+fork\\.(\\d+)");
Matcher matcher=pattern.matcher(tag);
if(!matcher.find()){
Log.w(TAG, "actuallyCheckForUpdates: release tag has wrong format: "+tag);
return;
@@ -118,12 +127,16 @@ public class GithubSelfUpdaterImpl extends GithubSelfUpdater{
newMinor=Integer.parseInt(matcher.group(2)),
newRevision=Integer.parseInt(matcher.group(3)),
newForkNumber=Integer.parseInt(matcher.group(4));
matcher=pattern.matcher(BuildConfig.VERSION_NAME);
String[] currentParts=BuildConfig.VERSION_NAME.split("[.+]");
int curMajor=Integer.parseInt(currentParts[0]),
curMinor=Integer.parseInt(currentParts[1]),
curRevision=Integer.parseInt(currentParts[2]),
curForkNumber=Integer.parseInt(currentParts[4]);
if(!matcher.find()){
Log.w(TAG, "actuallyCheckForUpdates: current version has wrong format: "+BuildConfig.VERSION_NAME);
return;
}
int curMajor=Integer.parseInt(matcher.group(1)),
curMinor=Integer.parseInt(matcher.group(2)),
curRevision=Integer.parseInt(matcher.group(3)),
curForkNumber=Integer.parseInt(matcher.group(4));
long newVersion=((long)newMajor << 32) | ((long)newMinor << 16) | newRevision;
long curVersion=((long)curMajor << 32) | ((long)curMinor << 16) | curRevision;
if(newVersion>curVersion || newForkNumber>curForkNumber || BuildConfig.DEBUG){

View File

@@ -16,6 +16,7 @@
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
android:localeConfig="@xml/locales_config"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/Theme.Mastodon.AutoLightDark"

View File

@@ -11,7 +11,7 @@ public class CreateOAuthApp extends MastodonAPIRequest<Application>{
}
private static class Request{
public String clientName="Mastodon for Android Fork";
public String clientName="Mastodos";
public String redirectUris=AccountSessionManager.REDIRECT_URI;
public String scopes=AccountSessionManager.SCOPE;
public String website="https://github.com/sk22/mastodon-android-fork";

View File

@@ -4,7 +4,7 @@ import org.joinmastodon.android.model.Status;
public class StatusCountersUpdatedEvent{
public String id;
public int favorites, reblogs, replies;
public long favorites, reblogs, replies;
public boolean favorited, reblogged, pinned;
public StatusCountersUpdatedEvent(Status s){

View File

@@ -161,11 +161,13 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
private Button publishButton;
private ImageButton mediaBtn, pollBtn, emojiBtn, spoilerBtn, visibilityBtn;
private ImageView sensitiveIcon;
private ComposeMediaLayout attachmentsView;
private TextView replyText;
private ReorderableLinearLayout pollOptionsView;
private View pollWrap;
private View addPollOptionBtn;
private View sensitiveItem;
private TextView pollDurationView;
private ArrayList<DraftPollOption> pollOptions=new ArrayList<>();
@@ -181,11 +183,12 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
private String pollDurationStr;
private EditText spoilerEdit;
private boolean hasSpoiler;
private boolean sensitive;
private ProgressBar sendProgress;
private ImageView sendError;
private View sendingOverlay;
private WindowManager wm;
private StatusPrivacy statusVisibility=StatusPrivacy.UNLISTED;
private StatusPrivacy statusVisibility=StatusPrivacy.PUBLIC;
private ComposeAutocompleteSpan currentAutocompleteSpan;
private FrameLayout mainEditTextWrap;
private ComposeAutocompleteViewController autocompleteViewController;
@@ -290,6 +293,8 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
emojiBtn=view.findViewById(R.id.btn_emoji);
spoilerBtn=view.findViewById(R.id.btn_spoiler);
visibilityBtn=view.findViewById(R.id.btn_visibility);
sensitiveIcon=view.findViewById(R.id.sensitive_icon);
sensitiveItem=view.findViewById(R.id.sensitive_item);
replyText=view.findViewById(R.id.reply_text);
mediaBtn.setOnClickListener(v->openFilePicker());
@@ -297,6 +302,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
emojiBtn.setOnClickListener(v->emojiKeyboard.toggleKeyboardPopup(mainEditText));
spoilerBtn.setOnClickListener(v->toggleSpoiler());
visibilityBtn.setOnClickListener(this::onVisibilityClick);
sensitiveItem.setOnClickListener(v->toggleSensitive());
emojiKeyboard.setOnIconChangedListener(new PopupKeyboard.OnIconChangeListener(){
@Override
public void onIconChanged(int icon){
@@ -362,11 +368,16 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
spoilerEdit.setVisibility(View.VISIBLE);
spoilerBtn.setSelected(true);
}else if(editingStatus!=null && !TextUtils.isEmpty(editingStatus.spoilerText)){
hasSpoiler=true;
spoilerEdit.setVisibility(View.VISIBLE);
spoilerEdit.setText(getArguments().getString("sourceSpoiler", editingStatus.spoilerText));
spoilerBtn.setSelected(true);
}
sensitive = editingStatus != null ? editingStatus.sensitive
: (savedInstanceState != null && savedInstanceState.getBoolean("sensitive", false));
sensitiveIcon.setSelected(sensitive);
ArrayList<Parcelable> serializedAttachments=(savedInstanceState!=null ? savedInstanceState : getArguments())
.getParcelableArrayList("attachments");
if(serializedAttachments!=null){
@@ -382,6 +393,11 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
attachmentsView.addView(createMediaAttachmentView(att));
}
}
if(editingStatus!=null && editingStatus.visibility!=null) {
statusVisibility=editingStatus.visibility;
}
updateVisibilityIcon();
autocompleteViewController=new ComposeAutocompleteViewController(getActivity(), accountID);
@@ -416,6 +432,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
}
outState.putSerializable("visibility", statusVisibility);
}
outState.putBoolean("sensitive", sensitive);
}
@Override
@@ -563,8 +580,11 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
}
}
updateSensitive();
if(editingStatus!=null){
updateCharCounter();
visibilityBtn.setEnabled(false);
}
}
@@ -672,6 +692,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
CreateStatus.Request req=new CreateStatus.Request();
req.status=text;
req.visibility=statusVisibility;
req.sensitive=sensitive;
if(!attachments.isEmpty()){
req.mediaIds=attachments.stream().map(a->a.serverAttachment.id).collect(Collectors.toList());
}
@@ -878,6 +899,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
uploadNextQueuedAttachment();
}
updatePublishButtonState();
updateSensitive();
if(getMediaAttachmentsCount()==MAX_ATTACHMENTS)
mediaBtn.setEnabled(false);
return true;
@@ -1052,6 +1074,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
updatePublishButtonState();
pollBtn.setEnabled(attachments.isEmpty());
mediaBtn.setEnabled(true);
updateSensitive();
}
private void onRetryOrCancelMediaUploadClick(View v){
@@ -1253,7 +1276,20 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
spoilerBtn.setSelected(false);
mainEditText.requestFocus();
updateCharCounter();
sensitiveIcon.setVisibility(getMediaAttachmentsCount() > 0 ? View.VISIBLE : View.GONE);
}
updateSensitive();
}
private void toggleSensitive() {
sensitive=!sensitive;
sensitiveIcon.setSelected(sensitive);
}
private void updateSensitive() {
sensitiveItem.setVisibility(View.GONE);
if (!attachments.isEmpty() && !hasSpoiler) sensitiveItem.setVisibility(View.VISIBLE);
if (attachments.isEmpty()) sensitive = false;
}
private int getMediaAttachmentsCount(){
@@ -1339,7 +1375,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
statusVisibility=StatusPrivacy.PUBLIC;
}
visibilityBtn.setImageResource(switch(statusVisibility){
case PUBLIC -> R.drawable.ic_fluent_earth_24_filled;
case PUBLIC -> R.drawable.ic_fluent_earth_24_regular;
case UNLISTED -> R.drawable.ic_fluent_people_community_24_regular;
case PRIVATE -> R.drawable.ic_fluent_people_checkmark_24_regular;
case DIRECT -> R.drawable.ic_at_symbol;

View File

@@ -142,7 +142,6 @@ public class HomeTimelineFragment extends StatusListFragment{
}
}
@Subscribe
public void onStatusCreated(StatusCreatedEvent ev){
prependItems(Collections.singletonList(ev.status), true);
}

View File

@@ -22,6 +22,7 @@ import org.parceler.Parcels;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -76,9 +77,11 @@ public class NotificationsListFragment extends BaseStatusListFragment<Notificati
if(titleItem!=null)
items.add(0, titleItem);
return items;
}else{
}else if(titleItem!=null){
AccountCardStatusDisplayItem card=new AccountCardStatusDisplayItem(n.id, this, n.account);
return Arrays.asList(titleItem, card);
}else{
return Collections.emptyList();
}
}

View File

@@ -414,7 +414,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
private void bindHeaderView(){
setTitle(account.displayName);
setSubtitle(getResources().getQuantityString(R.plurals.x_posts, account.statusesCount, account.statusesCount));
setSubtitle(getResources().getQuantityString(R.plurals.x_posts, (int)(account.statusesCount%1000), account.statusesCount));
ViewImageLoader.load(avatar, null, new UrlImageLoaderRequest(GlobalUserPreferences.playGifs ? account.avatar : account.avatarStatic, V.dp(100), V.dp(100)));
ViewImageLoader.load(cover, null, new UrlImageLoaderRequest(GlobalUserPreferences.playGifs ? account.header : account.headerStatic, 1000, 1000));
SpannableStringBuilder ssb=new SpannableStringBuilder(account.displayName);
@@ -451,9 +451,9 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
followersCount.setText(UiUtils.abbreviateNumber(account.followersCount));
followingCount.setText(UiUtils.abbreviateNumber(account.followingCount));
postsCount.setText(UiUtils.abbreviateNumber(account.statusesCount));
followersLabel.setText(getResources().getQuantityString(R.plurals.followers, Math.min(999, account.followersCount)));
followingLabel.setText(getResources().getQuantityString(R.plurals.following, Math.min(999, account.followingCount)));
postsLabel.setText(getResources().getQuantityString(R.plurals.posts, Math.min(999, account.statusesCount)));
followersLabel.setText(getResources().getQuantityString(R.plurals.followers, (int)Math.min(999, account.followersCount)));
followingLabel.setText(getResources().getQuantityString(R.plurals.following, (int)Math.min(999, account.followingCount)));
postsLabel.setText(getResources().getQuantityString(R.plurals.posts, (int)Math.min(999, account.statusesCount)));
UiUtils.loadCustomEmojiInTextView(name);
UiUtils.loadCustomEmojiInTextView(bio);

View File

@@ -15,6 +15,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.view.WindowManager;
import android.view.animation.AlphaAnimation;
import android.view.animation.LinearInterpolator;
import android.widget.Button;
import android.widget.ImageButton;
@@ -71,6 +72,7 @@ public class SettingsFragment extends MastodonToolbarFragment{
private PushSubscription pushSubscription;
private ImageView themeTransitionWindowView;
private TextItem checkForUpdateItem;
@Override
public void onCreate(Bundle savedInstanceState){
@@ -118,6 +120,10 @@ public class SettingsFragment extends MastodonToolbarFragment{
items.add(new TextItem(R.string.settings_privacy_policy, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/terms")));
items.add(new RedHeaderItem(R.string.settings_spicy));
if (GithubSelfUpdater.needSelfUpdating()) {
checkForUpdateItem = new TextItem(R.string.check_for_update, GithubSelfUpdater.getInstance()::checkForUpdates);
items.add(checkForUpdateItem);
}
items.add(new TextItem(R.string.settings_clear_cache, this::clearImageCache));
items.add(new TextItem(R.string.log_out, this::confirmLogOut));
@@ -326,11 +332,25 @@ public class SettingsFragment extends MastodonToolbarFragment{
@Subscribe
public void onSelfUpdateStateChanged(SelfUpdateStateChangedEvent ev){
if(items.get(0) instanceof UpdateItem item){
RecyclerView.ViewHolder holder=list.findViewHolderForAdapterPosition(0);
if(holder instanceof UpdateViewHolder uvh){
uvh.bind(item);
}
checkForUpdateItem.loading = ev.state == GithubSelfUpdater.UpdateState.CHECKING;
if (list.findViewHolderForAdapterPosition(items.indexOf(checkForUpdateItem)) instanceof TextViewHolder tvh) tvh.rebind();
UpdateItem updateItem = null;
if(items.get(0) instanceof UpdateItem item0) {
updateItem = item0;
} else if (ev.state != GithubSelfUpdater.UpdateState.CHECKING
&& ev.state != GithubSelfUpdater.UpdateState.NO_UPDATE) {
updateItem = new UpdateItem();
items.add(0, updateItem);
list.setAdapter(new SettingsAdapter());
}
if(updateItem != null && list.findViewHolderForAdapterPosition(0) instanceof UpdateViewHolder uvh){
uvh.bind(updateItem);
}
if (ev.state == GithubSelfUpdater.UpdateState.NO_UPDATE) {
Toast.makeText(getActivity(), R.string.no_update_available, Toast.LENGTH_SHORT).show();
}
}
@@ -398,10 +418,16 @@ public class SettingsFragment extends MastodonToolbarFragment{
private class TextItem extends Item{
private String text;
private Runnable onClick;
private boolean loading;
public TextItem(@StringRes int text, Runnable onClick){
public TextItem(@StringRes int text, Runnable onClick) {
this(text, onClick, false);
}
public TextItem(@StringRes int text, Runnable onClick, boolean loading){
this.text=getString(text);
this.onClick=onClick;
this.loading=loading;
}
@Override
@@ -630,14 +656,18 @@ public class SettingsFragment extends MastodonToolbarFragment{
private class TextViewHolder extends BindableViewHolder<TextItem> implements UsableRecyclerView.Clickable{
private final TextView text;
private final ProgressBar progress;
public TextViewHolder(){
super(getActivity(), R.layout.item_settings_text, list);
text=(TextView) itemView;
text = itemView.findViewById(R.id.text);
progress = itemView.findViewById(R.id.progress);
}
@Override
public void onBind(TextItem item){
text.setText(item.text);
progress.animate().alpha(item.loading ? 1 : 0);
}
@Override
@@ -692,8 +722,9 @@ public class SettingsFragment extends MastodonToolbarFragment{
@Override
public void onBind(UpdateItem item){
GithubSelfUpdater updater=GithubSelfUpdater.getInstance();
GithubSelfUpdater.UpdateInfo info=updater.getUpdateInfo();
GithubSelfUpdater.UpdateState state=updater.getState();
if (state == GithubSelfUpdater.UpdateState.CHECKING) return;
GithubSelfUpdater.UpdateInfo info=updater.getUpdateInfo();
if(state!=GithubSelfUpdater.UpdateState.DOWNLOADED){
text.setText(getString(R.string.update_available, info.version));
button.setText(getString(R.string.download_update, UiUtils.formatFileSize(getActivity(), info.size, false)));

View File

@@ -10,7 +10,6 @@ import org.joinmastodon.android.events.StatusCountersUpdatedEvent;
import org.joinmastodon.android.events.StatusCreatedEvent;
import org.joinmastodon.android.events.StatusDeletedEvent;
import org.joinmastodon.android.events.StatusUpdatedEvent;
import org.joinmastodon.android.events.StatusUnpinnedEvent;
import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.ui.displayitems.ExtendedFooterStatusDisplayItem;
import org.joinmastodon.android.ui.displayitems.FooterStatusDisplayItem;
@@ -63,6 +62,59 @@ public abstract class StatusListFragment extends BaseStatusListFragment<Status>{
protected void onStatusCreated(StatusCreatedEvent ev){}
protected void onStatusUpdated(StatusUpdatedEvent ev){
ArrayList<Status> statusesForDisplayItems=new ArrayList<>();
for(int i=0;i<data.size();i++){
Status s=data.get(i);
if(s.reblog!=null && s.reblog.id.equals(ev.status.id)){
s.reblog=ev.status;
statusesForDisplayItems.add(s);
}else if(s.id.equals(ev.status.id)){
data.set(i, ev.status);
statusesForDisplayItems.add(ev.status);
}
}
for(int i=0;i<preloadedData.size();i++){
Status s=preloadedData.get(i);
if(s.reblog!=null && s.reblog.id.equals(ev.status.id)){
s.reblog=ev.status;
}else if(s.id.equals(ev.status.id)){
preloadedData.set(i, ev.status);
}
}
if(statusesForDisplayItems.isEmpty())
return;
for(Status s:statusesForDisplayItems){
int i=0;
for(StatusDisplayItem item:displayItems){
if(item.parentID.equals(s.id)){
int start=i;
for(;i<displayItems.size();i++){
if(!displayItems.get(i).parentID.equals(s.id))
break;
}
List<StatusDisplayItem> postItems=displayItems.subList(start, i);
postItems.clear();
postItems.addAll(buildDisplayItems(s));
int oldSize=i-start, newSize=postItems.size();
if(oldSize==newSize){
adapter.notifyItemRangeChanged(start, newSize);
}else if(oldSize<newSize){
adapter.notifyItemRangeChanged(start, oldSize);
adapter.notifyItemRangeInserted(start+oldSize, newSize-oldSize);
}else{
adapter.notifyItemRangeChanged(start, newSize);
adapter.notifyItemRangeRemoved(start+newSize, oldSize-newSize);
}
break;
}
i++;
}
}
}
protected Status getContentStatusByID(String id){
Status s=getStatusByID(id);
return s==null ? null : s.getContentStatus();
@@ -138,6 +190,11 @@ public abstract class StatusListFragment extends BaseStatusListFragment<Status>{
StatusListFragment.this.onStatusCreated(ev);
}
@Subscribe
public void onStatusUpdated(StatusUpdatedEvent ev){
StatusListFragment.this.onStatusUpdated(ev);
}
@Subscribe
public void onPollUpdated(PollUpdatedEvent ev){
if(!ev.accountID.equals(accountID))

View File

@@ -12,7 +12,7 @@ public class FollowerListFragment extends AccountRelatedAccountListFragment{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setSubtitle(getResources().getQuantityString(R.plurals.x_followers, account.followersCount, account.followersCount));
setSubtitle(getResources().getQuantityString(R.plurals.x_followers, (int)(account.followersCount%1000), account.followersCount));
}
@Override

View File

@@ -12,7 +12,7 @@ public class FollowingListFragment extends AccountRelatedAccountListFragment{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setSubtitle(getResources().getQuantityString(R.plurals.x_following, account.followingCount, account.followingCount));
setSubtitle(getResources().getQuantityString(R.plurals.x_following, (int)(account.followingCount%1000), account.followingCount));
}
@Override

View File

@@ -11,7 +11,7 @@ public class StatusFavoritesListFragment extends StatusRelatedAccountListFragmen
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setTitle(getResources().getQuantityString(R.plurals.x_favorites, status.favouritesCount, status.favouritesCount));
setTitle(getResources().getQuantityString(R.plurals.x_favorites, (int)(status.favouritesCount%1000), status.favouritesCount));
}
@Override

View File

@@ -11,7 +11,7 @@ public class StatusReblogsListFragment extends StatusRelatedAccountListFragment{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setTitle(getResources().getQuantityString(R.plurals.x_reblogs, status.reblogsCount, status.reblogsCount));
setTitle(getResources().getQuantityString(R.plurals.x_reblogs, (int)(status.reblogsCount%1000), status.reblogsCount));
}
@Override

View File

@@ -220,9 +220,9 @@ public class DiscoverAccountsFragment extends BaseRecyclerFragment<DiscoverAccou
followersCount.setText(UiUtils.abbreviateNumber(item.account.followersCount));
followingCount.setText(UiUtils.abbreviateNumber(item.account.followingCount));
postsCount.setText(UiUtils.abbreviateNumber(item.account.statusesCount));
followersLabel.setText(getResources().getQuantityString(R.plurals.followers, Math.min(999, item.account.followersCount)));
followingLabel.setText(getResources().getQuantityString(R.plurals.following, Math.min(999, item.account.followingCount)));
postsLabel.setText(getResources().getQuantityString(R.plurals.posts, Math.min(999, item.account.statusesCount)));
followersLabel.setText(getResources().getQuantityString(R.plurals.followers, (int)Math.min(999, item.account.followersCount)));
followingLabel.setText(getResources().getQuantityString(R.plurals.following, (int)Math.min(999, item.account.followingCount)));
postsLabel.setText(getResources().getQuantityString(R.plurals.posts, (int)Math.min(999, item.account.statusesCount)));
relationship=relationships.get(item.account.id);
if(relationship==null){
actionWrap.setVisibility(View.GONE);

View File

@@ -0,0 +1,231 @@
package org.joinmastodon.android.fragments.onboarding;
import android.app.Activity;
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import org.joinmastodon.android.R;
import org.joinmastodon.android.api.MastodonAPIController;
import org.joinmastodon.android.model.Instance;
import org.joinmastodon.android.ui.OutlineProviders;
import org.joinmastodon.android.ui.utils.UiUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.parceler.Parcels;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Locale;
import java.util.Objects;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import me.grishka.appkit.Nav;
import me.grishka.appkit.fragments.AppKitFragment;
import me.grishka.appkit.imageloader.ViewImageLoader;
import me.grishka.appkit.imageloader.requests.UrlImageLoaderRequest;
import me.grishka.appkit.utils.BindableViewHolder;
import me.grishka.appkit.utils.MergeRecyclerAdapter;
import me.grishka.appkit.utils.SingleViewRecyclerAdapter;
import me.grishka.appkit.utils.V;
import me.grishka.appkit.views.UsableRecyclerView;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
public class GoogleMadeMeAddThisFragment extends AppKitFragment{
private UsableRecyclerView list;
private MergeRecyclerAdapter adapter;
private Button btn;
private View buttonBar;
private Instance instance;
private ArrayList<Item> items=new ArrayList<>();
private Call currentRequest;
private ItemsAdapter itemsAdapter;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
setNavigationBarColor(UiUtils.getThemeColor(activity, R.attr.colorWindowBackground));
instance=Parcels.unwrap(getArguments().getParcelable("instance"));
items.add(new Item("Mastodon for Android Privacy Policy", "joinmastodon.org", "https://joinmastodon.org/android/privacy", "https://joinmastodon.org/favicon-32x32.png"));
loadServerPrivacyPolicy();
}
@Override
public void onDestroy(){
super.onDestroy();
if(currentRequest!=null){
currentRequest.cancel();
currentRequest=null;
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view=inflater.inflate(R.layout.fragment_onboarding_rules, container, false);
list=view.findViewById(R.id.list);
list.setLayoutManager(new LinearLayoutManager(getActivity()));
View headerView=inflater.inflate(R.layout.item_list_header, list, false);
TextView title=headerView.findViewById(R.id.title);
TextView subtitle=headerView.findViewById(R.id.subtitle);
headerView.findViewById(R.id.step_counter).setVisibility(View.GONE);
title.setText(R.string.privacy_policy_title);
subtitle.setText(R.string.privacy_policy_subtitle);
adapter=new MergeRecyclerAdapter();
adapter.addAdapter(new SingleViewRecyclerAdapter(headerView));
adapter.addAdapter(itemsAdapter=new ItemsAdapter());
list.setAdapter(adapter);
list.setSelector(null);
list.addItemDecoration(new RecyclerView.ItemDecoration(){
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state){
if(parent.getChildViewHolder(view) instanceof ItemViewHolder){
outRect.left=outRect.right=V.dp(18.5f);
outRect.top=V.dp(16);
}
}
});
btn=view.findViewById(R.id.btn_next);
btn.setOnClickListener(v->onButtonClick());
buttonBar=view.findViewById(R.id.button_bar);
view.findViewById(R.id.btn_back).setOnClickListener(v->Nav.finish(this));
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState){
super.onViewCreated(view, savedInstanceState);
setStatusBarColor(UiUtils.getThemeColor(getActivity(), R.attr.colorBackgroundLight));
}
protected void onButtonClick(){
Bundle args=new Bundle();
args.putParcelable("instance", Parcels.wrap(instance));
Nav.go(getActivity(), SignupFragment.class, args);
}
@Override
public void onApplyWindowInsets(WindowInsets insets){
if(Build.VERSION.SDK_INT>=27){
int inset=insets.getSystemWindowInsetBottom();
buttonBar.setPadding(0, 0, 0, inset>0 ? Math.max(inset, V.dp(36)) : 0);
super.onApplyWindowInsets(insets.replaceSystemWindowInsets(insets.getSystemWindowInsetLeft(), insets.getSystemWindowInsetTop(), insets.getSystemWindowInsetRight(), 0));
}else{
super.onApplyWindowInsets(insets.replaceSystemWindowInsets(insets.getSystemWindowInsetLeft(), insets.getSystemWindowInsetTop(), insets.getSystemWindowInsetRight(), insets.getSystemWindowInsetBottom()));
}
}
private void loadServerPrivacyPolicy(){
Request req=new Request.Builder()
.url("https://"+instance.uri+"/terms")
.addHeader("Accept-Language", Locale.getDefault().toLanguageTag())
.build();
currentRequest=MastodonAPIController.getHttpClient().newCall(req);
currentRequest.enqueue(new Callback(){
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e){
currentRequest=null;
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException{
currentRequest=null;
try(ResponseBody body=response.body()){
if(!response.isSuccessful())
return;
Document doc=Jsoup.parse(Objects.requireNonNull(body).byteStream(), Objects.requireNonNull(body.contentType()).charset(StandardCharsets.UTF_8).name(), req.url().toString());
final Item item=new Item(doc.title(), instance.uri, req.url().toString(), "https://"+instance.uri+"/favicon.ico");
Activity activity=getActivity();
if(activity!=null){
activity.runOnUiThread(()->{
items.add(item);
itemsAdapter.notifyItemInserted(items.size()-1);
});
}
}
}
});
}
private class ItemsAdapter extends RecyclerView.Adapter<ItemViewHolder>{
@NonNull
@Override
public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
return new ItemViewHolder();
}
@Override
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position){
holder.bind(items.get(position));
}
@Override
public int getItemCount(){
return items.size();
}
}
private class ItemViewHolder extends BindableViewHolder<Item> implements UsableRecyclerView.Clickable{
private final TextView domain, title;
private final ImageView favicon;
public ItemViewHolder(){
super(getActivity(), R.layout.item_privacy_policy_link, list);
domain=findViewById(R.id.domain);
title=findViewById(R.id.title);
favicon=findViewById(R.id.favicon);
itemView.setOutlineProvider(OutlineProviders.roundedRect(10));
itemView.setClipToOutline(true);
}
@Override
public void onBind(Item item){
domain.setText(item.domain);
title.setText(item.title);
ViewImageLoader.load(favicon, null, new UrlImageLoaderRequest(item.faviconUrl));
}
@Override
public void onClick(){
UiUtils.launchWebBrowser(getActivity(), item.url);
}
}
private static class Item{
public String title, domain, url, faviconUrl;
public Item(String title, String domain, String url, String faviconUrl){
this.title=title;
this.domain=domain;
this.url=url;
this.faviconUrl=faviconUrl;
}
}
}

View File

@@ -84,7 +84,7 @@ public class InstanceRulesFragment extends AppKitFragment{
protected void onButtonClick(){
Bundle args=new Bundle();
args.putParcelable("instance", Parcels.wrap(instance));
Nav.go(getActivity(), SignupFragment.class, args);
Nav.go(getActivity(), GoogleMadeMeAddThisFragment.class, args);
}
@Override

View File

@@ -96,15 +96,15 @@ public class Account extends BaseModel{
/**
* How many statuses are attached to this account.
*/
public int statusesCount;
public long statusesCount;
/**
* The reported followers of this profile.
*/
public int followersCount;
public long followersCount;
/**
* The reported follows of this profile.
*/
public int followingCount;
public long followingCount;
// Optional attributes

View File

@@ -34,9 +34,9 @@ public class Status extends BaseModel implements DisplayItemsParent{
public List<Hashtag> tags;
@RequiredField
public List<Emoji> emojis;
public int reblogsCount;
public int favouritesCount;
public int repliesCount;
public long reblogsCount;
public long favouritesCount;
public long repliesCount;
public Instant editedAt;
public String url;

View File

@@ -115,9 +115,9 @@ public class AccountCardStatusDisplayItem extends StatusDisplayItem{
followersCount.setText(UiUtils.abbreviateNumber(item.account.followersCount));
followingCount.setText(UiUtils.abbreviateNumber(item.account.followingCount));
postsCount.setText(UiUtils.abbreviateNumber(item.account.statusesCount));
followersLabel.setText(item.parentFragment.getResources().getQuantityString(R.plurals.followers, Math.min(999, item.account.followersCount)));
followingLabel.setText(item.parentFragment.getResources().getQuantityString(R.plurals.following, Math.min(999, item.account.followingCount)));
postsLabel.setText(item.parentFragment.getResources().getQuantityString(R.plurals.posts, Math.min(999, item.account.statusesCount)));
followersLabel.setText(item.parentFragment.getResources().getQuantityString(R.plurals.followers, (int)Math.min(999, item.account.followersCount)));
followingLabel.setText(item.parentFragment.getResources().getQuantityString(R.plurals.following, (int)Math.min(999, item.account.followingCount)));
postsLabel.setText(item.parentFragment.getResources().getQuantityString(R.plurals.posts, (int)Math.min(999, item.account.statusesCount)));
relationship=item.parentFragment.getRelationship(item.account.id);
if(relationship==null){
actionWrap.setVisibility(View.GONE);

View File

@@ -97,7 +97,7 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
|| (item.status.visibility==StatusPrivacy.PRIVATE && item.status.account.id.equals(AccountSessionManager.getInstance().getAccount(item.accountID).self.id)));
}
private void bindButton(TextView btn, int count){
private void bindButton(TextView btn, long count){
if(count>0 && !item.hideCounts){
btn.setText(DecimalFormat.getIntegerInstance().format(count));
btn.setCompoundDrawablePadding(V.dp(8));

View File

@@ -83,7 +83,7 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
itemView.setClickable(false);
}else{
spoilerOverlay.setVisibility(View.VISIBLE);
text.setVisibility(View.INVISIBLE);
text.setVisibility(View.GONE);
itemView.setClickable(true);
}
}else{

View File

@@ -193,6 +193,15 @@ public class UiUtils{
}
}
@SuppressLint("DefaultLocale")
public static String abbreviateNumber(long n){
if(n<1_000_000_000L)
return abbreviateNumber((int)n);
double a=n/1_000_000_000.0;
return a>99f ? String.format("%,dB", (int)Math.floor(a)) : String.format("%,.1fB", n/1_000_000_000.0);
}
/**
* Android 6.0 has a bug where start and end compound drawables don't get tinted.
* This works around it by setting the tint colors directly to the drawables.

View File

@@ -23,6 +23,8 @@ public abstract class GithubSelfUpdater{
return BuildConfig.BUILD_TYPE.equals("githubRelease") || BuildConfig.BUILD_TYPE.equals("debug");
}
public abstract void checkForUpdates();
public abstract void maybeCheckForUpdates();
public abstract GithubSelfUpdater.UpdateState getState();

View File

@@ -1,3 +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="M10.946 2.047l0.005 0.007C11.296 2.02 11.646 2 12 2c5.522 0 10 4.477 10 10s-4.478 10-10 10c-3.21 0-6.066-1.512-7.896-3.862H4.102v-0.003C2.786 16.441 2 14.312 2 12c0-5.162 3.911-9.41 8.932-9.944l0.014-0.009zM12 3.5c-0.053 0-0.106 0-0.16 0.002 0.123 0.244 0.255 0.532 0.374 0.85 0.347 0.921 0.666 2.28 0.1 3.486-0.522 1.113-1.424 1.4-2.09 1.573L10.14 9.432c-0.657 0.17-0.91 0.235-1.093 0.514-0.17 0.257-0.144 0.582 0.061 1.25l0.046 0.148c0.082 0.258 0.18 0.57 0.23 0.863 0.064 0.364 0.082 0.827-0.152 1.275-0.231 0.444-0.538 0.747-0.9 0.945-0.341 0.185-0.694 0.256-0.958 0.302l-0.093 0.017c-0.515 0.09-0.761 0.134-1 0.39-0.187 0.2-0.307 0.553-0.377 1.079-0.029 0.214-0.046 0.427-0.064 0.646l-0.01 0.117c-0.02 0.242-0.044 0.521-0.099 0.76v0.002c1.554 1.696 3.787 2.76 6.27 2.76 1.576 0 3.053-0.43 4.319-1.178-0.099-0.1-0.205-0.218-0.31-0.35-0.34-0.428-0.786-1.164-0.631-2.033 0.074-0.418 0.298-0.768 0.515-1.036 0.22-0.274 0.486-0.526 0.72-0.74l0.158-0.146c0.179-0.163 0.33-0.301 0.46-0.437 0.172-0.18 0.21-0.262 0.212-0.267 0.068-0.224-0.015-0.384-0.106-0.454-0.046-0.035-0.107-0.06-0.19-0.061-0.084 0-0.22 0.024-0.401 0.14-0.21 0.132-0.515 0.214-0.836 0.085-0.267-0.108-0.415-0.314-0.486-0.432-0.144-0.237-0.225-0.546-0.278-0.772-0.04-0.174-0.08-0.372-0.115-0.553l-0.04-0.206c-0.05-0.25-0.094-0.428-0.134-0.54l-0.02-0.037c-0.014-0.027-0.035-0.062-0.064-0.105-0.058-0.089-0.133-0.192-0.227-0.317l-0.11-0.143c-0.16-0.212-0.353-0.463-0.516-0.712-0.196-0.298-0.417-0.688-0.487-1.104-0.037-0.22-0.036-0.475 0.055-0.734 0.094-0.264 0.265-0.482 0.487-0.649 0.483-0.362 1.193-1.172 1.823-1.959 0.288-0.359 0.544-0.695 0.736-0.95C15.222 3.98 13.667 3.5 12 3.5z" android:fillColor="@color/fluent_default_icon_tint"/>
<path android:pathData="M10.946 2.047l0.005 0.007C11.296 2.02 11.646 2 12 2c5.522 0 10 4.477 10 10s-4.478 10-10 10c-3.21 0-6.066-1.512-7.896-3.862H4.102v-0.003C2.786 16.441 2 14.312 2 12c0-5.162 3.911-9.41 8.932-9.944l0.014-0.009zM12 3.5c-0.053 0-0.106 0-0.16 0.002 0.123 0.244 0.255 0.532 0.374 0.85 0.347 0.921 0.666 2.28 0.1 3.486-0.522 1.113-1.424 1.4-2.09 1.573L10.14 9.432c-0.657 0.17-0.91 0.235-1.093 0.514-0.17 0.257-0.144 0.582 0.061 1.25l0.046 0.148c0.082 0.258 0.18 0.57 0.23 0.863 0.064 0.364 0.082 0.827-0.152 1.275-0.231 0.444-0.538 0.747-0.9 0.945-0.341 0.185-0.694 0.256-0.958 0.302l-0.093 0.017c-0.515 0.09-0.761 0.134-1 0.39-0.187 0.2-0.307 0.553-0.377 1.079-0.029 0.214-0.046 0.427-0.064 0.646l-0.01 0.117c-0.02 0.242-0.044 0.521-0.099 0.76v0.002c1.554 1.696 3.787 2.76 6.27 2.76 1.576 0 3.053-0.43 4.319-1.178-0.099-0.1-0.205-0.218-0.31-0.35-0.34-0.428-0.786-1.164-0.631-2.033 0.074-0.418 0.298-0.768 0.515-1.036 0.22-0.274 0.486-0.526 0.72-0.74l0.158-0.146c0.179-0.163 0.33-0.301 0.46-0.437 0.172-0.18 0.21-0.262 0.212-0.267 0.068-0.224-0.015-0.384-0.106-0.454-0.046-0.035-0.107-0.06-0.19-0.061-0.084 0-0.22 0.024-0.401 0.14-0.21 0.132-0.515 0.214-0.836 0.085-0.267-0.108-0.415-0.314-0.486-0.432-0.144-0.237-0.225-0.546-0.278-0.772-0.04-0.174-0.08-0.372-0.115-0.553l-0.04-0.206c-0.05-0.25-0.094-0.428-0.134-0.54l-0.02-0.037c-0.014-0.027-0.035-0.062-0.064-0.105-0.058-0.089-0.133-0.192-0.227-0.317l-0.11-0.143c-0.16-0.212-0.353-0.463-0.516-0.712-0.196-0.298-0.417-0.688-0.487-1.104-0.037-0.22-0.036-0.475 0.055-0.734 0.094-0.264 0.265-0.482 0.487-0.649 0.483-0.362 1.193-1.172 1.823-1.959 0.288-0.359 0.544-0.695 0.736-0.95C15.222 3.98 13.667 3.5 12 3.5zm5.727 2.22c-0.197 0.263-0.461 0.608-0.757 0.978-0.602 0.751-1.4 1.685-2.05 2.187 0.026 0.1 0.1 0.262 0.255 0.498 0.131 0.2 0.281 0.397 0.44 0.604l0.129 0.17c0.172 0.229 0.411 0.548 0.52 0.844 0.087 0.234 0.149 0.519 0.198 0.762l0.049 0.246c0.025 0.13 0.049 0.253 0.075 0.37 0.601-0.172 1.201-0.068 1.67 0.294 0.608 0.47 0.862 1.286 0.624 2.074-0.11 0.362-0.364 0.66-0.563 0.869-0.17 0.177-0.372 0.362-0.556 0.53l-0.132 0.12c-0.23 0.212-0.423 0.4-0.568 0.579-0.148 0.184-0.195 0.299-0.205 0.356-0.04 0.219 0.067 0.51 0.328 0.838 0.118 0.148 0.244 0.274 0.341 0.362l0.033 0.03C19.36 16.872 20.5 14.569 20.5 12c0-2.488-1.069-4.726-2.773-6.28zM3.5 12c0 1.398 0.338 2.718 0.936 3.881 0.085-0.557 0.262-1.248 0.748-1.768 0.6-0.642 1.335-0.763 1.798-0.839l0.13-0.021c0.248-0.044 0.391-0.083 0.502-0.143 0.088-0.049 0.188-0.128 0.288-0.321 0.015-0.028 0.042-0.107 0.004-0.325-0.032-0.187-0.093-0.381-0.172-0.636-0.02-0.06-0.04-0.125-0.06-0.192-0.185-0.604-0.48-1.602 0.12-2.515 0.522-0.792 1.36-0.994 1.893-1.123l0.162-0.04c0.563-0.145 0.883-0.28 1.108-0.758 0.295-0.629 0.168-1.485-0.146-2.32-0.15-0.396-0.324-0.744-0.463-0.994-0.043-0.078-0.083-0.146-0.116-0.202C6.386 4.498 3.5 7.912 3.5 12z" 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="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M3 3.748c0-0.414 0.336-0.75 0.75-0.75h16.504c0.618 0 0.971 0.706 0.6 1.2L16.69 9.75l4.164 5.551c0.371 0.495 0.018 1.2-0.6 1.2H4.5v4.75c0 0.38-0.282 0.693-0.648 0.743L3.75 22c-0.38 0-0.693-0.282-0.743-0.648L3 21.25V3.748z" 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="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M3 3.748c0-0.414 0.336-0.75 0.75-0.75h16.504c0.618 0 0.971 0.706 0.6 1.2L16.69 9.75l4.164 5.551c0.371 0.495 0.018 1.2-0.6 1.2H4.5v4.75c0 0.38-0.282 0.693-0.648 0.743L3.75 22c-0.38 0-0.693-0.282-0.743-0.648L3 21.25V3.748zm15.754 0.75H4.5v10.503h14.254l-3.602-4.802c-0.2-0.266-0.2-0.633 0-0.9l3.602-4.8z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!--~ Copyright (c) 2022. ~ Microsoft Corporation. All rights reserved.-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_fluent_flag_24_filled" android:state_activated="true"/>
<item android:drawable="@drawable/ic_fluent_flag_24_filled" android:state_checked="true"/>
<item android:drawable="@drawable/ic_fluent_flag_24_filled" android:state_selected="true"/>
<item android:drawable="@drawable/ic_fluent_flag_24_regular"/>
</selector>

View File

@@ -20,6 +20,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingVertical="8dp"
android:orientation="vertical">
<TextView

View File

@@ -154,6 +154,38 @@
android:layout_gravity="center_horizontal"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/sensitive_item"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center_vertical"
android:layoutDirection="locale"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:background="?android:selectableItemBackground"
android:visibility="gone">
<ImageView
android:id="@+id/sensitive_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="32dp"
android:src="@drawable/ic_fluent_flag_24_selector"
android:tint="?android:textColorPrimary"
android:importantForAccessibility="no"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="16sp"
android:singleLine="true"
android:text="@string/mark_media_as_sensitive" />
</LinearLayout>
</LinearLayout>
</ScrollView>
@@ -227,7 +259,7 @@
android:tint="@color/compose_button"
android:tintMode="src_in"
android:contentDescription="@string/post_visibility"
android:src="@drawable/ic_fluent_earth_24_filled"/>
android:src="@drawable/ic_fluent_earth_24_regular"/>
<Space
android:layout_width="0px"

View File

@@ -41,7 +41,7 @@
android:layout_margin="16dp"
android:minWidth="145dp"
style="?primaryLargeButtonStyle"
android:text="@string/next" />
android:text="@string/i_agree" />
</LinearLayout>

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:padding="16dp"
android:elevation="3dp"
android:background="?colorBackgroundLightest"
android:foreground="?android:selectableItemBackground">
<ImageView
android:id="@+id/favicon"
android:layout_width="16dp"
android:layout_height="16dp"
android:layout_marginTop="2dp"
android:importantForAccessibility="no"
tools:src="#0f0"/>
<TextView
android:id="@+id/domain"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_toEndOf="@id/favicon"
android:layout_marginStart="4dp"
android:singleLine="true"
android:ellipsize="end"
android:textAppearance="@style/m3_title_small"
android:textColor="?android:textColorPrimary"
android:gravity="center_vertical"
tools:text="joinmastodon.org"/>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="24dp"
android:layout_below="@id/domain"
android:layout_marginTop="6dp"
android:textAppearance="@style/m3_title_medium"
android:singleLine="true"
android:ellipsize="end"
android:gravity="center_vertical"
tools:text="Mastodon for Android privacy policy"/>
</RelativeLayout>

View File

@@ -1,13 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="48dp"
android:orientation="horizontal"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:layout_width="match_parent"
android:layout_height="48dp"
android:gravity="center_vertical"
android:textSize="16sp"
android:textColor="?android:textColorPrimary"
android:singleLine="true"
android:ellipsize="end"
tools:text="daffdsa"/>
android:layoutDirection="locale">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="48dp"
android:paddingRight="16dp"
android:gravity="center_vertical"
android:textSize="16sp"
android:textColor="?android:textColorPrimary"
android:singleLine="true"
android:ellipsize="end"
tools:text="Account settings"/>
<ProgressBar
android:id="@+id/progress"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center"
android:alpha="0"
/>
</LinearLayout>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/vis_public"
android:icon="@drawable/ic_fluent_earth_24_filled"
android:icon="@drawable/ic_fluent_earth_24_regular"
android:title="@string/visibility_public"/>
<item android:id="@+id/vis_unlisted"
android:icon="@drawable/ic_fluent_people_community_24_regular"

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/notify_anyone" android:title="@string/notify_anyone" android:icon="@drawable/ic_fluent_earth_24_filled"/>
<item android:id="@+id/notify_anyone" android:title="@string/notify_anyone" android:icon="@drawable/ic_fluent_earth_24_regular"/>
<item android:id="@+id/notify_follower" android:title="@string/notify_follower" android:icon="@drawable/ic_fluent_people_checkmark_24_regular"/>
<item android:id="@+id/notify_followed" android:title="@string/notify_followed" android:icon="@drawable/ic_fluent_people_checkmark_24_regular"/>
<item android:id="@+id/notify_none" android:title="@string/notify_none" android:icon="@drawable/ic_fluent_prohibited_24_regular"/>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="get_started">الخطوات الأولى</string>
<string name="log_in">تسجيل الدخول</string>
<string name="log_in">تسجيلُ الدخول</string>
<string name="next">التالي</string>
<string name="loading_instance">يَجري الحُصُول على معلومات المَثيل…</string>
<string name="error">خطأ</string>
@@ -16,7 +16,7 @@
<string name="user_sent_follow_request">أرسَلَ طَلَبًا لِمُتابَعَتِك</string>
<string name="user_favorited">فَضَّلَ مَنشُورَك</string>
<string name="notification_boosted">أعادَ تَدوينَ مَنشُورَك</string>
<string name="poll_ended">انتهى استطلاع الرأي</string>
<string name="poll_ended">انتهى استطلاعُ الرأي</string>
<string name="time_seconds">%d ثا</string>
<string name="time_minutes">%d د</string>
<string name="time_hours">%d سا</string>
@@ -54,7 +54,7 @@
<string name="posts">منشورات</string>
<string name="posts_and_replies">مَنشُوراتٌ وَرُدُود</string>
<string name="media">وسائط</string>
<string name="profile_about">عن</string>
<string name="profile_about">حَول</string>
<string name="button_follow">تابِع</string>
<string name="button_following">يُتابِع</string>
<string name="edit_profile">حرّر الملف الشخصي</string>
@@ -260,8 +260,6 @@
<string name="content_warning">تحذير من المحتوى</string>
<string name="add_image_description">أضف وصفًا للصورة…</string>
<string name="retry_upload">حاول الرفع مجددًا</string>
<string name="image_upload_failed">فشل رفع الصورة</string>
<string name="video_upload_failed">فشل رفع الفيديو</string>
<string name="edit_image">حرّر الصورة</string>
<string name="save">احفظ</string>
<string name="add_alt_text">أضف نصًا بديلًا</string>
@@ -409,4 +407,32 @@
</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="last_edit_at_x">آخر تعديل %s</string>
<string name="time_just_now">للتوّ</string>
<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_upload_time_remaining">%s متبقية</string>
<string name="upload_error_connection_lost">فقد جهازك الاتصال بالإنترنت</string>
<string name="upload_processing">قيد المعالجة…</string>
<!-- %s is version like 1.2.3 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -162,8 +162,6 @@
<string name="content_warning">Pizanje sadržaja</string>
<string name="add_image_description">Dodaj opis slike…</string>
<string name="retry_upload">Pokušaj ponovo</string>
<string name="image_upload_failed">Slika se nije mogla sačuvati</string>
<string name="video_upload_failed">Video se nije mogao sačuvati</string>
<string name="edit_image">Uredi sliku</string>
<string name="save">Sačuvaj</string>
<string name="add_alt_text">Dodaj alt tekst</string>
@@ -256,4 +254,7 @@
<string name="file_saved">Datoteka sačuvana</string>
<string name="downloading">Downloading…</string>
<!-- 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 -->
</resources>

View File

@@ -199,8 +199,6 @@
<string name="content_warning">Avís de contingut</string>
<string name="add_image_description">Afegir una descripció a la imatge…</string>
<string name="retry_upload">Torna a provar de pujar</string>
<string name="image_upload_failed">La imatge no s\'ha pogut penjar</string>
<string name="video_upload_failed">No s\'ha pogut penjar el vídeo</string>
<string name="edit_image">Editar imatge</string>
<string name="save">Desar</string>
<string name="add_alt_text">Afegir text alternatiu</string>
@@ -319,4 +317,7 @@
</plurals>
<string name="timestamp_via_app">%1$s través de %2$s</string>
<string name="time_now">ara</string>
<!-- %s is version like 1.2.3 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="get_started">Začínáme</string>
<string name="log_in">Přihlásit</string>
<string name="get_started">Začít</string>
<string name="log_in">Přihlásit se</string>
<string name="next">Další</string>
<string name="loading_instance">Získávání informací o instanci…</string>
<string name="error">Chyba</string>
@@ -9,13 +9,13 @@
<string name="ok">OK</string>
<string name="preparing_auth">Příprava na ověřování…</string>
<string name="finishing_auth">Dokončení ověřování…</string>
<string name="user_boosted">%s sdíleno</string>
<string name="user_boosted">%s boostnul</string>
<string name="in_reply_to">V odpovědi na %s</string>
<string name="notifications">Upozornění</string>
<string name="user_followed_you">vás sleduje</string>
<string name="user_sent_follow_request">vám poslal žádost o sledování</string>
<string name="user_favorited">si oblíbil váš příspěvek</string>
<string name="notification_boosted">sdílel váš příspěvek</string>
<string name="notification_boosted">boostnul váš příspěvek</string>
<string name="poll_ended">anketa skončila</string>
<string name="time_seconds">%d s</string>
<string name="time_minutes">%d m</string>
@@ -27,6 +27,24 @@
<string name="discard_draft">Zahodit koncept?</string>
<string name="discard">Zahodit</string>
<string name="cancel">Zrušit</string>
<plurals name="followers">
<item quantity="one">sledující</item>
<item quantity="few">sledující</item>
<item quantity="many">sledujících</item>
<item quantity="other">sledujících</item>
</plurals>
<plurals name="following">
<item quantity="one">sledovaní</item>
<item quantity="few">sledování</item>
<item quantity="many">sledování</item>
<item quantity="other">sledování</item>
</plurals>
<plurals name="posts">
<item quantity="one">příspěvek</item>
<item quantity="few">příspěvky</item>
<item quantity="many">příspěvků</item>
<item quantity="other">příspěvků</item>
</plurals>
<string name="posts">Příspěvky</string>
<string name="posts_and_replies">Příspěvky a odpovědi</string>
<string name="media">Média</string>
@@ -43,6 +61,12 @@
<string name="report_user">Nahlásit %s</string>
<string name="block_domain">Blokovat %s</string>
<string name="unblock_domain">Odblokovat %s</string>
<plurals name="x_posts">
<item quantity="one">%,d příspěvek</item>
<item quantity="few">%,d příspěvky</item>
<item quantity="many">%,d příspěvků</item>
<item quantity="other">%,d příspěvků</item>
</plurals>
<string name="profile_joined">Účet vytvořen</string>
<string name="done">Hotovo</string>
<string name="loading">Načítání…</string>
@@ -169,7 +193,7 @@
<string name="report_sent_subtitle">Zatímco to posuzujeme, můžete podniknout kroky proti %s.</string>
<string name="unfollow_user">Přestat sledovat %s</string>
<string name="unfollow">Přestat sledovat</string>
<string name="mute_user_explain">Neuvidíte jejich příspěvky nebo sdílení v domovském kanálu. Nebudou vědět, že jsou skrytí.</string>
<string name="mute_user_explain">Neuvidíte jejich příspěvky nebo boostnutí v domovském kanálu. Nebudou vědět, že jsou skrytí.</string>
<string name="block_user_explain">Už nebudou moci sledovat nebo vidět vaše příspěvky, ale mohou vidět, že byli blokováni.</string>
<string name="report_personal_title">Nechcete tohle vidět?</string>
<string name="report_personal_subtitle">Když uvidíte něco, co se vám nelíbí na Mastodonu, můžete odstranit tuto osobu ze svého zážitku.</string>
@@ -204,15 +228,182 @@
<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 odeslán</string>
<string name="compose_hint">Napište nebo vložte, co máte na mysli</string>
<string name="content_warning">Varování o obsahu</string>
<string name="add_image_description">Přidat popis obrázku…</string>
<string name="retry_upload">Opakovat nahrání</string>
<string name="edit_image">Upravit obrázek</string>
<string name="save">Uložit</string>
<string name="add_alt_text">Přidat alt text</string>
<string name="alt_text_subtitle">Alt text popisuje obrázky pro lidi se špatným nebo žádným zrakem. Pokuste se zahrnout jen tolik obsahu, kolik je potřeba pro pochopení kontextu.</string>
<string name="alt_text_hint">Např. podezřívavě rozhlížející se pes se zúženýma očima namířenýma na kameru.</string>
<string name="visibility_public">Veřejný</string>
<string name="visibility_followers_only">Pouze sledující</string>
<string name="visibility_private">Pouze lidé, které zmíním</string>
<string name="search_all">Vše</string>
<string name="search_people">Lidé</string>
<string name="recent_searches">Nedávná hledání</string>
<string name="step_x_of_n">Krok %1$d z %2$d</string>
<string name="skip">Přeskočit</string>
<string name="notification_type_follow">Noví sledující</string>
<string name="notification_type_favorite">Oblíbené</string>
<string name="notification_type_reblog">Boostnutí</string>
<string name="notification_type_mention">Zmínky</string>
<string name="notification_type_poll">Ankety</string>
<string name="choose_account">Vybrat účet</string>
<string name="err_not_logged_in">Nejprve se přihlaste do Mastodonu</string>
<plurals name="cant_add_more_than_x_attachments">
<item quantity="one">Nelze přidat více než %d multimediálních příloh</item>
<item quantity="few">Nelze přidat více než %d multimediální přílohy</item>
<item quantity="many">Nelze přidat více než %d multimediálních příloh</item>
<item quantity="other">Nelze přidat více než %d multimediálních příloh</item>
</plurals>
<string name="media_attachment_unsupported_type">Soubor %s nepatří mezi podporované typy</string>
<string name="media_attachment_too_big">Soubor %1$s překračuje limit velikosti %2$s MB</string>
<string name="settings_theme">Vizuální podoba</string>
<string name="theme_auto">Automatická</string>
<string name="theme_light">Světlá</string>
<string name="theme_dark">Tmavá</string>
<string name="theme_true_black">Režim skutečně černé</string>
<string name="settings_behavior">Chování</string>
<string name="settings_gif">Přehrávat animované avatary a emoji</string>
<string name="settings_custom_tabs">Používat interní prohlížeč</string>
<string name="settings_notifications">Upozornění</string>
<string name="notify_me_when">Upozornit mě, když</string>
<string name="notify_anyone">kdokoliv</string>
<string name="notify_follower">sledující</string>
<string name="notify_followed">někdo, koho sleduji</string>
<string name="notify_none">nikoho</string>
<string name="notify_favorites">Oblíbil si můj příspěvek</string>
<string name="notify_follow">Sleduje mě</string>
<string name="notify_reblog">Sdílel můj příspěvek</string>
<string name="notify_reblog">Boostnul můj příspěvek</string>
<string name="notify_mention">Zmiňuje mě</string>
<string name="settings_boring">Nudná část</string>
<string name="settings_account">Nastavení účtu</string>
<string name="settings_contribute">Přispějte do Mastodonu</string>
<string name="settings_tos">Podmínky používání</string>
<string name="settings_privacy_policy">Zásady ochrany osobních údajů</string>
<string name="settings_spicy">Ostrá část</string>
<string name="settings_clear_cache">Vymazat mezipaměť médií</string>
<string name="settings_app_version">Mastodon pro Android v%1$s (%2$d)</string>
<string name="media_cache_cleared">Mezipaměť médií vymazána</string>
<string name="confirm_log_out">Opravdu se chcete odhlásit?</string>
<string name="sensitive_content">Citlivý obsah</string>
<string name="sensitive_content_explain">Autor označil toto médium za citlivé. Klepnutím zobrazíte.</string>
<string name="media_hidden">Klepnutím zobrazit</string>
<string name="avatar_description">Jít na profil %s</string>
<string name="more_options">Více možností</string>
<string name="reveal_content">Zobrazit obsah</string>
<string name="hide_content">Skrýt obsah</string>
<string name="new_post">Nový příspěvek</string>
<string name="button_reply">Odpovědět</string>
<string name="button_reblog">Boostnout</string>
<string name="button_favorite">Oblíbit</string>
<string name="button_share">Sdílet</string>
<string name="media_no_description">Média bez popisu</string>
<string name="add_media">Přidat média</string>
<string name="add_poll">Přidat anketu</string>
<string name="emoji">Emoji</string>
<string name="post_visibility">Viditelnost příspěvku</string>
<string name="home_timeline">Domovská časová osa</string>
<string name="my_profile">Můj profil</string>
<string name="media_viewer">Prohlížeč médií</string>
<string name="follow_user">Sledovat %s</string>
<string name="unfollowed_user">Sledování %s ukončeno</string>
<string name="followed_user">Nyní sledujete %s</string>
<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 připojit?</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>
<string name="profile_picture">Profilová fotografie</string>
<string name="reorder">Změnit pořadí</string>
<string name="download">Stáhnout</string>
<string name="permission_required">Vyžadováno oprávnění</string>
<string name="storage_permission_to_download">Aplikace potřebuje přístup k vašemu úložišti, aby mohla uložit tento soubor.</string>
<string name="open_settings">Otevřít nastavení</string>
<string name="error_saving_file">Chyba při ukládání souboru</string>
<string name="file_saved">Soubor uložen</string>
<string name="downloading">Stahování…</string>
<string name="no_app_to_handle_action">Nebyly nalezeny žádné aplikace pro tuto úlohu</string>
<string name="local_timeline">Komunita</string>
<string name="trending_posts_info_banner">Toto jsou příspěvky, které získávají pozornost ve vašem koutu Mastodonu.</string>
<string name="trending_hashtags_info_banner">Toto jsou hashtagy, které získávají pozornost ve vašem koutu Mastodonu.</string>
<string name="trending_links_info_banner">Toto jsou zprávy, které jsou nejvíce sdíleny ve vašem koutu Mastodonu.</string>
<string name="local_timeline_info_banner">Toto jsou nejnovější příspěvky od lidí, kteří používají stejný server Mastodonu jako vy.</string>
<string name="dismiss">Zavřít</string>
<string name="see_new_posts">Zobrazit nové příspěvky</string>
<string name="load_missing_posts">Načíst chybějící příspěvky</string>
<string name="follow_back">Sledovat zpátky</string>
<string name="button_follow_pending">Čekající</string>
<string name="follows_you">Sleduje vás</string>
<string name="manually_approves_followers">Ručně schvaluje sledující</string>
<string name="current_account">Současný účet</string>
<string name="log_out_account">Odhlásit %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 sledující</item>
<item quantity="few">%,d sledující</item>
<item quantity="many">%,d sledujících</item>
<item quantity="other">%,d sledujících</item>
</plurals>
<plurals name="x_following">
<item quantity="one">%,d sledující</item>
<item quantity="few">%,d sledování</item>
<item quantity="many">%,d sledování</item>
<item quantity="other">%,d sledování</item>
</plurals>
<plurals name="x_favorites">
<item quantity="one">%,d oblíbený</item>
<item quantity="few">%,d oblíbené</item>
<item quantity="many">%,d oblíbených</item>
<item quantity="other">%,d oblíbených</item>
</plurals>
<plurals name="x_reblogs">
<item quantity="one">%,d boostnul</item>
<item quantity="few">%,d boostnuli</item>
<item quantity="many">%,d boostnulo</item>
<item quantity="other">%,d boostnulo</item>
</plurals>
<string name="timestamp_via_app">%1$s přes %2$s</string>
<string name="time_now">teď</string>
<string name="post_info_reblogs">Reblogy</string>
<string name="post_info_favorites">Oblíbené</string>
<string name="edit_history">Historie změn</string>
<string name="last_edit_at_x">Poslední úprava %s</string>
<string name="time_just_now">právě teď</string>
<plurals name="x_seconds_ago">
<item quantity="one">Před 1 vteřinou</item>
<item quantity="few">Před %d vteřinami</item>
<item quantity="many">Před %d vteřinami</item>
<item quantity="other">Před %d vteřinami</item>
</plurals>
<plurals name="x_minutes_ago">
<item quantity="one">před %d minutou</item>
<item quantity="few">před %d minutami</item>
<item quantity="many">před %d minutami</item>
<item quantity="other">před %d minutami</item>
</plurals>
<string name="edited_timestamp">upraveno %s</string>
<string name="edit_original_post">Původní příspěvek</string>
<string name="edit_text_edited">Text upraven</string>
<string name="edit_spoiler_added">Upozornění na obsah bylo přidáno</string>
<string name="edit_spoiler_edited">Upozornění na obsah upraveno</string>
<string name="edit_spoiler_removed">Upozornění na obsah odstraněno</string>
<string name="edit_poll_added">Anketa přidána</string>
<string name="edit_poll_edited">Anketa upravena</string>
<string name="edit_poll_removed">Anketa odstraněna</string>
<string name="edit_media_added">Média přidána</string>
<string name="edit_media_removed">Média odstraněna</string>
<string name="edit_media_reordered">Média přeřazena</string>
<string name="edit_marked_sensitive">Označeno jako citlivé</string>
<string name="edit_marked_not_sensitive">Označeno, že není citlivé</string>
<string name="edit_multiple_changed">Příspěvek upraven</string>
<string name="edit">Upravit</string>
<string name="discard_changes">Zrušit změny?</string>
<!-- %s is version like 1.2.3 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -3,27 +3,27 @@
<string name="get_started">Loslegen</string>
<string name="log_in">Anmelden</string>
<string name="next">Weiter</string>
<string name="loading_instance">Lade Serverinformationen…</string>
<string name="loading_instance">Instanzinformationen werden geladen </string>
<string name="error">Fehler</string>
<string name="not_a_mastodon_instance">%s scheint keine Mastodon-Instanz zu sein.</string>
<string name="ok">OK</string>
<string name="preparing_auth">Bereite Authentifizierung vor</string>
<string name="finishing_auth">Authentifizierung erfolgt</string>
<string name="user_boosted">%s teilte</string>
<string name="in_reply_to">Antwort auf %s</string>
<string name="preparing_auth">Authentifizierung wird vorbereitet </string>
<string name="finishing_auth">Authentifizierung abschließen </string>
<string name="user_boosted">%s hat diesen Beitrag geteilt</string>
<string name="in_reply_to">Antwort auf den Beitrag von %s</string>
<string name="notifications">Benachrichtigungen</string>
<string name="user_followed_you">ist dir gefolgt</string>
<string name="user_followed_you">folgt dir jetzt</string>
<string name="user_sent_follow_request">hat dir eine Folgeanfrage gesendet</string>
<string name="user_favorited">hat deinen Beitrag favorisiert</string>
<string name="notification_boosted">hat deinen Beitrag geteilt</string>
<string name="poll_ended">Abstimmung beendet</string>
<string name="time_seconds">%dSek.</string>
<string name="time_minutes">%dMin.</string>
<string name="time_hours">%d Std.</string>
<string name="time_days">%d T</string>
<string name="time_seconds">vor %d Sekunden</string>
<string name="time_minutes">vor %d Minuten</string>
<string name="time_hours">vor %d Stunden</string>
<string name="time_days">vor %d Tagen</string>
<string name="share_toot_title">Teilen</string>
<string name="settings">Einstellungen</string>
<string name="publish">Tröt</string>
<string name="publish">Veröffentlichen</string>
<string name="discard_draft">Entwurf verwerfen?</string>
<string name="discard">Verwerfen</string>
<string name="cancel">Abbrechen</string>
@@ -32,15 +32,15 @@
<item quantity="other">Follower</item>
</plurals>
<plurals name="following">
<item quantity="one">Folgender</item>
<item quantity="other">Folgende</item>
<item quantity="one">Folge ich</item>
<item quantity="other">Folge ich</item>
</plurals>
<plurals name="posts">
<item quantity="one">Beitrag</item>
<item quantity="other">Beiträge</item>
</plurals>
<string name="posts">Beiträge</string>
<string name="posts_and_replies">Beiträge und Antworten</string>
<string name="posts_and_replies">Beiträge &amp; Antworten</string>
<string name="pinned_posts">Angeheftet</string>
<string name="media">Medien</string>
<string name="profile_about">Über</string>
@@ -48,26 +48,26 @@
<string name="button_following">Folge ich</string>
<string name="edit_profile">Profil bearbeiten</string>
<string name="mention_user">%s erwähen</string>
<string name="share_user">Teile das Profil von %s</string>
<string name="share_user">%s teilen</string>
<string name="mute_user">%s stummschalten</string>
<string name="unmute_user">%s nicht mehr stummschalten</string>
<string name="block_user">%s blockieren</string>
<string name="unblock_user">%s nicht mehr blockieren</string>
<string name="report_user">%s melden</string>
<string name="block_domain">%s blockieren</string>
<string name="unblock_domain">%s nicht mehr blockieren</string>
<string name="block_domain">Domain %s blockieren</string>
<string name="unblock_domain">Domain %s nicht mehr blockieren</string>
<plurals name="x_posts">
<item quantity="one">%,d Beitrag</item>
<item quantity="other">%,d Beiträge</item>
</plurals>
<string name="profile_joined">Beigetreten</string>
<string name="done">Fertig</string>
<string name="loading">Lädt</string>
<string name="loading">wird geladen </string>
<string name="field_label">Beschriftung</string>
<string name="field_content">Inhalt</string>
<string name="saving">Speichern…</string>
<string name="saving">Speichern </string>
<string name="post_from_user">Beitrag von %s</string>
<string name="poll_option_hint">Auswahlmöglichkeit %d</string>
<string name="poll_option_hint">%d. Auswahl</string>
<plurals name="x_minutes">
<item quantity="one">%d Minute</item>
<item quantity="other">%d Minuten</item>
@@ -98,23 +98,23 @@
<item quantity="other">%d Tage verbleibend</item>
</plurals>
<plurals name="x_voters">
<item quantity="one">%,d hat gewählt</item>
<item quantity="other">%,d haben gewählt</item>
<item quantity="one">%,d Stimme</item>
<item quantity="other">%,d Stimmen</item>
</plurals>
<string name="poll_closed">Geschlossen</string>
<string name="poll_closed">Beendet</string>
<string name="confirm_mute_title">Konto stummschalten</string>
<string name="confirm_mute">Bestätigen um %s stummzuschalten</string>
<string name="confirm_mute">Bestätigen, um %s stummzuschalten</string>
<string name="do_mute">Stummschalten</string>
<string name="confirm_unmute_title">Konto nicht mehr stummschalten</string>
<string name="confirm_unmute">Bestätigen, um %s nicht mehr stummzuschalten</string>
<string name="do_unmute">Nicht mehr stummschalten</string>
<string name="confirm_block_title">Konto blockieren</string>
<string name="confirm_block_title">Konto sperren</string>
<string name="confirm_block_domain_title">Domain blockieren</string>
<string name="confirm_block">Bestätigen um %s zu blockieren</string>
<string name="do_block">Blockieren</string>
<string name="confirm_unblock_title">Konto nicht mehr blockieren</string>
<string name="confirm_block">Bestätigen, um %s zu blockieren</string>
<string name="do_block">Ja, blockieren</string>
<string name="confirm_unblock_title">Konto nicht mehr sperren</string>
<string name="confirm_unblock_domain_title">Domain nicht mehr blockieren</string>
<string name="confirm_unblock">Bestätigen um %s nicht mehr zu blockieren</string>
<string name="confirm_unblock">Bestätigen, um %s nicht mehr zu blockieren</string>
<string name="do_unblock">Nicht mehr blockieren</string>
<string name="button_muted">Stummgeschaltet</string>
<string name="button_blocked">Blockiert</string>
@@ -143,7 +143,7 @@
<string name="search_hint">Suchen</string>
<string name="hashtags">Hashtags</string>
<string name="news">Nachrichten</string>
<string name="for_you">Für dich</string>
<string name="for_you">Vorschläge</string>
<string name="all_notifications">Alle</string>
<string name="mentions">Erwähnungen</string>
<plurals name="x_people_talking">
@@ -151,15 +151,15 @@
<item quantity="other">%d Personen reden darüber</item>
</plurals>
<plurals name="discussed_x_times">
<item quantity="one">%d mal diskutiert</item>
<item quantity="other">%d mal diskutiert</item>
<item quantity="one">%d Mal diskutiert</item>
<item quantity="other">%d × auf dieser Mastodon-Instanz geteilt</item>
</plurals>
<string name="report_title">%s melden</string>
<string name="report_choose_reason">Sag uns, was mit diesem Beitrag vor sich geht?</string>
<string name="report_choose_reason">Was stimmt mit diesem Beitrag nicht?</string>
<string name="report_choose_reason_account">Was ist los mit %s?</string>
<string name="report_choose_reason_subtitle">Wähle die beste Zugehörigkeit</string>
<string name="report_reason_personal">Das gefällt mir nicht</string>
<string name="report_reason_personal_subtitle">Das ist nicht etwas, was ihr nicht sehen wollt</string>
<string name="report_choose_reason_subtitle">Wähle die bestmögliche Option aus</string>
<string name="report_reason_personal">Der Beitrag gefällt mir nicht</string>
<string name="report_reason_personal_subtitle">Den Inhalt kann man nicht allen zumuten</string>
<string name="report_reason_spam">Das ist Spam</string>
<string name="report_reason_spam_subtitle">Bösartige Links, gefälschtes Engagement oder wiederholte Antworten</string>
<string name="report_reason_violation">Es verstößt gegen Serverregeln</string>
@@ -172,27 +172,27 @@
<string name="report_choose_posts_subtitle">Alles Zutreffende auswählen</string>
<string name="report_comment_title">Gibt es etwas anderes, was wir wissen sollten?</string>
<string name="report_comment_hint">Zusätzliche Kommentare</string>
<string name="sending_report">Sende Meldung</string>
<string name="report_sent_title">Vielen Dank für die Berichterstattung, wir werden uns damit befassen.</string>
<string name="sending_report">Bericht wird gesendet </string>
<string name="report_sent_title">Vielen Dank für die Meldung, wir werden uns damit befassen.</string>
<string name="report_sent_subtitle">Während wir dies überprüfen, kannst du gegen %s vorgehen.</string>
<string name="unfollow_user">%s entfolgen</string>
<string name="unfollow">Entfolgen</string>
<string name="mute_user_explain">Du wirst die Beiträge vom Konto nicht mehr sehen. Das Konto kann dir immer noch folgen, und die Person hinter dem Konto wird deine Beiträge sehen können und nicht wissen, dass du sie stummgeschaltet hast.</string>
<string name="mute_user_explain">Du wirst die eigenen und geteilten Beiträge des Kontos nicht mehr sehen können. Dass du das Profil stummgeschaltet hast, erfährt die Person hinter dem Account aber nicht.</string>
<string name="block_user_explain">Du wirst die Beiträge von diesem Konto nicht sehen. Das Konto wird nicht in der Lage sein, deine Beiträge zu sehen oder dir zu folgen. Die Person hinter dem Konto wird wissen, dass du das Konto blockiert hast.</string>
<string name="report_personal_title">Du willst das nicht mehr sehen?</string>
<string name="report_personal_subtitle">Wenn du etwas auf Mastodon nicht sehen willst, kannst du den Nutzer aus deiner Erfahrung streichen.</string>
<string name="back">Zurück</string>
<string name="instance_catalog_title">Mastodon besteht aus Benutzern auf verschiedenen Servern.</string>
<string name="instance_catalog_subtitle">Wähle einen Server basierend auf deinen Interessen, deiner Region oder einen Allgemeinen. Du kannst trotzdem mit jedem Interagieren, egal auf welchem Server.</string>
<string name="search_communities">Nach Server suchen oder URL eingeben</string>
<string name="instance_rules_title">Hier ein paar Regeln</string>
<string name="instance_rules_subtitle">Nimm dir eine Minute Zeit und gehe kurz durch alle Regeln durch, die %s machen.</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 Adresse eingeben</string>
<string name="instance_rules_title">Einige Grundregeln</string>
<string name="instance_rules_subtitle">Nimm dir eine Minute Zeit, und gehe kurz alle Regeln von %s durch.</string>
<string name="signup_title">Okay, lass uns mit %s anfangen</string>
<string name="edit_photo">bearbeiten</string>
<string name="display_name">anzeigename</string>
<string name="username">nutzername</string>
<string name="display_name">Anzeigename</string>
<string name="username">Nutzername</string>
<string name="email">E-Mail</string>
<string name="password">passwort</string>
<string name="password">Passwort</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">Aktivismus</string>
@@ -214,80 +214,81 @@
<string name="resent_email">Bestätigungs-E-Mail gesendet</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">Hochladen erneut versuchen</string>
<string name="image_description">Bildbeschreibung</string>
<string name="add_image_description">Füge eine Bildbeschreibung hinzu…</string>
<string name="retry_upload">Upload erneut versuchen</string>
<string name="image_upload_failed">Fehler beim Hochladen des Bildes</string>
<string name="video_upload_failed">Fehler beim Hochladen des Videos</string>
<string name="edit_image">Bild bearbeiten</string>
<string name="save">Speichern</string>
<string name="add_alt_text">Alternativtext hinzufügen</string>
<string name="alt_text_subtitle">Alternativtext erscheint für blinde Menschen. Versuche, nur so viele Details einzubeziehen, um den Kontext zu verstehen.</string>
<string name="alt_text_hint">z.B. Eine Giraffe auf einem Dreirad während sie eine Banane isst</string>
<string name="add_alt_text">Bildbeschreibung hinzufügen</string>
<string name="alt_text_subtitle">Die Bildbeschreibung („Alt-Text“) ist eine wichtige Unterstützung für blinde und sehbehinderte Menschen. Beschränke dich bei der Formulierung auf das nötigste, interpretiere nicht und beschreibe nur, was zu sehen ist, damit der Kontext verständlich ist und alle Menschen daran teilhaben können.</string>
<string name="alt_text_hint">z. B. Eine Giraffe auf einem Dreirad, während sie eine Banane isst.“</string>
<string name="visibility_public">Öffentlich</string>
<string name="visibility_unlisted">Nicht gelistet</string>
<string name="visibility_followers_only">Nur Folgende</string>
<string name="visibility_private">Nur Leute, die ich erwähne</string>
<string name="visibility_followers_only">Nur Follower</string>
<string name="visibility_private">Nur erwähnte Profile</string>
<string name="search_all">Alle</string>
<string name="search_people">Personen</string>
<string name="recent_searches">Letzte Suchanfragen</string>
<string name="step_x_of_n">Schritt %1$d von %2$d</string>
<string name="skip">Überspringen</string>
<string name="notification_type_follow">Neue Follower</string>
<string name="notification_type_follow">Neue Folgende</string>
<string name="notification_type_favorite">Favoriten</string>
<string name="notification_type_reblog">Teilungen</string>
<string name="notification_type_reblog">Geteilte Beiträge</string>
<string name="notification_type_mention">Erwähnungen</string>
<string name="notification_type_poll">Umfragen</string>
<string name="choose_account">Konto auswählen</string>
<string name="err_not_logged_in">Melde dich zuerst mit Mastodon an</string>
<string name="err_not_logged_in">Bitte zuerst in Mastodon anmelden</string>
<plurals name="cant_add_more_than_x_attachments">
<item quantity="one">Du kannst nicht mehr als %d Medienanhang hinzufügen</item>
<item quantity="other">Du kannst nicht mehr als %d Medienanhänge hinzufügen</item>
<item quantity="one">Du kannst nicht mehr als %d Medien-Datei anhängen</item>
<item quantity="other">Du kannst nicht mehr als %d Medien-Dateien anhängen</item>
</plurals>
<string name="media_attachment_unsupported_type">Datei %s wird nicht unterstützt</string>
<string name="media_attachment_too_big">Die Dateigröße %1$s übersteigt das Uploadlimit von %2$s MB</string>
<string name="settings_theme">Visuelle Darstellung</string>
<string name="theme_auto">Automatisch</string>
<string name="settings_theme">Design</string>
<string name="theme_auto">Systembedingt</string>
<string name="theme_light">Hell</string>
<string name="theme_dark">Dunkel</string>
<string name="theme_true_black">AMOLED-Modus</string>
<string name="settings_behavior">Verhalten</string>
<string name="settings_gif">Spiele animierte Avatare und Emojis ab</string>
<string name="settings_custom_tabs">Verwende In-App-Browser</string>
<string name="settings_behavior">App-Verhalten</string>
<string name="settings_gif">Spiele animierte GIFs, Avatare und Emojis ab</string>
<string name="settings_custom_tabs">In-App-Browser verwenden</string>
<string name="settings_notifications">Benachrichtigungen</string>
<string name="notify_me_when">Benachrichtige mich, wenn</string>
<string name="notify_anyone">jeder</string>
<string name="notify_follower">ein Follower</string>
<string name="notify_followed">jemand, dem ich folge</string>
<string name="notify_anyone">irgendjemand</string>
<string name="notify_follower">ein Follower von mir</string>
<string name="notify_followed">jemand, dem ich folge,</string>
<string name="notify_none">niemand</string>
<string name="notify_favorites">Meinen Beitrag favorisiert</string>
<string name="notify_follow">Mir folgt</string>
<string name="notify_reblog">Meinen Beitrag teilt</string>
<string name="notify_mention">Mich erwähnt</string>
<string name="settings_boring">Die Langeweile-Zone</string>
<string name="notify_favorites">meinen Beitrag favorisiert</string>
<string name="notify_follow">mir folgt</string>
<string name="notify_reblog">einen meiner Beiträge geteilt hat</string>
<string name="notify_mention">mich erwähnt</string>
<string name="settings_boring">Langweiliges</string>
<string name="settings_account">Kontoeinstellungen</string>
<string name="settings_contribute">Zu Mastodon beitragen</string>
<string name="settings_tos">AGBs</string>
<string name="settings_privacy_policy">Datenschutzerklärung</string>
<string name="settings_spicy">Die gefährliche Zone</string>
<string name="settings_contribute">Bei Mastodon unterstützen und mitmachen</string>
<string name="settings_tos">Nutzungsbedingungen</string>
<string name="settings_privacy_policy">Datenschutzbestimmungen</string>
<string name="settings_spicy">Gefährliches</string>
<string name="settings_clear_cache">Medien-Cache leeren</string>
<string name="settings_app_version">Mastodon für Android v%1$s (%2$d)</string>
<string name="settings_app_version">Mastodos v%1$s (%2$d)</string>
<string name="media_cache_cleared">Medien-Cache geleert</string>
<string name="confirm_log_out">Bist du dir sicher, dass du dich abmelden möchtest?</string>
<string name="sensitive_content">NSFW-Inhalt</string>
<string name="sensitive_content_explain">Der Autor hat den Inhalt als NSFW markiert. Tippen zum Öffnen.</string>
<string name="sensitive_content">Sensibler Inhalt</string>
<string name="sensitive_content_explain">Der Autor hat den Inhalt als sensiblen Inhalt markiert. Tippen zum Anzeigen.</string>
<string name="media_hidden">Tippen zum Öffnen</string>
<string name="avatar_description">Gehe zu %s\'s Profil</string>
<string name="avatar_description">Das Profil von %s öffnen</string>
<string name="more_options">Mehr Optionen</string>
<string name="reveal_content">Inhalt anzeigen</string>
<string name="hide_content">Inhalt verstecken</string>
<string name="new_post">Neuer Beitrag</string>
<string name="button_reply">Antworten</string>
<string name="button_reblog">Erneut teilen</string>
<string name="button_reblog">Teilen</string>
<string name="button_favorite">Favorisieren</string>
<string name="button_share">Teilen</string>
<string name="media_no_description">Medien ohne Beschreibung</string>
<string name="add_media">Medien hinzufügen</string>
<string name="mark_media_as_sensitive">Medien als NSFW markieren</string>
<string name="add_poll">Umfrage hinzufügen</string>
<string name="emoji">Emoji</string>
<string name="post_visibility">Sichtbarkeit des Beitrages</string>
@@ -297,54 +298,104 @@
<string name="follow_user">%s folgen</string>
<string name="unfollowed_user">%s entfolgt</string>
<string name="followed_user">Du folgst nun %s</string>
<string name="open_in_browser">Im Browser öffnen</string>
<string name="hide_boosts_from_user">Verstecke Teilungen von %s</string>
<string name="show_boosts_from_user">Zeige Teilungen von %s</string>
<string name="signup_reason">Warum möchtest du beitreten?</string>
<string name="open_in_browser">Beitrag im Browser öffnen</string>
<string name="hide_boosts_from_user">Verberge geteilte Beiträge von %s</string>
<string name="show_boosts_from_user">Zeige geteilte Beiträge von %s</string>
<string name="signup_reason">Weshalb möchtest du beitreten?</string>
<string name="signup_reason_note">Dies wird uns dabei helfen, deine Anmeldungsanfrage besser zu verarbeiten.</string>
<string name="clear">Löschen</string>
<string name="profile_header">Header-Bild</string>
<string name="profile_header">Kopfbild</string>
<string name="profile_picture">Profilbild</string>
<string name="reorder">Neu sortieren</string>
<string name="download">Herunterladen</string>
<string name="permission_required">Berechtigung erforderlich</string>
<string name="storage_permission_to_download">Die App benötigt Zugriff auf Ihren Speicher, um diese Datei zu speichern.</string>
<string name="storage_permission_to_download">Die App benötigt Zugriff auf den Speicher deines Geräts, um diese Datei zu speichern.</string>
<string name="open_settings">Einstellungen öffnen</string>
<string name="error_saving_file">Fehler beim Speichern der Datei</string>
<string name="file_saved">Datei gespeichert</string>
<string name="downloading">Herunterladen…</string>
<string name="downloading">wird heruntergeladen </string>
<string name="no_app_to_handle_action">Es gibt keine App, um diese Aktion auszuführen</string>
<string name="local_timeline">Community</string>
<string name="trending_posts_info_banner">Dies sind die Beiträge, die in deiner Mastodon-Bubble beliebter werden.</string>
<string name="trending_hashtags_info_banner">Dies sind die Hashtags in deiner Mastodon-Bubble.</string>
<string name="trending_links_info_banner">Dies sind die Nachrichten, die am meisten in deiner Mastodon-Bubble geteilt werden.</string>
<string name="federated_timeline">Föderation</string>
<string name="trending_posts_info_banner">Dies sind Beiträge, die auf deinem Mastodon-Server gerade angesagt sind.</string>
<string name="trending_hashtags_info_banner">Dies sind Hashtags, die auf deinem Mastodon-Server gerade angesagt sind.</string>
<string name="trending_links_info_banner">Dies sind journalistische Nachrichten, die auf deinem Mastodon-Server gerade am häufigsten geteilt werden.</string>
<string name="local_timeline_info_banner">Dies sind die neuesten Beiträge der Leute, die den gleichen Mastodon-Server verwenden wie du.</string>
<string name="federated_timeline_info_banner">Dies sind die neusten Beiträge der Leute, die in der Föderation deines Servers sind.</string>
<string name="dismiss">Verwerfen</string>
<string name="see_new_posts">Neue Beiträge anzeigen</string>
<string name="load_missing_posts">Fehlende Beiträge laden</string>
<string name="load_missing_posts">Weitere Beiträge laden</string>
<string name="follow_back">Zurück folgen</string>
<string name="button_follow_pending">Ausstehend</string>
<string name="follows_you">Folgt dir</string>
<string name="manually_approves_followers">Genehmigt Folgende manuell</string>
<string name="current_account">Aktuelles Konto</string>
<string name="log_out_account">Ausloggen</string>
<string name="log_out_account">%s abmelden</string>
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
<plurals name="x_followers">
<item quantity="one">%,d Follower</item>
<item quantity="other">%,d Follower</item>
</plurals>
<plurals name="x_following">
<item quantity="one">%,d Gefolgt</item>
<item quantity="other">%,d Gefolgt</item>
<item quantity="one">%,d folge ich</item>
<item quantity="other">%,d folge ich</item>
</plurals>
<plurals name="x_favorites">
<item quantity="one">%,d Favorit</item>
<item quantity="one">%,d × favorisiert</item>
<item quantity="other">%,d Favoriten</item>
</plurals>
<plurals name="x_reblogs">
<item quantity="one">%,d Reblog</item>
<item quantity="other">%,d Reblogs</item>
<item quantity="one">%,d × geteilt</item>
<item quantity="other">%,d × geteilt</item>
</plurals>
<string name="timestamp_via_app">%1$s via %2$s</string>
<string name="time_now">jetzt</string>
<string name="post_info_reblogs">Geteilte Beiträge</string>
<string name="post_info_favorites">Favoriten</string>
<string name="edit_history">Verlauf bearbeiten</string>
<string name="last_edit_at_x">Letzte Bearbeitung: %s</string>
<string name="time_just_now">gerade eben</string>
<plurals name="x_seconds_ago">
<item quantity="one">vor %d Sekunde</item>
<item quantity="other">vor %d Sekunden</item>
</plurals>
<plurals name="x_minutes_ago">
<item quantity="one">vor %d Minute</item>
<item quantity="other">vor %d Minuten</item>
</plurals>
<string name="edited_timestamp">bearbeitet %s</string>
<string name="edit_original_post">Ursprünglicher Beitrag</string>
<string name="edit_text_edited">Text bearbeitet</string>
<string name="edit_spoiler_added">Inhaltwarnung hinzugefügt</string>
<string name="edit_spoiler_edited">Inhaltwarnung bearbeitet</string>
<string name="edit_spoiler_removed">Inhaltwarnung entfernt</string>
<string name="edit_poll_added">Umfrage hinzugefügt</string>
<string name="edit_poll_edited">Umfrage bearbeitet</string>
<string name="edit_poll_removed">Umfrage entfernt</string>
<string name="edit_media_added">Medien hinzugefügt</string>
<string name="edit_media_removed">Medien entfernt</string>
<string name="edit_media_reordered">Medien umsortiert</string>
<string name="edit_marked_sensitive">Als NSFW markiert</string>
<string name="edit_marked_not_sensitive">Als nicht NSFW markiert</string>
<string name="edit_multiple_changed">Beitrag bearbeitet</string>
<string name="edit">Bearbeiten</string>
<string name="discard_changes">Änderungen verwerfen?</string>
<string name="upload_failed">Upload fehlgeschlagen</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 von %2$s</string>
<string name="file_upload_time_remaining">%s verbleibend</string>
<string name="upload_error_connection_lost">Dein Gerät hat gerade keinen Zugang zum Internet</string>
<string name="upload_processing">wird verarbeitet </string>
<!-- %s is version like 1.2.3 -->
<string name="update_available">Mastodos %s kann nun heruntergeladen werden.</string>
<!-- %s is version like 1.2.3 -->
<string name="update_ready">Mastodos %s wurde heruntergeladen und kann nun installiert werden.</string>
<!-- %s is file size -->
<string name="download_update">Download (%s)</string>
<string name="install_update">Installieren</string>
<string name="check_for_update">Auf Update prüfen</string>
<string name="no_update_available">Kein Update verfügbar</string>
</resources>

View File

@@ -1,4 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 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 -->
</resources>

View File

@@ -204,8 +204,6 @@
<string name="content_warning">Advertencia de contenido</string>
<string name="add_image_description">Añadir descripción de la imagen…</string>
<string name="retry_upload">Reintentar subida</string>
<string name="image_upload_failed">Error al subir la imagen</string>
<string name="video_upload_failed">Error al subir el vídeo</string>
<string name="edit_image">Editar imagen</string>
<string name="save">Guardar</string>
<string name="add_alt_text">Añadir texto alternativo</string>
@@ -333,4 +331,37 @@
</plurals>
<string name="timestamp_via_app">%1$s a través de %2$s</string>
<string name="time_now">ahora</string>
<string name="post_info_reblogs">Reblogueos</string>
<string name="post_info_favorites">Favoritos</string>
<string name="edit_history">Editar historial</string>
<string name="last_edit_at_x">Última edición: %s</string>
<string name="time_just_now">justo ahora</string>
<plurals name="x_seconds_ago">
<item quantity="one">Hace %d segundo</item>
<item quantity="other">Hace %d segundos</item>
</plurals>
<plurals name="x_minutes_ago">
<item quantity="one">Hace %d minuto</item>
<item quantity="other">Hace %d minutos</item>
</plurals>
<string name="edited_timestamp">editado %s</string>
<string name="edit_original_post">Publicación original</string>
<string name="edit_text_edited">Texto editado</string>
<string name="edit_spoiler_added">Advertencia de contenido añadida</string>
<string name="edit_spoiler_edited">Advertencia de contenido editada</string>
<string name="edit_spoiler_removed">Advertencia de contenido eliminada</string>
<string name="edit_poll_added">Encuesta añadida</string>
<string name="edit_poll_edited">Encuesta editada</string>
<string name="edit_poll_removed">Encuesta eliminada</string>
<string name="edit_media_added">Contenido multimedia añadido</string>
<string name="edit_media_removed">Contenido multimedia eliminado</string>
<string name="edit_media_reordered">Contenido multimedia reordenado</string>
<string name="edit_marked_sensitive">Marcado como sensible</string>
<string name="edit_marked_not_sensitive">Marcado como no sensible</string>
<string name="edit_multiple_changed">Publicación editada</string>
<string name="edit">Editar</string>
<string name="discard_changes">¿Descartar cambios?</string>
<!-- %s is version like 1.2.3 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -184,8 +184,6 @@
<string name="content_warning">Edukiaren abisua</string>
<string name="add_image_description">Gehitu irudiaren deskribapena…</string>
<string name="retry_upload">Saiatu berriro igotzen</string>
<string name="image_upload_failed">Irudia ezin izan da kargatu</string>
<string name="video_upload_failed">Bideoa ezin izan da kargatu</string>
<string name="edit_image">Editatu irudia</string>
<string name="save">Gorde</string>
<string name="add_alt_text">Gehitu ordezko testua</string>
@@ -258,4 +256,7 @@
<string name="file_saved">Fitxategia gorde da</string>
<string name="downloading">Jeisten…</string>
<!-- 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 -->
</resources>

View File

@@ -49,4 +49,7 @@
<string name="downloading">Ladataan…</string>
<string name="follow_back">Seuraa takaisin</string>
<!-- 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 -->
</resources>

View File

@@ -204,8 +204,6 @@
<string name="content_warning">Avertissement sur le contenu</string>
<string name="add_image_description">Ajouter une description de limage…</string>
<string name="retry_upload">Réessayer le téléversement</string>
<string name="image_upload_failed">Échec du téléversement de limage</string>
<string name="video_upload_failed">Échec du téléversement de la vidéo</string>
<string name="edit_image">Modifier limage</string>
<string name="save">Enregistrer</string>
<string name="add_alt_text">Ajouter un texte alternatif</string>
@@ -333,4 +331,50 @@
</plurals>
<string name="timestamp_via_app">%1$s via %2$s</string>
<string name="time_now">à linstant</string>
<string name="post_info_reblogs">Partages</string>
<string name="post_info_favorites">Favoris</string>
<string name="edit_history">Historique des éditions</string>
<string name="last_edit_at_x">Dernière édition %s</string>
<string name="time_just_now">à linstant</string>
<plurals name="x_seconds_ago">
<item quantity="one">Il y a %d seconde</item>
<item quantity="other">Il y a %d secondes</item>
</plurals>
<plurals name="x_minutes_ago">
<item quantity="one">Il y a %d minute</item>
<item quantity="other">Il y a %d minutes</item>
</plurals>
<string name="edited_timestamp">édité %s</string>
<string name="edit_original_post">Message originel</string>
<string name="edit_text_edited">Texte modifié</string>
<string name="edit_spoiler_added">Avertissement de contenu ajouté</string>
<string name="edit_spoiler_edited">Avertissement de contenu modifié</string>
<string name="edit_spoiler_removed">Avertissement de contenu supprimé</string>
<string name="edit_poll_added">Sondage ajouté</string>
<string name="edit_poll_edited">Sondage édité</string>
<string name="edit_poll_removed">Sondage supprimé</string>
<string name="edit_media_added">Média ajouté</string>
<string name="edit_media_removed">Média supprimé</string>
<string name="edit_media_reordered">Média réordonné</string>
<string name="edit_marked_sensitive">Marqué comme sensible</string>
<string name="edit_marked_not_sensitive">Marqué comme non-sensible</string>
<string name="edit_multiple_changed">Message édité</string>
<string name="edit">Éditer</string>
<string name="discard_changes">Ignorer les modifications ?</string>
<string name="upload_failed">Échec de lenvoi</string>
<string name="file_size_bytes">%d octets</string>
<string name="file_size_kb">%.2f Ko</string>
<string name="file_size_mb">%.2f Mo</string>
<string name="file_size_gb">%.2f Go</string>
<string name="file_upload_progress">%1$s sur %2$s</string>
<string name="file_upload_time_remaining">%s restant</string>
<string name="upload_error_connection_lost">Votre appareil a perdu la connexion à internet</string>
<string name="upload_processing">Traitement en cours…</string>
<!-- %s is version like 1.2.3 -->
<string name="update_available">Mastodon pour Android %s est prêt à être téléchargé.</string>
<!-- %s is version like 1.2.3 -->
<string name="update_ready">Mastodon pour Android %s est téléchargé et prêt à être installé.</string>
<!-- %s is file size -->
<string name="download_update">Téléchargement (%s)</string>
<string name="install_update">Installer</string>
</resources>

View File

@@ -204,8 +204,6 @@
<string name="content_warning">Aviso sobre o contido</string>
<string name="add_image_description">Engadir descrición da imaxe…</string>
<string name="retry_upload">Reintentar a suba</string>
<string name="image_upload_failed">Non se puido subir a imaxe</string>
<string name="video_upload_failed">Non se puido subir o vídeo</string>
<string name="edit_image">Editar imaxe</string>
<string name="save">Gardar</string>
<string name="add_alt_text">Engadir texto descritivo</string>
@@ -333,4 +331,46 @@
</plurals>
<string name="timestamp_via_app">%1$s vía %2$s</string>
<string name="time_now">agora</string>
<string name="post_info_reblogs">Promocións</string>
<string name="post_info_favorites">Favoritos</string>
<string name="edit_history">Editar historial</string>
<string name="last_edit_at_x">Última edición %s</string>
<string name="time_just_now">xusto agora</string>
<plurals name="x_seconds_ago">
<item quantity="one">fai %d segundo</item>
<item quantity="other">fai %d segundos</item>
</plurals>
<plurals name="x_minutes_ago">
<item quantity="one">fai %d minuto</item>
<item quantity="other">fai %d minutos</item>
</plurals>
<string name="edited_timestamp">editado %s</string>
<string name="edit_original_post">Publicación orixinal</string>
<string name="edit_text_edited">Texto editado</string>
<string name="edit_spoiler_added">Engadido aviso sobre o contido</string>
<string name="edit_spoiler_edited">Editado o aviso sobre o contido</string>
<string name="edit_spoiler_removed">Eliminado o aviso sobre o contido</string>
<string name="edit_poll_added">Enquisa engadida</string>
<string name="edit_poll_edited">Enquisa editada</string>
<string name="edit_poll_removed">Enquisa eliminada</string>
<string name="edit_media_added">Engadido multimedia</string>
<string name="edit_media_removed">Engadido eliminado</string>
<string name="edit_media_reordered">Multimedia reordenado</string>
<string name="edit_marked_sensitive">Marcado como sensible</string>
<string name="edit_marked_not_sensitive">Marcado como non sensible</string>
<string name="edit_multiple_changed">Publicación editada</string>
<string name="edit">Editar</string>
<string name="discard_changes">Descartar cambios?</string>
<string name="upload_failed">Fallou a carga</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 de %2$s</string>
<string name="file_upload_time_remaining">%s restante</string>
<string name="upload_error_connection_lost">O dispositivo perdeu a conexión a internet</string>
<string name="upload_processing">Procesando…</string>
<!-- %s is version like 1.2.3 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -212,8 +212,6 @@
<string name="content_warning">Upozorenje za sadržaj</string>
<string name="add_image_description">Dodaj opis slike…</string>
<string name="retry_upload">Ponovi prijenos</string>
<string name="image_upload_failed">Prijenos slike nije uspio</string>
<string name="video_upload_failed">Prijenos videa nije uspio</string>
<string name="edit_image">Uredi sliku</string>
<string name="save">Spremi</string>
<string name="add_alt_text">Dodaj altenativni tekst</string>
@@ -307,4 +305,7 @@
<string name="downloading">Preuzimanje…</string>
<string name="no_app_to_handle_action">Ne postoji aplikacija za rukovanje ovom radnjom</string>
<!-- 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 -->
</resources>

View File

@@ -51,4 +51,7 @@
<string name="unblock_user">Հանել արգելափակումից %s</string>
<string name="report_user">Բողոքել %s</string>
<!-- 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 -->
</resources>

View File

@@ -204,8 +204,6 @@
<string name="content_warning">Avviso sul contenuto</string>
<string name="add_image_description">Aggiungi descrizione immagine…</string>
<string name="retry_upload">Riprova caricamento</string>
<string name="image_upload_failed">Impossibile caricare il file</string>
<string name="video_upload_failed">Impossibile caricare il video</string>
<string name="edit_image">Modifica immagine</string>
<string name="save">Salva</string>
<string name="add_alt_text">Aggiungi testo alt</string>
@@ -333,4 +331,50 @@
</plurals>
<string name="timestamp_via_app">%1$s tramite %2$s</string>
<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="last_edit_at_x">Ultima modifica: %s</string>
<string name="time_just_now">proprio ora</string>
<plurals name="x_seconds_ago">
<item quantity="one">%d secondo fa</item>
<item quantity="other">%d secondi fa</item>
</plurals>
<plurals name="x_minutes_ago">
<item quantity="one">%d minuto fa</item>
<item quantity="other">%d minuti fa</item>
</plurals>
<string name="edited_timestamp">modificato %s</string>
<string name="edit_original_post">Post originale</string>
<string name="edit_text_edited">Testo modificato</string>
<string name="edit_spoiler_added">Avviso sul contenuto aggiunto</string>
<string name="edit_spoiler_edited">Avviso sul contenuto modificato</string>
<string name="edit_spoiler_removed">Avviso sul contenuto rimosso</string>
<string name="edit_poll_added">Sondaggio aggiunto</string>
<string name="edit_poll_edited">Sondaggio modificato</string>
<string name="edit_poll_removed">Sondaggio rimosso</string>
<string name="edit_media_added">Media aggiunto</string>
<string name="edit_media_removed">Media rimosso</string>
<string name="edit_media_reordered">Media riordinati</string>
<string name="edit_marked_sensitive">Contrassegnato come sensibile</string>
<string name="edit_marked_not_sensitive">Contrassegnato come non sensibile</string>
<string name="edit_multiple_changed">Post modificato</string>
<string name="edit">Modifica</string>
<string name="discard_changes">Annullare le modifiche?</string>
<string name="upload_failed">Caricamento fallito</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 di %2$s</string>
<string name="file_upload_time_remaining">%s rimanenti</string>
<string name="upload_error_connection_lost">Il tuo dispositivo ha perso la connessione a internet</string>
<string name="upload_processing">In elaborazione…</string>
<!-- %s is version like 1.2.3 -->
<string name="update_available">Mastodon per Android %s è pronto per il download.</string>
<!-- %s is version like 1.2.3 -->
<string name="update_ready">Mastodon per Android %s è scaricato e pronto per l\'installazione.</string>
<!-- %s is file size -->
<string name="download_update">Scarica (%s)</string>
<string name="install_update">Installa</string>
</resources>

View File

@@ -1,4 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 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 -->
</resources>

View File

@@ -25,7 +25,7 @@
<string name="settings">設定</string>
<string name="publish">公開</string>
<string name="discard_draft">下書きを削除しますか?</string>
<string name="discard">下書き</string>
<string name="discard">破棄</string>
<string name="cancel">キャンセル</string>
<plurals name="followers">
<item quantity="other">フォロワー</item>
@@ -190,8 +190,6 @@
<string name="content_warning">コンテンツ警告</string>
<string name="add_image_description">画像の説明を追加</string>
<string name="retry_upload">アップロードを再試行</string>
<string name="image_upload_failed">画像のアップロードに失敗しました</string>
<string name="video_upload_failed">ビデオのアップロードに失敗しました。</string>
<string name="edit_image">画像を編集</string>
<string name="save">保存</string>
<string name="add_alt_text">代替テキストを追加</string>
@@ -314,4 +312,7 @@
</plurals>
<string name="timestamp_via_app">%1$sに%2$s経由</string>
<string name="time_now"></string>
<!-- %s is version like 1.2.3 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -199,8 +199,6 @@
<string name="content_warning">Alɣu ɣef ugbur</string>
<string name="add_image_description">Rnu aglam n tugna…</string>
<string name="retry_upload">Ɛreḍ asali i tikkelt-nniḍen</string>
<string name="image_upload_failed">Asali n tugna yecceḍ</string>
<string name="video_upload_failed">Asali n tvidyut yecceḍ</string>
<string name="edit_image">Ẓreg tugna</string>
<string name="save">Sekles</string>
<string name="add_alt_text">Rnu ɣer uḍris</string>
@@ -300,9 +298,15 @@
<string name="dismiss">Ffer</string>
<string name="see_new_posts">Ẓer tissufaɣ timaynutin</string>
<string name="load_missing_posts">Sali tisuffaɣ i iruḥen</string>
<string name="follow_back">Ḍfeṛ</string>
<string name="button_follow_pending">Yettraǧu</string>
<string name="follows_you">Yeṭṭafaṛ-ik·em-id</string>
<string name="current_account">Amiḍan amiran</string>
<string name="log_out_account">Ffeɣ seg %s</string>
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
<string name="timestamp_via_app">%1$s s %2$s</string>
<string name="time_now">tura</string>
<!-- %s is version like 1.2.3 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -190,8 +190,6 @@
<string name="content_warning">열람 주의</string>
<string name="add_image_description">이미지 설명 추가…</string>
<string name="retry_upload">업로드 재시도</string>
<string name="image_upload_failed">이미지 업로드 실패</string>
<string name="video_upload_failed">동영상 업로드 실패</string>
<string name="edit_image">이미지 편집</string>
<string name="save">저장</string>
<string name="add_alt_text">대체 텍스트 추가</string>
@@ -314,4 +312,7 @@
</plurals>
<string name="timestamp_via_app">%1$s에 %2$s에서</string>
<string name="time_now">방금</string>
<!-- %s is version like 1.2.3 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -83,4 +83,7 @@
<string name="file_saved">Fichièr salvagardat</string>
<string name="downloading">Telecargament…</string>
<!-- 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 -->
</resources>

View File

@@ -232,8 +232,6 @@
<string name="content_warning">Ostrzeżenie o zawartości</string>
<string name="add_image_description">Dodaj opis obrazu…</string>
<string name="retry_upload">Ponów wysyłanie</string>
<string name="image_upload_failed">Nie udało się wysłać obrazu</string>
<string name="video_upload_failed">Nie udało się wysłać filmu</string>
<string name="edit_image">Edytuj obraz</string>
<string name="save">Zapisz</string>
<string name="add_alt_text">Dodaj tekst alternatywny</string>
@@ -371,4 +369,50 @@
</plurals>
<string name="timestamp_via_app">%1$s przez %2$s</string>
<string name="time_now">przed chwilą</string>
<string name="post_info_reblogs">Podbicia</string>
<string name="post_info_favorites">Ulubione</string>
<string name="edit_history">Historia edycji</string>
<string name="last_edit_at_x">Ostatnia zmiana: %s</string>
<string name="time_just_now">przed chwilą</string>
<plurals name="x_seconds_ago">
<item quantity="one">%d sekundę temu</item>
<item quantity="few">%d sekund temu</item>
<item quantity="many">%d sekund temu</item>
<item quantity="other">%d sekund temu</item>
</plurals>
<plurals name="x_minutes_ago">
<item quantity="one">%d minutę temu</item>
<item quantity="few">%d minuty temu</item>
<item quantity="many">%d minut temu</item>
<item quantity="other">%d min temu</item>
</plurals>
<string name="edited_timestamp">edytowano %s</string>
<string name="edit_original_post">Oryginalny post</string>
<string name="edit_text_edited">Tekst edytowany</string>
<string name="edit_spoiler_added">Ostrzeżenie o zawartości</string>
<string name="edit_spoiler_edited">Ostrzeżenie o zawartości edytowane</string>
<string name="edit_spoiler_removed">Ostrzeżenie o treści usunięte</string>
<string name="edit_poll_added">Dodano ankietę</string>
<string name="edit_poll_edited">Edytowano ankietę</string>
<string name="edit_poll_removed">Ankieta usunięta</string>
<string name="edit_media_added">Dodano media</string>
<string name="edit_media_removed">Media usunięte</string>
<string name="edit_media_reordered">Kolejność mediów</string>
<string name="edit_marked_sensitive">Oznaczono jako wrażliwe</string>
<string name="edit_marked_not_sensitive">Oznaczono jako wrażliwe</string>
<string name="edit_multiple_changed">Edytowano post</string>
<string name="edit">Edytuj</string>
<string name="discard_changes">Odrzucić zmiany?</string>
<string name="upload_failed">Przesyłanie nie powiodło się</string>
<string name="file_size_bytes">%d bajtów</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 z %2$s</string>
<string name="file_upload_time_remaining">Pozostało %s</string>
<string name="upload_error_connection_lost">Twoje urządzenie utraciło połączenie z Internetem</string>
<string name="upload_processing">Przetwarzanie…</string>
<!-- %s is version like 1.2.3 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -9,11 +9,13 @@
<string name="ok">OK</string>
<string name="preparing_auth">Preparando para autenticação…</string>
<string name="finishing_auth">Finalizando autenticação…</string>
<string name="user_boosted">%s reblogado</string>
<string name="in_reply_to">Em resposta à %s</string>
<string name="notifications">Notificações</string>
<string name="user_followed_you">seguiu você</string>
<string name="user_sent_follow_request">enviou uma solicitação para você seguir</string>
<string name="user_favorited">favoritou seu post</string>
<string name="notification_boosted">reblogado sua postagem</string>
<string name="poll_ended">enquete encerrada</string>
<string name="time_seconds">%ds</string>
<string name="time_minutes">%dm</string>
@@ -159,6 +161,7 @@
<string name="report_sent_subtitle">Enquanto revisamos isso, você pode tomar medidas contra @%s.</string>
<string name="unfollow_user">Deixar de seguir @%s</string>
<string name="unfollow">Deixar de seguir</string>
<string name="mute_user_explain">Você não verá suas postagens ou reblogs em seu feed inicial. Eles não saberão que foram silenciados.</string>
<string name="block_user_explain">Eles não poderão mais seguir ou ver seus post, mas poderão ver se foram bloqueados.</string>
<string name="report_personal_title">Não quer ver isto?</string>
<string name="report_personal_subtitle">Quando você vê algo que não gosta no Mastodon, pode remover a pessoa da sua experiência.</string>
@@ -197,8 +200,6 @@
<string name="content_warning">Aviso de conteúdo</string>
<string name="add_image_description">Adicionar descrição da imagem…</string>
<string name="retry_upload">Tentar enviar novamente</string>
<string name="image_upload_failed">Falha ao carregar imagem</string>
<string name="video_upload_failed">Falha no envio do vídeo</string>
<string name="edit_image">Editar imagem</string>
<string name="save">Salvar</string>
<string name="add_alt_text">Adicionar texto alternativo</string>
@@ -214,6 +215,7 @@
<string name="skip">Pular</string>
<string name="notification_type_follow">Novos seguidores</string>
<string name="notification_type_favorite">Favoritos</string>
<string name="notification_type_reblog">Reblogues</string>
<string name="notification_type_mention">Menções</string>
<string name="notification_type_poll">Enquetes</string>
<string name="choose_account">Escolher conta</string>
@@ -240,6 +242,7 @@
<string name="notify_none">ninguém</string>
<string name="notify_favorites">Favoritaram minha publicação</string>
<string name="notify_follow">Sigam-me</string>
<string name="notify_reblog">Rebloga meu post</string>
<string name="notify_mention">Mencione-me</string>
<string name="settings_boring">A zona entediante</string>
<string name="settings_account">Configurações da conta</string>
@@ -260,6 +263,7 @@
<string name="hide_content">Ocultar conteúdo</string>
<string name="new_post">Novo post</string>
<string name="button_reply">Responder</string>
<string name="button_reblog">Reblogar</string>
<string name="button_favorite">Favoritar</string>
<string name="button_share">Compartilhar</string>
<string name="media_no_description">Mídia sem descrição</string>
@@ -274,6 +278,8 @@
<string name="unfollowed_user">Deixar de seguir @%s</string>
<string name="followed_user">Você agora está seguindo %s</string>
<string name="open_in_browser">Abrir no navegador</string>
<string name="hide_boosts_from_user">Ocultar reblogues de %s</string>
<string name="show_boosts_from_user">Mostrar reblogues de %s</string>
<string name="signup_reason">por que você quer entrar?</string>
<string name="signup_reason_note">Isso vai nos ajudar a revisar sua aplicação.</string>
<string name="clear">Limpar</string>
@@ -317,4 +323,30 @@
</plurals>
<string name="timestamp_via_app">%1$s via %2$s</string>
<string name="time_now">agora</string>
<string name="post_info_reblogs">Reblogues</string>
<string name="post_info_favorites">Favoritos</string>
<string name="edit_history">Editar histórico</string>
<string name="last_edit_at_x">Última edição %s</string>
<string name="time_just_now">agora mesmo</string>
<plurals name="x_seconds_ago">
<item quantity="one">%d segundo atrás</item>
<item quantity="other">%d segundos atrás</item>
</plurals>
<string name="edited_timestamp">editado %s</string>
<string name="edit_original_post">Postagem original</string>
<string name="edit_text_edited">Texto editado</string>
<string name="edit_spoiler_added">Aviso de conteúdo adicionado</string>
<string name="edit_spoiler_edited">Aviso de conteúdo editado</string>
<string name="edit_spoiler_removed">Aviso de conteúdo removido</string>
<string name="edit_marked_sensitive">Marcadas como sensíveis</string>
<string name="edit_marked_not_sensitive">Marcado como não sensível</string>
<string name="edit_multiple_changed">Publicação editada</string>
<string name="edit">Editar</string>
<string name="discard_changes">Descartar alterações?</string>
<string name="upload_failed">Falha no upload</string>
<string name="upload_error_connection_lost">Seu dispositivo perdeu a conexão com a internet</string>
<string name="upload_processing">Processando…</string>
<!-- %s is version like 1.2.3 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -178,8 +178,6 @@
<string name="content_warning">Aviso de conteúdo</string>
<string name="add_image_description">Adicionar descrição da imagem…</string>
<string name="retry_upload">Tentar enviar novamente</string>
<string name="image_upload_failed">Falha ao carregar imagem</string>
<string name="video_upload_failed">Falha ao carregar vídeo</string>
<string name="edit_image">Editar imagem</string>
<string name="save">Salvar</string>
<string name="add_alt_text">Adicionar texto alternativo</string>
@@ -194,4 +192,7 @@
<string name="step_x_of_n">Passo %1$d de %2$d</string>
<string name="skip">Ignorar</string>
<!-- 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 -->
</resources>

View File

@@ -232,8 +232,6 @@
<string name="content_warning">Предупреждение о содержании</string>
<string name="add_image_description">Добавить описание…</string>
<string name="retry_upload">Повторить попытку</string>
<string name="image_upload_failed">Не удалось загрузить изображение</string>
<string name="video_upload_failed">Не удалось загрузить видео</string>
<string name="edit_image">Редактировать изображение</string>
<string name="save">Сохранить</string>
<string name="add_alt_text">Добавить альтернативный текст</string>
@@ -359,4 +357,7 @@
</plurals>
<string name="timestamp_via_app">%1$s через %2$s</string>
<string name="time_now">только что</string>
<!-- %s is version like 1.2.3 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -29,4 +29,7 @@
<string name="emoji">Emoji</string>
<string name="open_in_browser">Öppna i webbläsare</string>
<!-- 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 -->
</resources>

View File

@@ -190,8 +190,6 @@
<string name="content_warning">คำเตือนเนื้อหา</string>
<string name="add_image_description">เพิ่มคำอธิบายภาพ…</string>
<string name="retry_upload">ลองอัปโหลดใหม่</string>
<string name="image_upload_failed">ไม่สามารถอัปโหลดภาพ</string>
<string name="video_upload_failed">ไม่สามารถอัปโหลดวิดีโอ</string>
<string name="edit_image">แก้ไขภาพ</string>
<string name="save">บันทึก</string>
<string name="add_alt_text">เพิ่มข้อความแสดงแทน</string>
@@ -314,4 +312,44 @@
</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="other">%d วินาทีที่แล้ว</item>
</plurals>
<plurals name="x_minutes_ago">
<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 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -9,7 +9,7 @@
<string name="ok">Tamam</string>
<string name="preparing_auth">Kimlik doğrulama için hazırlanıyor…</string>
<string name="finishing_auth">Kimlik doğrulama tamamlanıyor…</string>
<string name="user_boosted">%s gönderinizi yeniden paylaştı</string>
<string name="user_boosted">%s yeniden paylaştı</string>
<string name="in_reply_to">%s için yanıt</string>
<string name="notifications">Bildirimler</string>
<string name="user_followed_you">seni takip etti</string>
@@ -29,11 +29,11 @@
<string name="cancel">İptal</string>
<plurals name="followers">
<item quantity="one">Takipçi</item>
<item quantity="other">Takipçiler</item>
<item quantity="other">Takipçi</item>
</plurals>
<plurals name="following">
<item quantity="one">Takip edilen</item>
<item quantity="other">Takip edilenler</item>
<item quantity="one">Takip</item>
<item quantity="other">Takip</item>
</plurals>
<plurals name="posts">
<item quantity="one">gönderi</item>
@@ -44,7 +44,7 @@
<string name="media">Medya</string>
<string name="profile_about">Hakkında</string>
<string name="button_follow">Takip et</string>
<string name="button_following">Takip ediyor</string>
<string name="button_following">Takip ediliyor</string>
<string name="edit_profile">Profili düzenle</string>
<string name="mention_user">Bahset %s</string>
<string name="share_user">Paylaş %s</string>
@@ -204,8 +204,6 @@
<string name="content_warning">İçerik Uyarısı</string>
<string name="add_image_description">Resim açıklaması ekle…</string>
<string name="retry_upload">Yüklemeyi yeniden dene</string>
<string name="image_upload_failed">Resim yüklenemedi</string>
<string name="video_upload_failed">Video yüklenemedi</string>
<string name="edit_image">Resmi Düzenle</string>
<string name="save">Kaydet</string>
<string name="add_alt_text">Alternatif metin ekle</string>
@@ -282,7 +280,7 @@
<string name="media_viewer">Medya görüntüleyici</string>
<string name="follow_user">%s\'yi takip et</string>
<string name="unfollowed_user">%s takip edilmedi</string>
<string name="followed_user">%s\'i takip ediyorsunuz</string>
<string name="followed_user">%s kişisini takip ediyorsunuz</string>
<string name="open_in_browser">Tarayıcıda aç</string>
<string name="hide_boosts_from_user">%s kişisinin yeniden paylaşımlarını gizle</string>
<string name="show_boosts_from_user">%s kişisinin yeniden paylaşımlarını göster</string>
@@ -320,8 +318,8 @@
<item quantity="other">%,d takipçi</item>
</plurals>
<plurals name="x_following">
<item quantity="one">%,d takip edilen</item>
<item quantity="other">%,d takip edilen</item>
<item quantity="one">%,d takip</item>
<item quantity="other">%,d takip</item>
</plurals>
<plurals name="x_favorites">
<item quantity="one">%,d favori</item>
@@ -332,4 +330,10 @@
<item quantity="other">%,d yeniden paylaşım</item>
</plurals>
<string name="timestamp_via_app">%1$s tarihinde %2$s uygulamasıyla</string>
<string name="time_now">şimdi</string>
<string name="post_info_reblogs">Yeniden Paylaşımlar</string>
<string name="post_info_favorites">Favoriler</string>
<!-- %s is version like 1.2.3 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -28,4 +28,7 @@
<string name="media">Медіа</string>
<string name="button_follow">Підписатися</string>
<!-- 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 -->
</resources>

View File

@@ -163,7 +163,7 @@
<string name="instance_rules_subtitle">Hãy đọc kỹ quy tắc máy chủ của %s và cân nhắc.</string>
<string name="signup_title">Hãy để tôi đăng ký trên %s</string>
<string name="edit_photo">sửa</string>
<string name="display_name">tên hiển thị</string>
<string name="display_name">biệt danh</string>
<string name="username">tên người dùng</string>
<string name="email">email</string>
<string name="password">mật khẩu</string>
@@ -190,8 +190,6 @@
<string name="content_warning">Nội dung ẩn</string>
<string name="add_image_description">Thêm mô tả ảnh…</string>
<string name="retry_upload">Thử tải lên lại</string>
<string name="image_upload_failed">Không thể tải ảnh lên</string>
<string name="video_upload_failed">Không thể tải video lên</string>
<string name="edit_image">Sửa ảnh</string>
<string name="save">Lưu</string>
<string name="add_alt_text">Thêm văn bản thay thế</string>
@@ -246,7 +244,7 @@
<string name="media_cache_cleared">Đã xóa bộ nhớ đệm</string>
<string name="confirm_log_out">Bạn có chắc muốn đăng xuất không?</string>
<string name="sensitive_content">Nội dung nhạy cảm</string>
<string name="sensitive_content_explain">Người đăng đã đánh dấu media này nhạy cảm. Nhấn để xem.</string>
<string name="sensitive_content_explain">Media này có thể nhạy cảm. Nhấn để xem.</string>
<string name="media_hidden">Nhấn để xem</string>
<string name="avatar_description">Xem hồ sơ %s</string>
<string name="more_options">Nhiều tùy chọn hơn</string>
@@ -314,4 +312,48 @@
</plurals>
<string name="timestamp_via_app">%1$s qua %2$s</string>
<string name="time_now">vừa xong</string>
<string name="post_info_reblogs">Lượt đăng lại</string>
<string name="post_info_favorites">Lượt thích</string>
<string name="edit_history">Lịch sử chỉnh sửa</string>
<string name="last_edit_at_x">Sửa lần cuối %s</string>
<string name="time_just_now">vừa xong</string>
<plurals name="x_seconds_ago">
<item quantity="other">%d giây trước</item>
</plurals>
<plurals name="x_minutes_ago">
<item quantity="other">%d phút trước</item>
</plurals>
<string name="edited_timestamp">đã sửa %s</string>
<string name="edit_original_post">Tút gốc</string>
<string name="edit_text_edited">Nội dung chỉnh sửa</string>
<string name="edit_spoiler_added">Thêm cảnh báo nội dung</string>
<string name="edit_spoiler_edited">Sửa cảnh báo nội dung</string>
<string name="edit_spoiler_removed">Xóa cảnh báo nội dung</string>
<string name="edit_poll_added">Thêm bình chọn</string>
<string name="edit_poll_edited">Sửa bình chọn</string>
<string name="edit_poll_removed">Xóa bình chọn</string>
<string name="edit_media_added">Thêm media</string>
<string name="edit_media_removed">Xóa media</string>
<string name="edit_media_reordered">Xếp lại media</string>
<string name="edit_marked_sensitive">Đánh dấu nhạy cảm</string>
<string name="edit_marked_not_sensitive">Đánh dấu là bình thường</string>
<string name="edit_multiple_changed">Tút đã sửa</string>
<string name="edit">Sửa</string>
<string name="discard_changes">Hủy bỏ các thay đổi?</string>
<string name="upload_failed">Tải lên không thành công</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 trong %2$s</string>
<string name="file_upload_time_remaining">%s còn lại</string>
<string name="upload_error_connection_lost">Thiết bị của bạn bị rớt mạng</string>
<string name="upload_processing">Đang tải lên…</string>
<!-- %s is version like 1.2.3 -->
<string name="update_available">Mastodon Android %s đã sẵn sàng tải về.</string>
<!-- %s is version like 1.2.3 -->
<string name="update_ready">Mastodon Android %s đã được tải về và sẵn sàng cài đặt.</string>
<!-- %s is file size -->
<string name="download_update">Tải về (%s)</string>
<string name="install_update">Cài đặt</string>
</resources>

View File

@@ -203,8 +203,6 @@
<string name="image_description">图片描述</string>
<string name="add_image_description">添加图片描述…</string>
<string name="retry_upload">重新上传</string>
<string name="image_upload_failed">图片上传失败</string>
<string name="video_upload_failed">视频上传失败</string>
<string name="edit_image">编辑图片</string>
<string name="save">保存</string>
<string name="add_alt_text">添加备注</string>
@@ -250,7 +248,7 @@
<string name="notify_reblog">转发我的嘟文</string>
<string name="notify_mention">提及我</string>
<string name="settings_boring">更多</string>
<string name="settings_account">户设置</string>
<string name="settings_account">户设置</string>
<string name="settings_contribute">贡献给Mastodon</string>
<string name="settings_tos">使用条款</string>
<string name="settings_privacy_policy">隐私政策</string>
@@ -332,4 +330,44 @@
</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="other">%d 秒前</item>
</plurals>
<plurals name="x_minutes_ago">
<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 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共 %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 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -190,8 +190,6 @@
<string name="content_warning">內容警告</string>
<string name="add_image_description">新增圖片描述...</string>
<string name="retry_upload">重新嘗試上傳</string>
<string name="image_upload_failed">圖片上傳失敗</string>
<string name="video_upload_failed">影片上傳失敗</string>
<string name="edit_image">編輯圖片</string>
<string name="save">儲存</string>
<string name="add_alt_text">新增說明文字</string>
@@ -314,4 +312,44 @@
</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="other">%d 秒前</item>
</plurals>
<plurals name="x_minutes_ago">
<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 KB</string>
<string name="file_size_mb">%.2f MB</string>
<string name="file_size_gb">%.2f GB</string>
<string name="file_upload_progress">%2$s 中的 %1$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 -->
<!-- %s is version like 1.2.3 -->
<!-- %s is file size -->
</resources>

View File

@@ -275,7 +275,7 @@
<string name="settings_privacy_policy">Privacy policy</string>
<string name="settings_spicy">The spicy zone</string>
<string name="settings_clear_cache">Clear media cache</string>
<string name="settings_app_version">Mastodon for Android v%1$s (%2$d)</string>
<string name="settings_app_version">Mastodos v%1$s (%2$d)</string>
<string name="media_cache_cleared">Media cache cleared</string>
<string name="confirm_log_out">Are you sure you want to sign out?</string>
<string name="sensitive_content">Sensitive content</string>
@@ -294,6 +294,7 @@
<string name="bookmarks">Bookmarks</string>
<string name="media_no_description">Media without description</string>
<string name="add_media">Add media</string>
<string name="mark_media_as_sensitive">Mark media as sensitive</string>
<string name="add_poll">Add a poll</string>
<string name="emoji">Emoji</string>
<string name="post_visibility">Post visibility</string>
@@ -396,10 +397,15 @@
<string name="upload_error_connection_lost">Your device lost connection to the internet</string>
<string name="upload_processing">Processing…</string>
<!-- %s is version like 1.2.3 -->
<string name="update_available">Mastodon for Android %s is ready to download.</string>
<string name="update_available">Mastodos %s is ready to download.</string>
<!-- %s is version like 1.2.3 -->
<string name="update_ready">Mastodon for Android %s is downloaded and ready to install.</string>
<string name="update_ready">Mastodos %s is downloaded and ready to install.</string>
<!-- %s is file size -->
<string name="download_update">Download (%s)</string>
<string name="install_update">Install</string>
<string name="check_for_update">Check for update</string>
<string name="no_update_available">No update available</string>
<string name="privacy_policy_title">Mastodon and your privacy</string>
<string name="privacy_policy_subtitle">Although the Mastodon app does not collect any data, the server you sign up through may have a different policy. Take a minute to review and agree to the Mastodon app privacy policy and your server\'s privacy policy.</string>
<string name="i_agree">I Agree</string>
</resources>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="en" />
<locale android:name="ar" />
<locale android:name="bs" />
<locale android:name="ca" />
<locale android:name="cs" />
<locale android:name="de" />
<locale android:name="el" />
<locale android:name="es" />
<locale android:name="eu" />
<locale android:name="fi" />
<locale android:name="fr" />
<locale android:name="gl" />
<locale android:name="hr" />
<locale android:name="hy" />
<locale android:name="it" />
<locale android:name="iw" />
<locale android:name="ja" />
<locale android:name="kab" />
<locale android:name="ko" />
<locale android:name="oc" />
<locale android:name="pl" />
<locale android:name="pt-BR" />
<locale android:name="pt-PT" />
<locale android:name="ru" />
<locale android:name="sv" />
<locale android:name="th" />
<locale android:name="tr" />
<locale android:name="uk" />
<locale android:name="vi" />
<locale android:name="zh-Hans" />
<locale android:name="zh-Hant" />
</locale-config>