Compare commits

...

26 Commits

Author SHA1 Message Date
sk
cd3de97d55 Merge remote-tracking branch 'upstream/l10n_master' 2023-10-07 23:47:36 +02:00
sk
4853a25710 bump version 2023-10-07 23:47:01 +02:00
SomeTr
eba9a1da7b Translated using Weblate (Ukrainian)
Currently translated at 100.0% (18 of 18 strings)

Translation: Megalodon/metadata
Translate-URL: https://translate.codeberg.org/projects/megalodon/metadata/uk/
2023-10-07 21:46:18 +00:00
SomeTr
068c62b060 Translated using Weblate (Ukrainian)
Currently translated at 98.9% (385 of 389 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/uk/
2023-10-07 21:46:18 +00:00
David Lapshin
5d7f06eba0 Translated using Weblate (Russian)
Currently translated at 97.6% (380 of 389 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/ru/
2023-10-07 21:46:18 +00:00
Linerly
fed9dec33a Translated using Weblate (Indonesian)
Currently translated at 100.0% (389 of 389 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/id/
2023-10-07 21:46:18 +00:00
Choukajohn
7973914a5f Translated using Weblate (French)
Currently translated at 100.0% (389 of 389 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fr/
2023-10-07 21:46:18 +00:00
kallekn
35efb3f047 Translated using Weblate (Finnish)
Currently translated at 100.0% (389 of 389 strings)

Translation: Megalodon/values
Translate-URL: https://translate.codeberg.org/projects/megalodon/values/fi/
2023-10-07 21:46:18 +00:00
sk
0a4ed50904 i think i fixed the offset issue 2023-10-07 23:45:33 +02:00
sk
002c66174a fix type filter, wrong max id, refactor max id 2023-10-07 23:32:10 +02:00
Eugen Rochko
22aac3d943 New translations strings.xml (Finnish) 2023-10-07 22:49:20 +02:00
sk
872f47305a Revert "temporary fix for pre-release users"
This reverts commit 2314871246.
2023-10-07 22:38:42 +02:00
sk
75d5332411 don't add existing posts to timeline 2023-10-07 22:38:30 +02:00
sk
035da8a517 update blocks and languages 2023-10-07 22:17:36 +02:00
sk
4c2c877d41 bump version 2023-10-07 22:11:35 +02:00
Eugen Rochko
53afc120f3 New translations strings.xml (Chinese Traditional) 2023-10-07 03:46:12 +02:00
Eugen Rochko
a75ce70615 New translations strings.xml (Finnish) 2023-10-06 16:38:40 +02:00
Eugen Rochko
4a3b948760 New translations strings.xml (Finnish) 2023-10-05 22:23:12 +02:00
Eugen Rochko
f81283c892 New translations strings.xml (Italian) 2023-10-05 21:19:39 +02:00
Eugen Rochko
7eae879037 New translations strings.xml (Russian) 2023-10-05 16:06:00 +02:00
Eugen Rochko
1b0ce5d893 New translations strings.xml (Swedish) 2023-10-05 12:02:19 +02:00
Eugen Rochko
c17745368d New translations strings.xml (Italian) 2023-10-04 22:24:20 +02:00
Eugen Rochko
e78b518654 New translations strings.xml (Ukrainian) 2023-10-04 18:44:26 +02:00
Eugen Rochko
55a8634be2 New translations strings.xml (Japanese) 2023-10-04 16:52:54 +02:00
Eugen Rochko
ac891eea53 New translations strings.xml (Icelandic) 2023-10-04 15:28:52 +02:00
Eugen Rochko
74fa2a3081 New translations strings.xml (Thai) 2023-10-03 21:27:27 +02:00
48 changed files with 211 additions and 131 deletions

View File

@@ -15,8 +15,8 @@ android {
applicationId "org.joinmastodon.android.sk"
minSdk 23
targetSdk 33
versionCode 100
versionName "2.1.6+fork.100"
versionCode 102
versionName "2.1.6+fork.102"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resourceConfigurations += ['ar-rSA', 'ar-rDZ', 'be-rBY', 'bn-rBD', 'bs-rBA', 'ca-rES', 'cs-rCZ', 'da-rDK', 'de-rDE', 'el-rGR', 'es-rES', 'eu-rES', 'fa-rIR', 'fi-rFI', 'fil-rPH', 'fr-rFR', 'ga-rIE', 'gd-rGB', 'gl-rES', 'hi-rIN', 'hr-rHR', 'hu-rHU', 'hy-rAM', 'ig-rNG', 'in-rID', 'is-rIS', 'it-rIT', 'iw-rIL', 'ja-rJP', 'kab', 'ko-rKR', 'my-rMM', 'nl-rNL', 'no-rNO', 'oc-rFR', 'pl-rPL', 'pt-rBR', 'pt-rPT', 'ro-rRO', 'ru-rRU', 'si-rLK', 'sl-rSI', 'sv-rSE', 'th-rTH', 'tr-rTR', 'uk-rUA', 'ur-rIN', 'vi-rVN', 'zh-rCN', 'zh-rTW']
}

View File

@@ -1,56 +1,43 @@
13bells.com
1611.social
4aem.com
5dollah.click
adachi.party
anime.website
adtension.com
annihilation.social
anon-kenkai.com
asbestos.cafe
bae.st
bajax.us
banepo.st
baraag.net
bassam.social
battlepenguin.video
beefyboys.win
beepboop.ga
berserker.town
bikeshed.party
boks.moe
boymoder.biz
brainsoap.net
breastmilk.club
brighteon.social
bungle.online
cachapa.xyz
canary.fedinuke.example.com
catgirl.life
cawfee.club
childlove.space
clew.lol
clubcyberia.co
collapsitarian.io
comfyboy.club
contrapointsfan.club
crucible.world
cum.camp
cum.salon
darknight-coffee.org
decayable.ink
dembased.xyz
desupost.soy
detroitriotcity.com
eatthebugs.social
djsumdog.com
eientei.org
elementality.org
eveningzoo.club
firedragonstudios.com
firefaithfellowship.com
fluf.club
foxfam.club
freak.university
freeatlantis.com
freedomstrike.org
freesoftwareextremist.com
freespeech.group
freespeechextremist.com
freetalklive.com
froth.zone
fulltermprivacy.com
gameliberty.club
gearlandia.haus
genderheretics.xyz
@@ -59,42 +46,34 @@ gleasonator.com
glee.li
glindr.org
goyim.app
goyslop.cafe
h5q.net
haeder.net
handholding.io
hitchhiker.social
hunk.city
iddqd.social
intkos.link
justicewarrior.social
kawa-kun.com
kitsunemimi.club
kiwifarms.cc
kompost.cz
kurosawa.moe
kyaruc.moe
leafposter.club
leftychan.net
lewdieheaven.com
liberdon.com
ligma.pro
lolicon.rocks
lolison.network
lolison.top
lovingexpressions.net
mahodou.moe
makemysarcophagus.com
maladaptive.art
marsey.moe
masochi.st
mastinator.com
merovingian.club
midwaytrades.com
mirr0r.city
moa.st
morale.ch
mouse.services
mugicha.club
narrativerry.xyz
natehiggers.online
neckbeard.xyz
needs.vodka
neenster.org
nicecrew.digital
@@ -103,18 +82,18 @@ noagendasocial.com
noagendasocial.nl
noagendatube.com
nobodyhasthe.biz
nukem.biz
obo.sh
norwoodzero.net
nyanide.com
onionfarms.org
pawlicker.com
pawoo.net
pedo.school
peervideo.club
piazza.today
pibvt.net
pieville.net
pisskey.io
plagu.ee
pmth.us
poa.st
poast.org
poast.tv
@@ -123,17 +102,18 @@ prospeech.space
quodverum.com
r18.social
rakket.app
rapemeat.express
rapemeat.solutions
rdrama.cc
rayci.st
rebelbase.site
retardedniggers.forsale
rojogato.com
ryona.agency
sad.cab
schwartzwelt.xyz
seal.cafe
shaw.app
shigusegubu.club
shitpost.cloud
shota.house
shortstacksran.ch
silliness.observer
skinheads.eu
skinheads.io
@@ -148,23 +128,20 @@ sneed.social
sonichu.com
spinster.xyz
springbo.cc
starnix.network
strelizia.net
syspxl.xyz
tastingtraffic.net
teci.world
theapex.social
thechimp.zone
thenobody.club
thepostearthdestination.com
tkammer.de
trumpislovetrumpis.life
truthsocial.co.in
urchan.org
usualsuspects.lol
varishangout.net
whinge.house
whinge.town
wideboys.org
vtuberfan.social
wolfgirl.bar
xn--p1abe3d.xn--80asehdb
yggdrasil.social
youjo.love
zztails.gay

View File

@@ -97,7 +97,7 @@ public class PushSubscriptionManager{
deviceToken=getPrefs().getString("deviceToken", null);
int tokenVersion=getPrefs().getInt("version", 0);
if(!TextUtils.isEmpty(deviceToken) && tokenVersion==BuildConfig.VERSION_CODE){
registerAllAccountsForPush(true); // TODO: revert this before release
registerAllAccountsForPush(false);
return;
}
Log.i(TAG, "tryRegisterFCM: no token found or app was updated. Trying to get push token...");

View File

@@ -13,7 +13,7 @@ import okhttp3.MultipartBody;
import okhttp3.RequestBody;
public class PleromaMarkNotificationsRead extends MastodonAPIRequest<List<Notification>> {
private String maxID;
private final String maxID;
public PleromaMarkNotificationsRead(String maxID) {
super(HttpMethod.POST, "/pleroma/notifications/read", new TypeToken<>(){});
this.maxID = maxID;

View File

@@ -295,7 +295,7 @@ public class AccountSession{
// don't hide own posts in own profile
if(statusIsOnOwnProfile(s, profile))
return false;
if(isFilteredType(s))
if(isFilteredType(s) && (context == FilterContext.HOME || context == FilterContext.PUBLIC))
return true;
// Even with server-side filters, clients are expected to remove statuses that match a filter that hides them
if(localPreferences.serverSideFiltersSupported){

View File

@@ -52,14 +52,14 @@ public class AccountTimelineFragment extends StatusListFragment{
@Override
protected void doLoadData(int offset, int count){
currentRequest=new GetAccountStatuses(user.id, offset>0 ? getMaxID() : null, null, count, filter)
currentRequest=new GetAccountStatuses(user.id, getMaxID(), null, count, filter)
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(List<Status> result){
if(getActivity()==null) return;
boolean empty=result.isEmpty();
boolean more=applyMaxID(result);
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext(), user);
onDataLoaded(result, !empty);
onDataLoaded(result, more);
}
})
.exec(accountID);

View File

@@ -97,7 +97,7 @@ public class AnnouncementsFragment extends BaseStatusListFragment<Announcement>
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(List<Announcement> result){
if (getActivity() == null) return;
if(getActivity()==null) return;
// get unread items first
List<Announcement> data = result.stream().filter(a -> !a.read).collect(toList());

View File

@@ -89,6 +89,7 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
protected Rect tmpRect=new Rect();
protected TypedObjectPool<MediaGridStatusDisplayItem.GridItemType, MediaAttachmentViewController> attachmentViewsPool=new TypedObjectPool<>(this::makeNewMediaAttachmentView);
protected boolean currentlyScrolling;
protected String maxID;
public BaseStatusListFragment(){
super(20);
@@ -155,6 +156,8 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
}
protected String getMaxID(){
if(refreshing) return null;
if(maxID!=null) return maxID;
if(!preloadedData.isEmpty())
return preloadedData.get(preloadedData.size()-1).getID();
else if(!data.isEmpty())
@@ -163,6 +166,12 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
return null;
}
protected boolean applyMaxID(List<Status> result){
boolean empty=result.isEmpty();
if(!empty) maxID=result.get(result.size()-1).id;
return !empty;
}
protected abstract List<StatusDisplayItem> buildDisplayItems(T s);
protected abstract void addAccountToKnown(T s);

View File

@@ -28,7 +28,7 @@ public class BookmarkedStatusListFragment extends StatusListFragment{
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(HeaderPaginationList<Status> result){
if (getActivity() == null) return;
if(getActivity()==null) return;
if(result.nextPageUri!=null)
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
else

View File

@@ -169,7 +169,7 @@ public class EditTimelinesFragment extends MastodonRecyclerFragment<TimelineDefi
}
private void updateOptionsMenu() {
if (getActivity() == null) return;
if(getActivity()==null) return;
optionsMenu.clear();
timelineByMenuItem.clear();

View File

@@ -27,7 +27,7 @@ public class FavoritedStatusListFragment extends StatusListFragment{
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(HeaderPaginationList<Status> result){
if (getActivity() == null) return;
if(getActivity()==null) return;
if(result.nextPageUri!=null)
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
else

View File

@@ -83,7 +83,7 @@ public class FollowRequestsListFragment extends MastodonRecyclerFragment<FollowR
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(HeaderPaginationList<Account> result){
if (getActivity() == null) return;
if(getActivity()==null) return;
if(result.nextPageUri!=null)
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
else

View File

@@ -56,7 +56,7 @@ public class FollowedHashtagsFragment extends MastodonRecyclerFragment<Hashtag>
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(HeaderPaginationList<Hashtag> result){
if (getActivity() == null) return;
if(getActivity()==null) return;
if(result.nextPageUri!=null)
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
else

View File

@@ -91,14 +91,14 @@ public class HashtagTimelineFragment extends PinnableStatusListFragment{
@Override
protected void doLoadData(int offset, int count){
currentRequest=new GetHashtagTimeline(hashtagName, offset==0 ? null : getMaxID(), null, count, any, all, none, localOnly, getLocalPrefs().timelineReplyVisibility)
currentRequest=new GetHashtagTimeline(hashtagName, getMaxID(), null, count, any, all, none, localOnly, getLocalPrefs().timelineReplyVisibility)
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(List<Status> result){
if(getActivity()==null) return;
boolean empty=result.isEmpty();
boolean more=applyMaxID(result);
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext());
onDataLoaded(result, !empty);
onDataLoaded(result, more);
}
})
.exec(accountID);

View File

@@ -287,7 +287,7 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
new GetAnnouncements(false).setCallback(new Callback<>() {
@Override
public void onSuccess(List<Announcement> result) {
if (getActivity() == null) return;
if(getActivity()==null) return;
if (result.stream().anyMatch(a -> !a.read)) {
announcementsBadged = true;
announcements.setVisible(false);
@@ -381,7 +381,7 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab
}
private void updateOverflowMenu() {
if (getActivity() == null) return;
if(getActivity()==null) return;
Menu m = overflowPopup.getMenu();
m.clear();
overflowPopup.inflate(R.menu.home_overflow);

View File

@@ -26,6 +26,7 @@ import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import me.grishka.appkit.api.Callback;
import me.grishka.appkit.api.ErrorResponse;
@@ -137,11 +138,13 @@ public class HomeTimelineFragment extends StatusListFragment {
Status last=result.get(result.size()-1);
List<Status> toAdd;
if(!data.isEmpty() && last.id.equals(data.get(0).id)){ // This part intersects with the existing one
toAdd=result.subList(0, result.size()-1); // Remove the already known last post
toAdd=new ArrayList<>(result.subList(0, result.size()-1)); // Remove the already known last post
}else{
result.get(result.size()-1).hasGapAfter=true;
toAdd=result;
}
List<String> existingIds=data.stream().map(Status::getID).collect(Collectors.toList());
toAdd.removeIf(s->existingIds.contains(s.getID()));
List<Status> toAddUnfiltered=new ArrayList<>(toAdd);
AccountSessionManager.get(accountID).filterStatuses(toAdd, getFilterContext());
if(!toAdd.isEmpty()){

View File

@@ -62,7 +62,7 @@ public class ListTimelineFragment extends PinnableStatusListFragment {
new GetList(listID).setCallback(new Callback<>() {
@Override
public void onSuccess(ListTimeline listTimeline) {
if (getActivity() == null) return;
if(getActivity()==null) return;
// TODO: save updated info
if (!listTimeline.title.equals(listTitle)) setTitle(listTimeline.title);
if (listTimeline.repliesPolicy != null && !listTimeline.repliesPolicy.equals(repliesPolicy)) {
@@ -100,7 +100,7 @@ public class ListTimelineFragment extends PinnableStatusListFragment {
new UpdateList(listID, newTitle, editor.isExclusive(), editor.getRepliesPolicy()).setCallback(new Callback<>() {
@Override
public void onSuccess(ListTimeline list) {
if (getActivity() == null) return;
if(getActivity()==null) return;
setTitle(list.title);
listTitle = list.title;
repliesPolicy = list.repliesPolicy;
@@ -133,14 +133,14 @@ public class ListTimelineFragment extends PinnableStatusListFragment {
@Override
protected void doLoadData(int offset, int count) {
currentRequest=new GetListTimeline(listID, offset==0 ? null : getMaxID(), null, count, null, getLocalPrefs().timelineReplyVisibility)
currentRequest=new GetListTimeline(listID, getMaxID(), null, count, null, getLocalPrefs().timelineReplyVisibility)
.setCallback(new SimpleCallback<>(this) {
@Override
public void onSuccess(List<Status> result) {
if(getActivity()==null) return;
boolean empty=result.isEmpty();
boolean more=applyMaxID(result);
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext());
onDataLoaded(result, !empty);
onDataLoaded(result, more);
}
})
.exec(accountID);

View File

@@ -140,7 +140,7 @@ public class ListsFragment extends MastodonRecyclerFragment<ListTimeline> implem
.setCallback(new SimpleCallback<>(this) {
@Override
public void onSuccess(List<ListTimeline> lists) {
if (getActivity() == null) return;
if(getActivity()==null) return;
for (ListTimeline l : lists) userInListBefore.put(l.id, true);
userInList.putAll(userInListBefore);
if (profileAccountId == null || !lists.isEmpty()) onDataLoaded(lists, false);
@@ -149,7 +149,7 @@ public class ListsFragment extends MastodonRecyclerFragment<ListTimeline> implem
currentRequest=new GetLists().setCallback(new SimpleCallback<>(ListsFragment.this) {
@Override
public void onSuccess(List<ListTimeline> allLists) {
if (getActivity() == null) return;
if(getActivity()==null) return;
List<ListTimeline> newLists = new ArrayList<>();
for (ListTimeline l : allLists) {
if (lists.stream().noneMatch(e -> e.id.equals(l.id))) newLists.add(l);

View File

@@ -254,7 +254,7 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc
new GetFollowRequests(null, 1).setCallback(new Callback<>() {
@Override
public void onSuccess(HeaderPaginationList<Account> accounts) {
if (getActivity() == null) return;
if(getActivity()==null) return;
getToolbar().getMenu().findItem(R.id.follow_requests).setVisible(!accounts.isEmpty());
}

View File

@@ -482,7 +482,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(Account result){
if (getActivity() == null) return;
if(getActivity()==null) return;
onAccountLoaded(result);
}
})
@@ -894,7 +894,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
}
private void updateRelationship(){
if (getActivity() == null) return;
if(getActivity()==null) return;
invalidateOptionsMenu();
actionButton.setVisibility(View.VISIBLE);
notifyButton.setVisibility(relationship.following ? View.VISIBLE : View.GONE);
@@ -1191,7 +1191,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
savingEdits=false;
account=result;
AccountSessionManager.getInstance().updateAccountInfo(accountID, account);
if (getActivity() == null) return;
if(getActivity()==null) return;
exitEditMode();
setActionProgressVisible(false);
}

View File

@@ -129,7 +129,7 @@ public class ScheduledStatusListFragment extends BaseStatusListFragment<Schedule
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
else
nextMaxID=null;
if (getActivity() == null) return;
if(getActivity()==null) return;
onDataLoaded(result, nextMaxID!=null);
}
})

View File

@@ -83,7 +83,7 @@ public abstract class BaseAccountListFragment extends MastodonRecyclerFragment<A
for(Relationship rel:result){
relationships.put(rel.id, rel);
}
if (getActivity() == null) return;
if(getActivity()==null) return;
if(list==null)
return;
for(int i=0;i<list.getChildCount();i++){

View File

@@ -133,7 +133,7 @@ public abstract class PaginatedAccountListFragment<T> extends BaseAccountListFra
nextMaxID=result.nextPageUri.getQueryParameter("max_id");
else
nextMaxID=null;
if (getActivity() == null) return;
if(getActivity()==null) return;
List<AccountViewModel> items = result.stream()
.filter(a -> d.size() > 1000 || d.stream()
.noneMatch(i -> i.account.url.equals(a.url)))

View File

@@ -19,7 +19,6 @@ import me.grishka.appkit.utils.MergeRecyclerAdapter;
public class BubbleTimelineFragment extends StatusListFragment {
private DiscoverInfoBannerHelper bannerHelper;
private String maxID;
@Override
public void onCreate(Bundle savedInstanceState){
@@ -35,15 +34,14 @@ public class BubbleTimelineFragment extends StatusListFragment {
@Override
protected void doLoadData(int offset, int count){
currentRequest=new GetBubbleTimeline(refreshing ? null : maxID, count, getLocalPrefs().timelineReplyVisibility)
currentRequest=new GetBubbleTimeline(getMaxID(), count, getLocalPrefs().timelineReplyVisibility)
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(List<Status> result){
if(getActivity()==null) return;
boolean empty=result.isEmpty();
if(!empty) maxID=result.get(result.size()-1).id;
boolean more=applyMaxID(result);
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext());
onDataLoaded(result, !empty);
onDataLoaded(result, more);
bannerHelper.onBannerBecameVisible();
}
})

View File

@@ -77,7 +77,7 @@ public class DiscoverAccountsFragment extends MastodonRecyclerFragment<DiscoverA
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(List<FollowSuggestion> result){
if (getActivity() == null) return;
if(getActivity()==null) return;
onDataLoaded(result.stream().map(fs->new AccountWrapper(fs.account)).collect(Collectors.toList()), false);
loadRelationships();
}
@@ -112,7 +112,7 @@ public class DiscoverAccountsFragment extends MastodonRecyclerFragment<DiscoverA
public void onSuccess(List<Relationship> result){
relationshipsRequest=null;
relationships=result.stream().collect(Collectors.toMap(rel->rel.id, Function.identity()));
if (getActivity() == null) return;
if(getActivity()==null) return;
if(list==null)
return;
for(int i=0;i<list.getChildCount();i++){

View File

@@ -18,6 +18,7 @@ import me.grishka.appkit.utils.MergeRecyclerAdapter;
public class DiscoverPostsFragment extends StatusListFragment{
private DiscoverInfoBannerHelper bannerHelper;
private int offset;
@Override
public void onCreate(Bundle savedInstanceState){
@@ -26,13 +27,15 @@ public class DiscoverPostsFragment extends StatusListFragment{
}
@Override
protected void doLoadData(int offset, int count){
protected void doLoadData(int o, int count){
if(refreshing) offset=0;
currentRequest=new GetTrendingStatuses(offset, count)
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(List<Status> result){
if(getActivity()==null) return;
boolean empty=result.isEmpty();
offset+=result.size();
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext());
onDataLoaded(result, !empty);
bannerHelper.onBannerBecameVisible();

View File

@@ -29,15 +29,14 @@ public class FederatedTimelineFragment extends StatusListFragment{
@Override
protected void doLoadData(int offset, int count){
currentRequest=new GetPublicTimeline(false, false, refreshing ? null : maxID, count, getLocalPrefs().timelineReplyVisibility)
currentRequest=new GetPublicTimeline(false, false, getMaxID(), count, getLocalPrefs().timelineReplyVisibility)
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(List<Status> result){
if(getActivity()==null) return;
boolean empty=result.isEmpty();
if(!empty) maxID=result.get(result.size()-1).id;
boolean more=applyMaxID(result);
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext());
onDataLoaded(result, !empty);
onDataLoaded(result, more);
bannerHelper.onBannerBecameVisible();
}
})

View File

@@ -29,15 +29,14 @@ public class LocalTimelineFragment extends StatusListFragment{
@Override
protected void doLoadData(int offset, int count){
currentRequest=new GetPublicTimeline(true, false, refreshing ? null : maxID, count, getLocalPrefs().timelineReplyVisibility)
currentRequest=new GetPublicTimeline(true, false, getMaxID(), count, getLocalPrefs().timelineReplyVisibility)
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(List<Status> result){
if(getActivity()==null) return;
boolean empty=result.isEmpty();
if(!empty) maxID=result.get(result.size()-1).id;
boolean more=applyMaxID(result);
AccountSessionManager.get(accountID).filterStatuses(result, getFilterContext());
onDataLoaded(result, !empty);
onDataLoaded(result, more);
bannerHelper.onBannerBecameVisible();
}
})

View File

@@ -83,7 +83,7 @@ public class ReportAddPostsChoiceFragment extends StatusListFragment{
@Override
protected void doLoadData(int offset, int count){
currentRequest=new GetAccountStatuses(reportAccount.id, offset>0 ? getMaxID() : null, null, count, GetAccountStatuses.Filter.OWN_POSTS_AND_REPLIES)
currentRequest=new GetAccountStatuses(reportAccount.id, getMaxID(), null, count, GetAccountStatuses.Filter.OWN_POSTS_AND_REPLIES)
.setCallback(new SimpleCallback<>(this){
@Override
public void onSuccess(List<Status> result){

File diff suppressed because one or more lines are too long

View File

@@ -9,7 +9,7 @@
<string name="preparing_auth">Valmistellaan todennusta…</string>
<string name="finishing_auth">Viimeistellään todennusta…</string>
<string name="user_boosted">%s tehosti</string>
<string name="in_reply_to">Vastauksessa %s</string>
<string name="in_reply_to">Vastaus käyttäjälle %s</string>
<string name="notifications">Ilmoitukset</string>
<string name="user_followed_you">%s seurasi sinua</string>
<string name="user_sent_follow_request">%s lähetti sinulle seurauspyynnön</string>
@@ -228,7 +228,7 @@
<string name="button_reblog">Tehosta</string>
<string name="button_favorite">Suosikki</string>
<string name="button_share">Jaa</string>
<string name="media_no_description">Kuva ilma kuvausta</string>
<string name="media_no_description">Kuva ilman kuvausta</string>
<string name="add_media">Lisää mediatiedosto</string>
<string name="add_poll">Lisää kysely</string>
<string name="emoji">Emoji</string>
@@ -240,8 +240,8 @@
<string name="followed_user">Seuraat nyt käyttäjää %s</string>
<string name="following_user_requested">Käyttäjän %s seuraamista pyydetty</string>
<string name="open_in_browser">Avaa selaimessa</string>
<string name="hide_boosts_from_user">Piilota käyttäjän @%s tehostukset</string>
<string name="show_boosts_from_user">Näytä tehostukset käyttäjältä @%s</string>
<string name="hide_boosts_from_user">Piilota käyttäjän %s tehostukset</string>
<string name="show_boosts_from_user">Näytä tehostukset käyttäjältä %s</string>
<string name="signup_reason">Miksi haluat liittyä?</string>
<string name="signup_reason_note">Tämä auttaa meitä arvioimaan hakemustasi.</string>
<string name="clear">Tyhjennä</string>
@@ -270,11 +270,11 @@
<string name="manually_approves_followers">Hyväksyy seuraajat käsin</string>
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
<plurals name="x_followers">
<item quantity="one">%d seuraaja</item>
<item quantity="other">%d seuraajaa</item>
<item quantity="one">%,d seuraaja</item>
<item quantity="other">%,d seuraajaa</item>
</plurals>
<plurals name="x_following">
<item quantity="one">%d seurattu</item>
<item quantity="one">%,d seurattu</item>
<item quantity="other">%d seurattua</item>
</plurals>
<plurals name="x_favorites">
@@ -351,7 +351,7 @@
<string name="server_filter_region_asia">Aasia</string>
<string name="server_filter_region_oceania">Oseania</string>
<string name="not_accepting_new_members">Ei hyväksy uusia jäseniä</string>
<string name="category_special_interests">Erityiset Kiinnostukset</string>
<string name="category_special_interests">Erityiset kiinnostuksen kohteet</string>
<string name="signup_passwords_dont_match">Salasanat eivät täsmää</string>
<string name="pick_server_for_me">Valitse minulle</string>
<string name="profile_add_row">Lisää rivi</string>
@@ -385,7 +385,7 @@
<string name="signup_or_login">tai</string>
<string name="learn_more">Lue lisää</string>
<string name="welcome_to_mastodon">Tervetuloa Mastodoniin</string>
<string name="welcome_paragraph1">Mastodon on hajautettu sosiaalinen verkosto, joka tarkoittaa sitä, ettei sitä hallitse mikään yksittäinen yritys. Se koostuu monista itsenäisesti ylläpidetyistä palvelimista, jotka on liitetty yhteen.</string>
<string name="welcome_paragraph1">Mastodon on hajautettu sosiaalinen verkosto, mikä tarkoittaa sitä, ettei sitä hallitse mikään yksittäinen yritys. Se koostuu monista itsenäisesti ylläpidetyistä palvelimista, jotka on liitetty yhteen.</string>
<string name="what_are_servers">Mitä palvelimet ovat?</string>
<string name="welcome_paragraph2">Jokainen Mastodon tili isännöi palvelimella - kullakin on omat arvot, säännöt, &amp; ylläpitäjät. Riippumatta siitä, minkä valitset, voit seurata ja olla vuorovaikutuksessa ihmisten kanssa millä tahansa palvelimella.</string>
<string name="opening_link">Avataan linkki…</string>
@@ -583,11 +583,14 @@
<string name="time_hours_ago_short">%dh sitten</string>
<string name="time_days_ago_short">%dd sitten</string>
<!-- %s is the name of the post language -->
<string name="translate_post">Käännetty kielestä %s</string>
<string name="translate_post">Käännä kielestä %s</string>
<!-- %1$s is the language, %2$s is the name of the translation service -->
<string name="post_translated">Käännetty kielestä %1$s käyttäen %2$s</string>
<string name="translation_show_original">Näytä alkuperäinen</string>
<string name="translation_failed">Käännös epäonnistui. Ehkä järjestelmänvalvoja ei ole ottanut käyttöön käännöksiä tällä palvelimella tai tällä palvelimella on käynnissä vanhempi versio Mastodonista, jossa käännöksiä ei vielä tueta.</string>
<string name="settings_privacy">Yksityisyys ja tavoittavuus</string>
<string name="settings_discoverable">Nosta profiili ja julkaisut esille löytämisalgoritmeissa</string>
<string name="settings_indexable">Sisällytä julkiset julkaisut hakutuloksiin</string>
<plurals name="x_participants">
<item quantity="one">%d osallistuja</item>
<item quantity="other">%d osallistujaa</item>
@@ -596,4 +599,5 @@
<item quantity="one">%,d viesti tänään</item>
<item quantity="other">%,d viestiä tänään</item>
</plurals>
<string name="error_playing_video">Virhe videon toistossa</string>
</resources>

View File

@@ -9,7 +9,7 @@
<string name="sk_button_react">Reagoi emojilla</string>
<string name="sk_again_for_system_keyboard">Järjestelmän näppäimistö seuraavalla painalluksella</string>
<string name="sk_enter_emoji_toast">Lisää emoji</string>
<string name="sk_enter_emoji_hint">Lisää emoji tai etsi mukautettu emoji</string>
<string name="sk_enter_emoji_hint">Lisää emoji tai etsi</string>
<string name="sk_mute_label">Kesto</string>
<string name="sk_duration_indefinite">Loputon</string>
<string name="sk_duration_minutes_5">5 minuuttia</string>
@@ -398,7 +398,7 @@
<string name="sk_muted_accounts">Hiljennetyt tilit</string>
<string name="sk_do_not_show_again">Älä näytä toista kertaa</string>
<string name="sk_suicide_helplines_url">https://mieli.fi/tukea-ja-apua/kriisipuhelin/</string>
<string name="sk_trending_posts_info_banner">Nämä julkaisut ovat saamassa vetoa tällä palvelimella.</string>
<string name="sk_trending_posts_info_banner">Nämä julkaisut ovat saamassa vetoa Fediversumissa.</string>
<string name="sk_load_missing_posts_below">Lataa vanhempia julkaisuja</string>
<string name="sk_search_suicide_title">Jos tarvitset apua…</string>
<plurals name="sk_time_minutes">
@@ -406,6 +406,7 @@
<item quantity="other">%d minuuttia</item>
</plurals>
<string name="sk_search_suicide_message">Jos haluat merkin siitä, että elämää kannattaa jatkaa, tämä on se. Jos olet hädässä, voit ottaa yhteyttä paikalliseen kriisipuhelimeen.</string>
<string name="sk_trending_links_info_banner">Näistä uutisjutuista keskustellaan palvelimellasi.</string>
<string name="sk_trending_links_info_banner">Näistä uutisjutuista keskustellaan Fediversumissa.</string>
<string name="sk_post_contains_media">Julkaisussa on mediaa</string>
<string name="sk_settings_like_icon">Käytä sydäntä suosikkikuvakkeena</string>
</resources>

View File

@@ -372,7 +372,7 @@
</plurals>
<string name="sk_button_react">Réagissez avec des emojis</string>
<string name="sk_again_for_system_keyboard">Appuyez à nouveau pour le clavier système</string>
<string name="sk_enter_emoji_hint">Tapez un emoji ou recherchez un emoji personnalisé</string>
<string name="sk_enter_emoji_hint">Tapez un emoji ou effectuez une recherche</string>
<string name="sk_enter_emoji_toast">Veuillez saisir un emoji</string>
<plurals name="sk_posts_count_label">
<item quantity="one">message</item>
@@ -393,14 +393,15 @@
<string name="sk_suicide_search_terms">Suicide</string>
<string name="sk_search_suicide_title">Dans le cas où vous seriez en détresse…</string>
<string name="sk_search_suicide_message">Si vous cherchez un signe pour ne pas vous suicider, le voici. Si vous êtes en détresse et/ou avez des pensées suicidaires, si vous voulez aider une personne en souffrance, vous pouvez contacter une ligne d\'assistance de prévention du suicide.</string>
<string name="sk_trending_links_info_banner">Ce sont les actualités dont on parle sur votre serveur.</string>
<string name="sk_trending_links_info_banner">Ces actualités font parler delles dans tout le Fediverse.</string>
<string name="sk_load_missing_posts_above">Charger les messages les plus récents</string>
<string name="sk_load_missing_posts_below">Charger les anciens messages</string>
<string name="sk_time_seconds">%d secondes</string>
<string name="sk_time_minutes">%d minutes</string>
<string name="sk_time_hours">%d heures</string>
<string name="sk_time_days">%d jours</string>
<string name="sk_trending_posts_info_banner">Ce sont les publications qui gagnent du terrain sur votre serveur.</string>
<string name="sk_trending_posts_info_banner">Ces publications gagnent actuellement du terrain sur le Fediverse.</string>
<string name="sk_blocked_accounts">Comptes bloqués</string>
<string name="sk_muted_accounts">Comptes silenciés</string>
<string name="sk_settings_like_icon">Utiliser le cœur comme icône pour les favoris</string>
</resources>

View File

@@ -366,7 +366,7 @@
<item quantity="other">%1$,d pengguna bereaksi dengan %2$s</item>
</plurals>
<string name="sk_enter_emoji_toast">Silakan ketik emoji</string>
<string name="sk_enter_emoji_hint">Ketik emoji atau cari emoji kustom</string>
<string name="sk_enter_emoji_hint">Ketik emoji atau cari</string>
<string name="sk_settings_emoji_reactions">Aktifkan reaksi emoji</string>
<string name="sk_settings_emoji_reactions_explanation">Menampilkan reaksi emoji di kiriman dan memungkinkan Anda untuk menambahkan sendiri. Banyak server Fediverse yang mendukung ini, tetapi Mastodon tidak mendukungnya.</string>
<string name="sk_settings_emoji_reactions_in_lists_explanation">"Menentukan apakah reaksi emoji ditampilkan di lini masa. Jika opsi ini mati, reaksi emoji hanya akan ditampilkan ketika melihat sebuah utas."</string>
@@ -387,13 +387,14 @@
<string name="sk_search_suicide_hotlines">Temukan hotline</string>
<string name="sk_do_not_show_again">Jangan tampilkan lagi</string>
<string name="sk_suicide_helplines_url">https://findahelpline.com/id</string>
<string name="sk_trending_posts_info_banner">Di bawah adalah kiriman yang mendapatkan daya tarik di server Anda.</string>
<string name="sk_trending_posts_info_banner">Kiriman berikut mendapatkan daya tarik di Fediverse.</string>
<string name="sk_load_missing_posts_below">Muat kiriman lama</string>
<string name="sk_search_suicide_title">Jika Anda dalam kesulitan…</string>
<string name="sk_time_minutes">%d menit</string>
<string name="sk_search_suicide_message">Jika Anda mencari tanda untuk tidak melakukan bunuh diri, ini adalah tanda itu. Tolong pertimbangkan untuk menghubungi hotline bunuh diri lokal jika Anda dalam kesulitan.</string>
<string name="sk_trending_links_info_banner">Di bawah adalah berita yang dibicarakan di server Anda.</string>
<string name="sk_trending_links_info_banner">Berita berikut sedang dibicarakan di Fediverse.</string>
<string name="sk_post_contains_media">Kiriman berisi media</string>
<string name="sk_blocked_accounts">Akun yang diblokir</string>
<string name="sk_muted_accounts">Akun yang dibisukan</string>
<string name="sk_settings_like_icon">Gunakam hati sebagai ikon favorit</string>
</resources>

View File

@@ -599,4 +599,5 @@
<item quantity="one">%,d færsla í dag</item>
<item quantity="other">%,d færslur í dag</item>
</plurals>
<string name="error_playing_video">Villa við að spila myndskeið</string>
</resources>

View File

@@ -588,6 +588,8 @@
<string name="post_translated">Tradotto da %1$s utilizzando %2$s</string>
<string name="translation_show_original">Mostra originale</string>
<string name="translation_failed">Traduzione fallita. Forse l\'amministratore non ha abilitato le traduzioni su questo server, o su questo server è in esecuzione una versione precedente di Mastodon in cui le traduzioni non sono ancora supportate.</string>
<string name="settings_privacy">Privacy e copertura</string>
<string name="settings_discoverable">Include il profilo e i post negli algoritmi di scoperta</string>
<string name="settings_indexable">Includi i post pubblici nei risultati di ricerca</string>
<plurals name="x_participants">
<item quantity="one">%,d participante</item>
@@ -597,4 +599,5 @@
<item quantity="one">%,d post oggi</item>
<item quantity="other">%,d post oggi</item>
</plurals>
<string name="error_playing_video">Errore nella riproduzione del video</string>
</resources>

View File

@@ -568,4 +568,5 @@
<plurals name="x_posts_today">
<item quantity="other">今日の投稿 %,d 件</item>
</plurals>
<string name="error_playing_video">動画再生に失敗しました</string>
</resources>

View File

@@ -661,4 +661,5 @@
<item quantity="many">%,d постов сегодня</item>
<item quantity="other">%,d постов сегодня</item>
</plurals>
<string name="error_playing_video">Ошибка воспроизведения видео</string>
</resources>

View File

@@ -337,4 +337,78 @@
<string name="sk_settings_continues_playback_summary">Позволять продолжить воспроизведение уже проигрываемого медиа, накладывая его на новое воспроизведение</string>
<string name="sk_settings_continues_playback">Наложение аудио</string>
<string name="sk_trending_links_info_banner">Это новости, которые обсуждаются на вашем сервере.</string>
<string name="sk_disable_pill_shaped_active_indicator">Отключить индикатор активной вкладки в виде таблетки</string>
<string name="sk_tab_profile">Профиль</string>
<plurals name="sk_time_seconds">
<item quantity="one">%d секунда</item>
<item quantity="few">%d секунды</item>
<item quantity="many">%d секунд</item>
<item quantity="other">%d секунд</item>
</plurals>
<string name="sk_mute_label">Длительность</string>
<string name="sk_settings_show_emoji_reactions_only_opened">Только когда пост открыт</string>
<plurals name="sk_time_hours">
<item quantity="one">%d час</item>
<item quantity="few">%d часа</item>
<item quantity="many">%d часов</item>
<item quantity="other">%d часов</item>
</plurals>
<string name="sk_tab_home">Главная</string>
<string name="sk_settings_show_emoji_reactions_hide_empty">Скрывать пустые реакции эмодзи</string>
<string name="sk_settings_show_emoji_reactions">Отображать реакции эмодзи в лентах</string>
<plurals name="sk_posts_count_label">
<item quantity="one">пост</item>
<item quantity="few">поста</item>
<item quantity="many">постов</item>
<item quantity="other">постов</item>
</plurals>
<string name="sk_notification_mention">Вы были упомянуты %s</string>
<string name="sk_settings_emoji_reactions">Включить реакции эмодзи</string>
<string name="sk_suicide_search_terms">Суицид, Самоубийство</string>
<string name="sk_duration_minutes_5">5 минут</string>
<string name="sk_load_missing_posts_above">Загрузить более новые посты</string>
<string name="sk_settings_display_pronouns_in_timelines">Отображать местоимения в лентах</string>
<plurals name="sk_time_days">
<item quantity="one">%d день</item>
<item quantity="few">%d дня</item>
<item quantity="many">%d дней</item>
<item quantity="other">%d дней</item>
</plurals>
<string name="sk_settings_show_labels_in_navigation_bar">Отображать ярлыки вкладок на панели навигации</string>
<string name="sk_tab_search">Поиск</string>
<string name="sk_settings_show_emoji_reactions_always">Всегда показывать кнопку добавить</string>
<string name="sk_duration_indefinite">Бессрочно</string>
<string name="sk_search_suicide_hotlines">Найти службу помощи</string>
<string name="sk_duration_hours_1">1 час</string>
<string name="sk_duration_hours_6">6 часов</string>
<string name="sk_enter_emoji_hint">Введите эмодзи или найдете</string>
<string name="sk_duration_days_7">7 дней</string>
<string name="sk_settings_true_black">Абсолютно черный режим</string>
<string name="sk_do_not_show_again">Не показывать снова</string>
<string name="sk_settings_display_pronouns_in_threads">Отображать местоимения в ответах</string>
<string name="sk_enter_emoji_toast">Пожалуйста введите эмодзи</string>
<string name="sk_duration_minutes_30">30 минут</string>
<string name="sk_settings_display_pronouns_in_user_listings">Отображать местоимения в списках пользователей</string>
<string name="sk_button_react">Отреагировать с эмодзи</string>
<string name="sk_duration_days_1">1 день</string>
<string name="sk_load_missing_posts_below">Загрузить более старые посты</string>
<string name="sk_settings_emoji_reactions_explanation">Отображает реакции эмодзи на посты и позволяет добавлять свои. Различные серверы Fediverse поддерживают эту функцию, но Mastodon нет.</string>
<string name="sk_duration_days_3">3 дня</string>
<string name="sk_search_suicide_title">В случае, если вы попали в беду…</string>
<plurals name="sk_time_minutes">
<item quantity="one">%d минута</item>
<item quantity="few">%d минуты</item>
<item quantity="many">%d минут</item>
<item quantity="other">%d минут</item>
</plurals>
<plurals name="sk_users_reacted_with">
<item quantity="one">Один пользователь отреагировал с %2$s</item>
<item quantity="few">%1$,d пользователей отреагировали с %2$s</item>
<item quantity="many">%1$,d пользователей отреагировали с %2$s</item>
<item quantity="other">%1$,d пользователей отреагировали с %2$s</item>
</plurals>
<string name="sk_search_suicide_message">Если вы ищете знак, чтобы не совершить самоубийство, то это он. Если вы попали в беду, обратитесь в местную службу помощи самоубийцам.</string>
<string name="sk_post_contains_media">Пост содержит медиа</string>
<string name="sk_tab_notifications">Уведомления</string>
<string name="sk_list_exclusive_switch_explanation">Участники эксклюзивного списка не будут отображаться в вашей домашней ленте - если ваш экземпляр поддерживает такую возможность.</string>
</resources>

View File

@@ -12,7 +12,9 @@
<string name="in_reply_to">Som svar på %s</string>
<string name="notifications">Notiser</string>
<string name="user_followed_you">%s följde dig</string>
<string name="user_sent_follow_request">%s skickade en förfrågan om att följa dig</string>
<string name="user_favorited">%s favoritmarkerade ditt inlägg</string>
<string name="notification_boosted">%s boostade ditt inlägg</string>
<string name="share_toot_title">Dela</string>
<string name="settings">Inställningar</string>
<string name="publish">Publicera</string>

View File

@@ -568,4 +568,5 @@
<plurals name="x_posts_today">
<item quantity="other">%,d โพสต์วันนี้</item>
</plurals>
<string name="error_playing_video">เกิดข้อผิดพลาดในการเล่นวิดีโอ</string>
</resources>

View File

@@ -661,4 +661,5 @@
<item quantity="many">%,d дописів сьогодні</item>
<item quantity="other">%,d дописа сьогодні</item>
</plurals>
<string name="error_playing_video">Помилка відтворення відео</string>
</resources>

View File

@@ -71,9 +71,9 @@
<string name="sk_delete_notification_confirm_action">Видалити сповіщення</string>
<string name="sk_delete_notification_confirm">Ви впевнені, що хочете видалити це сповіщення\?</string>
<string name="sk_settings_enable_delete_notifications">Увімкнути видалення сповіщень</string>
<string name="sk_settings_publish_button_text">Текст кнопки \"опублікувати\"</string>
<string name="sk_settings_publish_button_text_title">Змінити текст кнопки \"опублікувати\"</string>
<string name="sk_settings_translate_only_opened">Сховати кнопку \"перекласти\" у стрічці</string>
<string name="sk_settings_publish_button_text">Текст кнопки «Опублікувати»</string>
<string name="sk_settings_publish_button_text_title">Змінити текст кнопки «Опублікувати»</string>
<string name="sk_settings_translate_only_opened">Сховати кнопку «Перекласти» у стрічці</string>
<string name="sk_settings_translation_availability_note_available">%s підтримує переклад!</string>
<string name="sk_settings_translation_availability_note_unavailable">%s не підтримує переклад.</string>
<string name="sk_clear_all_notifications">Очистити всі сповіщення</string>
@@ -304,7 +304,7 @@
<string name="sk_settings_prefix_replies_always">Відповіді будь-кому</string>
<string name="sk_settings_prefix_replies_never">Ніколи</string>
<string name="sk_settings_prefix_replies_to_others">Лише у відповідь іншим</string>
<string name="sk_settings_forward_report_default">Усталений перемикач Пересилати звіт</string>
<string name="sk_settings_forward_report_default">Усталений перемикач «Пересилати звіт»</string>
<string name="sk_icon_feed">Стрічка</string>
<string name="sk_exclusive_list">Список виключення</string>
<string name="sk_list_exclusive_switch">Створити список виключень</string>
@@ -328,7 +328,7 @@
<string name="sk_icon_diamond">Діамант</string>
<string name="sk_icon_umbrella">Парасолька</string>
<string name="sk_add_timeline">Додати стрічку</string>
<string name="sk_pronouns_label">Вимова</string>
<string name="sk_pronouns_label">Займенники</string>
<string name="sk_switch_timeline">Перемкнути стрічку</string>
<string name="sk_settings_instance">Сервер</string>
<string name="sk_settings_true_black">Абсолютно чорний режим</string>
@@ -389,7 +389,7 @@
<string name="sk_load_missing_posts_oldest_first">Спочатку найдавніші (за зростанням)</string>
<string name="sk_settings_show_emoji_reactions">Показувати реакції емоджі у стрічках</string>
<string name="sk_settings_show_emoji_reactions_hide_empty">Сховати реакції без емоджі</string>
<string name="sk_settings_show_emoji_reactions_always">Завжди показувати кнопку Додати</string>
<string name="sk_settings_show_emoji_reactions_always">Завжди показувати кнопку «Додати»</string>
<string name="sk_suicide_search_terms">Самогубство</string>
<string name="sk_search_suicide_title">Якщо ви потрапили в біду…</string>
<string name="sk_search_suicide_message">Якщо ви шукаєте знак, щоб не накладати на себе руки, то це він. Якщо ви перебуваєте у скрутному становищі, зверніться на місцеву гарячу лінію з питань самогубств.</string>

View File

@@ -568,4 +568,5 @@
<plurals name="x_posts_today">
<item quantity="other">本日共 %,d 則嘟文</item>
</plurals>
<string name="error_playing_video">播放影片時發生錯誤</string>
</resources>

View File

@@ -1,6 +1,6 @@
- Увімкнено можливість відкривати оригінальний допис під час відповіді (натиснувши рядок "У відповідь...")
- Увімкнено можливість відкривати оригінальний допис під час відповіді (натиснувши рядок «У відповідь...»)
- Об’єднано зміни та виправлено помилки
- Вилучено невикористаний код App Center”.
- Вилучено невикористаний код «App Center»
- Додано випуск без федеративної стрічки для Play Маркету
- Додано спеціальний URI перенаправлення для полегшення входу
- Змінено посилання на допомогу у розробці

View File

@@ -1,5 +1,5 @@
- Користувацькі кольорові теми від @LucasGGamerM
- Новий текстовий логотип "megalodon", представлений @LucasGGamerM
- Новий текстовий логотип «megalodon», представлений @LucasGGamerM
- Кращий пошук емодзі під час створення допису
- Налагоджене голосування (показувати власний голос, завжди показувати кнопку голосування, не обрізати довгі відповіді)
- Додано налаштування push-сповіщень для сповіщень про дописи

View File

@@ -2,4 +2,4 @@
- Нові темно-сірі тони для всіх тем
- Виразніша заповнена піктограма поширення
- Анімації для кнопок взаємодій
- Виправлення помилок (збій на деяких дописах, "Списки з", усталена мова дописів тощо)
- Виправлення помилок (збій на деяких дописах, «Списки з», усталена мова дописів тощо)

View File

@@ -6,9 +6,9 @@ Megalodon — це модифікована версія <a href="https://github
- <b>Федеративна стрічка</b>: Переглядайте всі загальнодоступні дописи від людей зі всього Федівсесвіту!
- <b>Власні стрічки</b>: Закріпіть будь-який список або хештег на домашній вкладці Megalodon, щоб просто переходити між улюбленими темами та людьми!
- <b>Чернетки й заплановані дописи</b>: Дозволяє підготувати допис і запланувати його автонадсилання у вказаний час.
- <b>Закріплення дописів</b>: Закріплюйте ваші найважливіші дописи у своєму профілі та переглядайте, що закріпили люди у вкладці "Закріплене".
- <b>Закріплення дописів</b>: Закріплюйте ваші найважливіші дописи у своєму профілі та переглядайте, що закріпили люди у вкладці «Закріплене».
- <b>Слідкуйте за хештегами</b>: Переглядайте нові дописи з певними хештегами безпосередньо у своїй домашній стрічці, підписавшись на них.
- <b>Відповідайте на запити на стеження</b>: Погоджуйте або відхиляйте запити на стеження зі сповіщення чи виділеного списку "Запити на стеження".
- <b>Відповідайте на запити на стеження</b>: Погоджуйте або відхиляйте запити на стеження зі сповіщення чи виділеного списку «Запити на стеження».
- <b>Видалити та переробити</b>: Улюблена функція, яка уможливила редагування дописів без фактичної функції редагування.
- <b>Вибір мови selector</b>: Зручний вибір мови для кожного допису для коректної роботи фільтрів і перекладу.
- <b>Переклад</b>: Легко перекладайте дописи прямо в Megalodon! Працює лише за умови, що ця функція також доступна у вашому Mastodon для браузера.