Compare commits

..

41 Commits

Author SHA1 Message Date
LucasGGamerM
eec547618f Chaging string in title 2023-01-27 14:24:19 -03:00
LucasGGamerM
a3ee174d66 Fixing weird fab behavior on quickly jittering the main screen 2023-01-27 14:19:31 -03:00
LucasGGamerM
45832355a3 Refactoring the enableHideFab option, and increasing the threshold for the fab popping up from 400 to 800 2023-01-26 20:15:50 -03:00
FineFindus
51d4fd63db refactor(compose-fab): code cleanup 2023-01-26 20:11:08 -03:00
FineFindus
ececa7aa2f refactor(compose-fab): show fab after small scroll distance 2023-01-26 20:11:05 -03:00
tygyh
6cf8793efe Translated using Weblate (Swedish)
Currently translated at 38.4% (5 of 13 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/sv/
2023-01-26 19:53:02 -03:00
HudobniVolk
57251d58cb Translated using Weblate (Slovenian)
Currently translated at 46.1% (6 of 13 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/sl/
2023-01-26 19:53:02 -03:00
LamaEpik
cf1f8e8d1a Translated using Weblate (French)
Currently translated at 15.3% (2 of 13 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/fr/
2023-01-26 19:53:02 -03:00
Andrewblasco
c77cb14602 Translated using Weblate (Spanish)
Currently translated at 100.0% (13 of 13 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/es/
2023-01-26 19:53:02 -03:00
tygyh
de864edb33 Translated using Weblate (Swedish)
Currently translated at 31.8% (7 of 22 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/sv/
2023-01-26 19:53:02 -03:00
Andrewblasco
699925ac9b Translated using Weblate (Spanish)
Currently translated at 100.0% (22 of 22 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/es/
2023-01-26 19:53:02 -03:00
Kevin
e367b7711f Translated using Weblate (German)
Currently translated at 100.0% (22 of 22 strings)

Translation: Moshidon/values
Translate-URL: https://translate.codeberg.org/projects/moshidon/values/de/
2023-01-26 19:53:02 -03:00
Kevin
b0e4f707aa Translated using Weblate (German)
Currently translated at 100.0% (13 of 13 strings)

Translation: Moshidon/metadata
Translate-URL: https://translate.codeberg.org/projects/moshidon/metadata/de/
2023-01-26 19:53:01 -03:00
LucasGGamerM
2749ffb6f2 Reverting the other irrelevant thing. 2023-01-26 16:23:54 -03:00
LucasGGamerM
47f57bab17 Testing the hooks for weblate 2023-01-26 14:50:52 -03:00
sk
f1b0f828ac Fixing up name of the setting, and making it disabled by default 2023-01-26 14:42:10 -03:00
LucasGGamerM
5b1188ce97 Merge pull request #55 from FineFindus/feat/profile-menu
feat(profile): move options to overflow menu
2023-01-24 18:16:50 -03:00
LucasGGamerM
c11863388d Putting stuff back to sk_ instead of mo_ on sk strings.
Relevant command: find values*/strings_sk.xml -type f -exec sed -i 's/mo_/sk_/g' {} \;
2023-01-24 17:47:12 -03:00
LucasGGamerM
476b462e86 Fixing a weird crash on the onHidden method added in a commit from upstream 2023-01-24 17:36:15 -03:00
LucasGGamerM
f69b308936 Merge pull request #54
Updated german translation
2023-01-24 17:29:59 -03:00
FineFindus
bdcafd2564 feat(profile): move options to overflow menu 2023-01-24 20:42:41 +01:00
dontobi
3455aab3ba Updated german translation 2023-01-24 11:13:02 +01:00
LucasGGamerM
aac4f412bd Finishing moving all the relevant strings to strings_mo.xml 2023-01-23 18:56:50 -03:00
LucasGGamerM
26831c3375 Updating somethings 2023-01-23 18:49:33 -03:00
LucasGGamerM
d7004824fb Decoupling moshidon strings from megalodon 2023-01-23 18:47:07 -03:00
LucasGGamerM
53d93764b0 Adding an icon and text to the hide compose button while scrolling setting 2023-01-23 17:50:07 -03:00
LucasGGamerM
6a84462b79 Adding an option for enabling/disabling the fab. Still missing an icon and text 2023-01-23 17:39:59 -03:00
Grishka
739d30c887 Save last seen home timeline post via markers API 2023-01-23 17:26:06 -03:00
Grishka
aa3aa8a5f9 Save last seen home timeline post via markers API 2023-01-23 17:20:47 -03:00
Grishka
be48719f52 remove log 2023-01-23 17:19:50 -03:00
Grishka
8e60d107fe Allow viewing alt text on images
closes #100
2023-01-23 17:19:46 -03:00
Grishka
c618feabe9 Workaround to fix #497 2023-01-23 17:19:34 -03:00
Grishka
87164dc469 Minor fixes from our boy grishka himself 2023-01-23 17:18:05 -03:00
sk
4ab1c61262 work around black screen opening notifs
closes sk22#342
2023-01-23 17:08:15 -03:00
LucasGGamerM
fe519f10a1 Failed try to fix the fabled fab problem 2023-01-22 19:41:17 -03:00
LucasGGamerM
901c7c3806 Revert "Fixing the bug of the fab reloading every time the user profile loads"
This reverts commit 211e6cdee2.
2023-01-22 19:08:24 -03:00
LucasGGamerM
211e6cdee2 Fixing the bug of the fab reloading every time the user profile loads 2023-01-22 18:36:31 -03:00
LucasGGamerM
394699c072 Fixing fab behavior on profile page when notes are selected 2023-01-22 18:26:53 -03:00
sk
c9766defff Removing the banners from the local and federated timelines 2023-01-22 18:18:14 -03:00
LucasGGamerM
737aa95bf5 Revert "Making it so the fab doesnt reappear when the notes is in edit mode"
This reverts commit 870ac2b946.
2023-01-22 15:19:52 -03:00
LucasGGamerM
38e035d792 Fixing #53 2023-01-22 13:33:45 -03:00
147 changed files with 1141 additions and 549 deletions

View File

@@ -15,7 +15,7 @@
<application
android:name=".MastodonApp"
android:allowBackup="true"
android:label="@string/app_name"
android:label="@string/mo_app_name"
android:supportsRtl="true"
android:localeConfig="@xml/locales_config"
android:icon="@mipmap/ic_launcher"

View File

@@ -33,6 +33,7 @@ public class GlobalUserPreferences{
public static boolean relocatePublishButton;
public static boolean reduceMotion;
public static boolean keepOnlyLatestNotification;
public static boolean enableFabAutoHide;
public static String publishButtonText;
public static ThemePreference theme;
public static ColorPreference color;
@@ -72,6 +73,7 @@ public class GlobalUserPreferences{
enableDeleteNotifications=prefs.getBoolean("enableDeleteNotifications", true);
reduceMotion=prefs.getBoolean("reduceMotion", false);
keepOnlyLatestNotification=prefs.getBoolean("keepOnlyLatestNotification", false);
enableFabAutoHide =prefs.getBoolean("enableFabAutoHide", true);
theme=ThemePreference.values()[prefs.getInt("theme", 0)];
recentLanguages=fromJson(prefs.getString("recentLanguages", "{}"), recentLanguagesType, new HashMap<>());
recentEmojis=fromJson(prefs.getString("recentEmojis", "{}"), recentEmojisType, new HashMap<>());
@@ -108,6 +110,7 @@ public class GlobalUserPreferences{
.putBoolean("enableDeleteNotifications", enableDeleteNotifications)
.putBoolean("reduceMotion", reduceMotion)
.putBoolean("keepOnlyLatestNotification", keepOnlyLatestNotification)
.putBoolean("enableFabAutoHide", enableFabAutoHide)
.putString("publishButtonText", publishButtonText)
.putInt("theme", theme.ordinal())
.putString("color", color.name())

View File

@@ -40,12 +40,13 @@ public class MainActivity extends FragmentStackActivity{
AccountSession session;
Bundle args=new Bundle();
Intent intent=getIntent();
if(intent.getBooleanExtra("fromNotification", false)){
boolean fromNotification = intent.getBooleanExtra("fromNotification", false);
boolean hasNotification = intent.hasExtra("notification");
if(fromNotification){
String accountID=intent.getStringExtra("accountID");
try{
session=AccountSessionManager.getInstance().getAccount(accountID);
if(!intent.hasExtra("notification"))
args.putString("tab", "notifications");
if(!hasNotification) args.putString("tab", "notifications");
}catch(IllegalStateException x){
session=AccountSessionManager.getInstance().getLastActiveAccount();
}
@@ -55,13 +56,13 @@ public class MainActivity extends FragmentStackActivity{
args.putString("account", session.getID());
Fragment fragment=session.activated ? new HomeFragment() : new AccountActivationFragment();
fragment.setArguments(args);
showFragmentClearingBackStack(fragment);
if(intent.getBooleanExtra("fromNotification", false) && intent.hasExtra("notification")){
if(fromNotification && hasNotification){
Notification notification=Parcels.unwrap(intent.getParcelableExtra("notification"));
showFragmentForNotification(notification, session.getID());
}else if(intent.getBooleanExtra("compose", false)){
} else if (intent.getBooleanExtra("compose", false)){
showCompose();
}else{
} else {
showFragmentClearingBackStack(fragment);
maybeRequestNotificationsPermission();
}
}
@@ -140,4 +141,30 @@ public class MainActivity extends FragmentStackActivity{
requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, 100);
}
}
/**
* when opening app through a notification: if (thread) fragment "can go back", clear back stack
* and show home fragment. upstream's implementation doesn't require this as it opens home first
* and then immediately switches to the notification's ThreadFragment. this causes a black
* screen in megalodon, for some reason, so i'm working around this that way.
*/
@Override
public void onBackPressed() {
Fragment currentFragment = getFragmentManager().findFragmentById(
(fragmentContainers.get(fragmentContainers.size() - 1)).getId()
);
Bundle currentArgs = currentFragment.getArguments();
if (this.fragmentContainers.size() == 1
&& currentArgs.getBoolean("_can_go_back", false)
&& currentArgs.containsKey("account")) {
Bundle args = new Bundle();
args.putString("account", currentArgs.getString("account"));
args.putString("tab", "notifications");
Fragment fragment=new HomeFragment();
fragment.setArguments(args);
showFragmentClearingBackStack(fragment);
} else {
super.onBackPressed();
}
}
}

View File

@@ -9,7 +9,7 @@ public class RegisterForPushNotifications extends MastodonAPIRequest<PushSubscri
Request r=new Request();
r.subscription.endpoint="https://app.joinmastodon.org/relay-to/fcm/"+deviceToken+"/"+accountID;
r.data.alerts=alerts;
r.data.policy=policy;
r.policy=policy;
r.subscription.keys.p256dh=encryptionKey;
r.subscription.keys.auth=authKey;
setRequestBody(r);
@@ -18,6 +18,7 @@ public class RegisterForPushNotifications extends MastodonAPIRequest<PushSubscri
private static class Request{
public Subscription subscription=new Subscription();
public Data data=new Data();
public PushSubscription.Policy policy;
private static class Keys{
public String p256dh;
@@ -31,7 +32,6 @@ public class RegisterForPushNotifications extends MastodonAPIRequest<PushSubscri
private static class Data{
public PushSubscription.Alerts alerts;
public PushSubscription.Policy policy;
}
}
}

View File

@@ -3,23 +3,36 @@ package org.joinmastodon.android.api.requests.notifications;
import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.model.PushSubscription;
import java.io.IOException;
import okhttp3.Response;
public class UpdatePushSettings extends MastodonAPIRequest<PushSubscription>{
private final PushSubscription.Policy policy;
public UpdatePushSettings(PushSubscription.Alerts alerts, PushSubscription.Policy policy){
super(HttpMethod.PUT, "/push/subscription", PushSubscription.class);
setRequestBody(new Request(alerts, policy));
this.policy=policy;
}
@Override
public void validateAndPostprocessResponse(PushSubscription respObj, Response httpResponse) throws IOException{
super.validateAndPostprocessResponse(respObj, httpResponse);
respObj.policy=policy;
}
private static class Request{
public Data data=new Data();
public PushSubscription.Policy policy;
public Request(PushSubscription.Alerts alerts, PushSubscription.Policy policy){
this.data.alerts=alerts;
this.data.policy=policy;
this.policy=policy;
}
private static class Data{
public PushSubscription.Alerts alerts;
public PushSubscription.Policy policy;
}
}
}

View File

@@ -1,22 +0,0 @@
package org.joinmastodon.android.api.requests.timelines;
import com.google.gson.reflect.TypeToken;
import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.model.Status;
import java.util.List;
public class GetConversationsTimeline extends MastodonAPIRequest<List<Status>>{
public GetConversationsTimeline(String maxID, String minID, int limit, String sinceID){
super(HttpMethod.GET, "/conversations", new TypeToken<>(){});
if(maxID!=null)
addQueryParameter("max_id", maxID);
if(minID!=null)
addQueryParameter("min_id", minID);
if(sinceID!=null)
addQueryParameter("since_id", sinceID);
if(limit>0)
addQueryParameter("limit", ""+limit);
}
}

View File

@@ -13,7 +13,6 @@ import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
@@ -75,7 +74,7 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
protected String accountID;
protected PhotoViewer currentPhotoViewer;
protected ImageButton fab;
protected boolean isScrollingUp = false;
protected int scrollDiff = 0;
protected HashMap<String, Account> knownAccounts=new HashMap<>();
protected HashMap<String, Relationship> relationships=new HashMap<>();
protected Rect tmpRect=new Rect();
@@ -279,28 +278,30 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
public void onViewCreated(View view, Bundle savedInstanceState){
super.onViewCreated(view, savedInstanceState);
fab=view.findViewById(R.id.fab);
list.addOnScrollListener(new RecyclerView.OnScrollListener(){
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy){
if(currentPhotoViewer!=null)
currentPhotoViewer.offsetView(-dx, -dy);
if (fab!=null) {
if (dy >= 0 ) {
if (isScrollingUp) {
fab.setVisibility(View.INVISIBLE);
TranslateAnimation animate = new TranslateAnimation(
0,
0,
0,
fab.getHeight() * 2);
animate.setDuration(300);
animate.setFillAfter(true);
fab.startAnimation(animate);
isScrollingUp = false;
}
} else {
if (!isScrollingUp) {
if (fab!=null && GlobalUserPreferences.enableFabAutoHide) {
if(dy > 0){
scrollDiff = 0;
}
if (dy > 0 && fab.getVisibility() == View.VISIBLE) {
TranslateAnimation animate = new TranslateAnimation(
0,
0,
0,
fab.getHeight() * 2);
animate.setDuration(300);
animate.setFillAfter(true);
fab.startAnimation(animate);
fab.setVisibility(View.INVISIBLE);
scrollDiff = 0;
} else if (dy < 0 && fab.getVisibility() != View.VISIBLE) {
if (scrollDiff > 800) {
fab.setVisibility(View.VISIBLE);
TranslateAnimation animate = new TranslateAnimation(
0,
@@ -310,7 +311,9 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
animate.setDuration(300);
animate.setFillAfter(true);
fab.startAnimation(animate);
isScrollingUp = true;
scrollDiff = 0;
} else {
scrollDiff += Math.abs(dy);
}
}
}

View File

@@ -948,8 +948,8 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
&& statusVisibility != StatusPrivacy.DIRECT
&& !attachments.stream().allMatch(attachment -> attachment.description != null && !attachment.description.isBlank())) {
new M3AlertDialogBuilder(getActivity())
.setTitle(R.string.sk_no_image_desc_title)
.setMessage(R.string.sk_no_image_desc)
.setTitle(R.string.mo_no_image_desc_title)
.setMessage(R.string.mo_no_image_desc)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.publish, (dialog, i)-> publish())
.show();

View File

@@ -1,253 +0,0 @@
package org.joinmastodon.android.fragments;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import org.joinmastodon.android.GlobalUserPreferences;
import org.joinmastodon.android.api.requests.timelines.GetConversationsTimeline;
import org.joinmastodon.android.api.requests.timelines.GetHomeTimeline;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.events.StatusCreatedEvent;
import org.joinmastodon.android.model.CacheablePaginatedResponse;
import org.joinmastodon.android.model.Filter;
import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.model.StatusPrivacy;
import org.joinmastodon.android.ui.displayitems.GapStatusDisplayItem;
import org.joinmastodon.android.ui.displayitems.StatusDisplayItem;
import org.joinmastodon.android.utils.StatusFilterPredicate;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import me.grishka.appkit.api.Callback;
import me.grishka.appkit.api.ErrorResponse;
import me.grishka.appkit.api.SimpleCallback;
import me.grishka.appkit.utils.V;
public class ConversationsTimelineFragment extends FabStatusListFragment {
private HomeTabFragment parent;
private String maxID;
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
if (getParentFragment() instanceof HomeTabFragment home) parent = home;
loadData();
}
private List<Status> filterPosts(List<Status> items) {
// Disabling this for DMs, because there are no boosts on DMs, and most of them are replies
return items.stream().filter(i ->
(i.visibility == StatusPrivacy.DIRECT)
).collect(Collectors.toList());
// return items;
}
@Override
protected void doLoadData(int offset, int count){
AccountSessionManager.getInstance()
.getAccount(accountID).getCacheController()
.getHomeTimeline(offset>0 ? maxID : null, count, refreshing, new SimpleCallback<>(this){
@Override
public void onSuccess(CacheablePaginatedResponse<List<Status>> result){
if(getActivity()==null)
return;
List<Status> filteredItems = filterPosts(result.items);
onDataLoaded(filteredItems, !result.items.isEmpty());
maxID=result.maxID;
if(result.isFromCache())
loadNewPosts();
}
});
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState){
super.onViewCreated(view, savedInstanceState);
list.addOnScrollListener(new RecyclerView.OnScrollListener(){
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy){
if(parent != null && parent.isNewPostsBtnShown() && list.getChildAdapterPosition(list.getChildAt(0))<=getMainAdapterOffset()){
parent.hideNewPostsButton();
}
}
});
}
@Override
protected void onShown(){
super.onShown();
if(!getArguments().getBoolean("noAutoLoad")){
if(!loaded && !dataLoading){
loadData();
}else if(!dataLoading){
loadNewPosts();
}
}
}
public void onStatusCreated(StatusCreatedEvent ev){
prependItems(Collections.singletonList(ev.status), true);
}
private void loadNewPosts(){
if (!GlobalUserPreferences.loadNewPosts) return;
dataLoading=true;
// The idea here is that we request the timeline such that if there are fewer than `limit` posts,
// we'll get the currently topmost post as last in the response. This way we know there's no gap
// between the existing and newly loaded parts of the timeline.
String sinceID=data.size()>1 ? data.get(1).id : "1";
currentRequest=new GetConversationsTimeline(null, null, 20, sinceID)
.setCallback(new Callback<>(){
@Override
public void onSuccess(List<Status> result){
currentRequest=null;
dataLoading=false;
result = filterPosts(result);
if(result.isEmpty() || getActivity()==null)
return;
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
}else{
result.get(result.size()-1).hasGapAfter=true;
toAdd=result;
}
StatusFilterPredicate filterPredicate=new StatusFilterPredicate(accountID, Filter.FilterContext.HOME);
toAdd=toAdd.stream().filter(filterPredicate).collect(Collectors.toList());
if(!toAdd.isEmpty()){
prependItems(toAdd, true);
if (parent != null) parent.showNewPostsButton();
// AccountSessionManager.getInstance().getAccount(accountID).getCacheController().putHomTimeline(toAdd, false);
}
}
@Override
public void onError(ErrorResponse error){
currentRequest=null;
dataLoading=false;
}
})
.exec(accountID);
}
@Override
public void onGapClick(GapStatusDisplayItem.Holder item){
if(dataLoading)
return;
item.getItem().loading=true;
V.setVisibilityAnimated(item.progress, View.VISIBLE);
V.setVisibilityAnimated(item.text, View.GONE);
GapStatusDisplayItem gap=item.getItem();
dataLoading=true;
currentRequest=new GetConversationsTimeline(item.getItemID(), null, 20, null)
.setCallback(new Callback<>(){
@Override
public void onSuccess(List<Status> result){
currentRequest=null;
dataLoading=false;
if(getActivity()==null)
return;
int gapPos=displayItems.indexOf(gap);
if(gapPos==-1)
return;
if(result.isEmpty()){
displayItems.remove(gapPos);
adapter.notifyItemRemoved(getMainAdapterOffset()+gapPos);
Status gapStatus=getStatusByID(gap.parentID);
if(gapStatus!=null){
gapStatus.hasGapAfter=false;
// AccountSessionManager.getInstance().getAccount(accountID).getCacheController().putConversationsTimeline(Collections.singletonList(gapStatus), false);
}
}else{
Set<String> idsBelowGap=new HashSet<>();
boolean belowGap=false;
int gapPostIndex=0;
for(Status s:data){
if(belowGap){
idsBelowGap.add(s.id);
}else if(s.id.equals(gap.parentID)){
belowGap=true;
s.hasGapAfter=false;
// AccountSessionManager.getInstance().getAccount(accountID).getCacheController().putConversationsTimeline(Collections.singletonList(s), false);
}else{
gapPostIndex++;
}
}
int endIndex=0;
for(Status s:result){
endIndex++;
if(idsBelowGap.contains(s.id))
break;
}
if(endIndex==result.size()){
result.get(result.size()-1).hasGapAfter=true;
}else{
result=result.subList(0, endIndex);
}
List<StatusDisplayItem> targetList=displayItems.subList(gapPos, gapPos+1);
targetList.clear();
List<Status> insertedPosts=data.subList(gapPostIndex+1, gapPostIndex+1);
StatusFilterPredicate filterPredicate=new StatusFilterPredicate(accountID, Filter.FilterContext.HOME);
for(Status s:result){
if(idsBelowGap.contains(s.id))
break;
if(filterPredicate.test(s)){
targetList.addAll(buildDisplayItems(s));
insertedPosts.add(s);
}
}
if(targetList.isEmpty()){
// oops. We didn't add new posts, but at least we know there are none.
adapter.notifyItemRemoved(getMainAdapterOffset()+gapPos);
}else{
adapter.notifyItemChanged(getMainAdapterOffset()+gapPos);
adapter.notifyItemRangeInserted(getMainAdapterOffset()+gapPos+1, targetList.size()-1);
}
// AccountSessionManager.getInstance().getAccount(accountID).getCacheController().putConversationsTimeline(insertedPosts, false);
}
}
@Override
public void onError(ErrorResponse error){
currentRequest=null;
dataLoading=false;
gap.loading=false;
Activity a=getActivity();
if(a!=null){
error.showToast(a);
int gapPos=displayItems.indexOf(gap);
if(gapPos>=0)
adapter.notifyItemChanged(gapPos);
}
}
})
.exec(accountID);
}
@Override
public void onRefresh(){
if(currentRequest!=null){
currentRequest.cancel();
currentRequest=null;
dataLoading=false;
}
if (parent != null) parent.hideNewPostsButton();
super.onRefresh();
}
@Override
protected boolean shouldRemoveAccountPostsWhenUnfollowing(){
return true;
}
}

View File

@@ -16,7 +16,6 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import org.joinmastodon.android.PushNotificationReceiver;
import org.joinmastodon.android.R;
import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager;
@@ -62,7 +61,7 @@ public class HomeFragment extends AppKitFragment implements OnBackPressedListene
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
accountID=getArguments().getString("account");
setTitle(R.string.sk_app_name);
setTitle(R.string.mo_app_name);
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N)
setRetainInstance(true);

View File

@@ -8,6 +8,9 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import org.joinmastodon.android.GlobalUserPreferences;
import org.joinmastodon.android.E;
import org.joinmastodon.android.R;
import org.joinmastodon.android.api.requests.markers.SaveMarkers;
import org.joinmastodon.android.api.requests.timelines.GetHomeTimeline;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.events.StatusCreatedEvent;
@@ -32,6 +35,7 @@ import me.grishka.appkit.utils.V;
public class HomeTimelineFragment extends FabStatusListFragment {
private HomeTabFragment parent;
private String maxID;
private String lastSavedMarkerID;
@Override
public void onAttach(Activity activity){
@@ -91,6 +95,29 @@ public class HomeTimelineFragment extends FabStatusListFragment {
}
}
@Override
protected void onHidden(){
super.onHidden();
// if(!data.isEmpty()){
// String topPostID=displayItems.get(list.getChildAdapterPosition(list.getChildAt(0))-getMainAdapterOffset()).parentID;
// if(!topPostID.equals(lastSavedMarkerID)){
// lastSavedMarkerID=topPostID;
// new SaveMarkers(topPostID, null)
// .setCallback(new Callback<>(){
// @Override
// public void onSuccess(SaveMarkers.Response result){
// }
//
// @Override
// public void onError(ErrorResponse error){
// lastSavedMarkerID=null;
// }
// })
// .exec(accountID);
// }
// }
}
public void onStatusCreated(StatusCreatedEvent ev){
prependItems(Collections.singletonList(ev.status), true);
}

View File

@@ -44,7 +44,7 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc
private FrameLayout[] tabViews;
private TabLayoutMediator tabLayoutMediator;
private NotificationsListFragment allNotificationsFragment, mentionsFragment, conversationsFragment;
private NotificationsListFragment allNotificationsFragment, mentionsFragment, postsFragment;
private String accountID;
@@ -151,14 +151,14 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc
mentionsFragment.setArguments(args);
args=new Bundle(args);
args.putBoolean("onlyConversations", true);
conversationsFragment =new NotificationsListFragment();
conversationsFragment.setArguments(args);
args.putBoolean("onlyPosts", true);
postsFragment=new NotificationsListFragment();
postsFragment.setArguments(args);
getChildFragmentManager().beginTransaction()
.add(R.id.notifications_all, allNotificationsFragment)
.add(R.id.notifications_mentions, mentionsFragment)
.add(R.id.notifications_posts, conversationsFragment)
.add(R.id.notifications_posts, postsFragment)
.commit();
}
@@ -168,7 +168,7 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc
tab.setText(switch(position){
case 0 -> R.string.all_notifications;
case 1 -> R.string.mentions;
case 2 -> R.string.sk_conversations;
case 2 -> R.string.posts;
default -> throw new IllegalStateException("Unexpected value: "+position);
});
tab.view.textView.setAllCaps(true);
@@ -217,7 +217,7 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc
return switch(page){
case 0 -> allNotificationsFragment;
case 1 -> mentionsFragment;
case 2 -> conversationsFragment;
case 2 -> postsFragment;
default -> throw new IllegalStateException("Unexpected value: "+page);
};
}

View File

@@ -11,21 +11,17 @@ import com.squareup.otto.Subscribe;
import org.joinmastodon.android.E;
import org.joinmastodon.android.R;
import org.joinmastodon.android.api.requests.markers.SaveMarkers;
import org.joinmastodon.android.api.requests.timelines.GetConversationsTimeline;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.events.PollUpdatedEvent;
import org.joinmastodon.android.events.RemoveAccountPostsEvent;
import org.joinmastodon.android.model.CacheablePaginatedResponse;
import org.joinmastodon.android.model.Notification;
import org.joinmastodon.android.model.PaginatedResponse;
import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.model.StatusPrivacy;
import org.joinmastodon.android.ui.displayitems.AccountCardStatusDisplayItem;
import org.joinmastodon.android.ui.displayitems.HeaderStatusDisplayItem;
import org.joinmastodon.android.ui.displayitems.ImageStatusDisplayItem;
import org.joinmastodon.android.ui.displayitems.StatusDisplayItem;
import org.joinmastodon.android.ui.utils.InsetStatusItemDecoration;
import org.joinmastodon.android.utils.StatusFilterPredicate;
import org.parceler.Parcels;
import java.util.ArrayList;
@@ -38,16 +34,12 @@ import java.util.stream.Stream;
import androidx.recyclerview.widget.RecyclerView;
import me.grishka.appkit.Nav;
import me.grishka.appkit.api.Callback;
import me.grishka.appkit.api.ErrorResponse;
import me.grishka.appkit.api.SimpleCallback;
import me.grishka.appkit.utils.V;
public class NotificationsListFragment extends BaseStatusListFragment<Notification>{
private boolean onlyMentions;
private boolean onlyPosts;
private boolean onlyConversations;
private String maxID;
@Override
@@ -67,7 +59,6 @@ public class NotificationsListFragment extends BaseStatusListFragment<Notificati
super.onAttach(activity);
onlyMentions=getArguments().getBoolean("onlyMentions", false);
onlyPosts=getArguments().getBoolean("onlyPosts", false);
onlyConversations=getArguments().getBoolean("onlyConversations", false);
}
@Override
@@ -119,29 +110,28 @@ public class NotificationsListFragment extends BaseStatusListFragment<Notificati
@Override
protected void doLoadData(int offset, int count){
AccountSessionManager.getInstance()
.getAccount(accountID).getCacheController()
.getNotifications(offset > 0 ? maxID : null, count, onlyMentions, onlyPosts || onlyConversations, refreshing, new SimpleCallback<>(this) {
@Override
public void onSuccess(PaginatedResponse<List<Notification>> result) {
if (getActivity() == null)
return;
if (refreshing)
relationships.clear();
onDataLoaded(result.items.stream().filter(n -> n.type != null || (onlyConversations &&)).collect(Collectors.toList()), !result.items.isEmpty());
Set<String> needRelationships = result.items.stream()
.filter(ntf -> ntf.status == null && !relationships.containsKey(ntf.account.id))
.map(ntf -> ntf.account.id)
.collect(Collectors.toSet());
loadRelationships(needRelationships);
maxID = result.maxID;
AccountSessionManager.getInstance()
.getAccount(accountID).getCacheController()
.getNotifications(offset>0 ? maxID : null, count, onlyMentions, onlyPosts, refreshing, new SimpleCallback<>(this){
@Override
public void onSuccess(PaginatedResponse<List<Notification>> result){
if(getActivity()==null)
return;
if(refreshing)
relationships.clear();
onDataLoaded(result.items.stream().filter(n->n.type!=null).collect(Collectors.toList()), !result.items.isEmpty());
Set<String> needRelationships=result.items.stream()
.filter(ntf->ntf.status==null && !relationships.containsKey(ntf.account.id))
.map(ntf->ntf.account.id)
.collect(Collectors.toSet());
loadRelationships(needRelationships);
maxID=result.maxID;
if (offset == 0 && !result.items.isEmpty()) {
new SaveMarkers(null, result.items.get(0).id).exec(accountID);
}
if(offset==0 && !result.items.isEmpty()){
new SaveMarkers(null, result.items.get(0).id).exec(accountID);
}
});
}
});
}
@Override

View File

@@ -157,7 +157,7 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF
@Override
public void onError(ErrorResponse result) {
Toast.makeText(getActivity(), getString(R.string.sk_personal_note_update_failed), Toast.LENGTH_LONG).show();
Toast.makeText(getActivity(), getString(R.string.mo_personal_note_update_failed), Toast.LENGTH_LONG).show();
}
}).exec(accountID);
}

View File

@@ -17,13 +17,11 @@ import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.style.ImageSpan;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewOutlineProvider;
@@ -225,13 +223,31 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
noteEdit.setOnFocusChangeListener((v, hasFocus) -> {
if (hasFocus) {
fab.setVisibility(View.GONE);
fab.setVisibility(View.INVISIBLE);
TranslateAnimation animate = new TranslateAnimation(
0,
0,
0,
fab.getHeight() * 2);
animate.setDuration(300);
animate.setFillAfter(true);
fab.startAnimation(animate);
noteEditConfirm.setVisibility(View.VISIBLE);
noteEditConfirm.animate()
.alpha(1.0f)
.setDuration(700);
} else {
fab.setVisibility(View.VISIBLE);
TranslateAnimation animate = new TranslateAnimation(
0,
0,
fab.getHeight() * 2,
0);
animate.setDuration(300);
animate.setFillAfter(true);
fab.startAnimation(animate);
noteEditConfirm.animate()
.alpha(0.0f)
.setDuration(700);
@@ -353,7 +369,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
@Override
public void onError(ErrorResponse result) {
Toast.makeText(getActivity(), getString(R.string.sk_personal_note_update_failed), Toast.LENGTH_LONG).show();
Toast.makeText(getActivity(), getString(R.string.mo_personal_note_update_failed), Toast.LENGTH_LONG).show();
}
}).exec(accountID);
}
@@ -386,11 +402,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
if(mediaFragment.loaded)
mediaFragment.onRefresh();
}
// if(noteEdit.hasFocus()){
// V.setVisibilityAnimated(fab, View.GONE);
// }else{
// V.setVisibilityAnimated(fab, View.VISIBLE);
// }
V.setVisibilityAnimated(fab, View.VISIBLE);
}
})
.exec(accountID);
@@ -629,7 +641,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
return;
inflater.inflate(isOwnProfile ? R.menu.profile_own : R.menu.profile, menu);
if(isOwnProfile){
UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.manage_user_lists, R.id.bookmarks, R.id.followed_hashtags, R.id.favorites, R.id.scheduled, R.id.share);
UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.scheduled, R.id.bookmarks, R.id.favorites);
}else{
UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.bookmarks, R.id.followed_hashtags, R.id.favorites, R.id.scheduled);
}

View File

@@ -53,7 +53,6 @@ import org.joinmastodon.android.model.PushSubscription;
import org.joinmastodon.android.ui.M3AlertDialogBuilder;
import org.joinmastodon.android.ui.OutlineProviders;
import org.joinmastodon.android.ui.utils.UiUtils;
import org.joinmastodon.android.ui.views.TextInputFrameLayout;
import org.joinmastodon.android.updater.GithubSelfUpdater;
import org.parceler.Parcels;
@@ -140,14 +139,14 @@ public class SettingsFragment extends MastodonToolbarFragment{
case BROWN -> R.string.sk_color_palette_brown;
case RED -> R.string.sk_color_palette_red;
case YELLOW -> R.string.sk_color_palette_yellow;
case NORD -> R.string.sk_color_palette_nord;
case NORD -> R.string.mo_color_palette_nord;
});
}));
items.add(new ButtonItem(R.string.sk_settings_publish_button_text, R.drawable.ic_fluent_send_24_regular, b-> {
updatePublishText(b);
if (GlobalUserPreferences.relocatePublishButton) {
b.setOnClickListener(l -> {
Toast.makeText(getActivity(), R.string.sk_disable_relocate_publish_button_to_enable_customization,
Toast.makeText(getActivity(), R.string.mo_disable_relocate_publish_button_to_enable_customization,
Toast.LENGTH_LONG).show();
});
} else {
@@ -206,17 +205,22 @@ public class SettingsFragment extends MastodonToolbarFragment{
needAppRestart=true;
}));
// items.add(new SwitchItem(R.string.sk_settings_show_differentiated_notification_icons, R.drawable.ic_ntf_logo, GlobalUserPreferences.showUniformPushNoticationIcons, this::onNotificationStyleChanged));
items.add(new SwitchItem(R.string.sk_disable_dividers, R.drawable.ic_fluent_timeline_24_regular, GlobalUserPreferences.disableDividers, i->{
items.add(new SwitchItem(R.string.mo_disable_dividers, R.drawable.ic_fluent_timeline_24_regular, GlobalUserPreferences.disableDividers, i->{
GlobalUserPreferences.disableDividers=i.checked;
GlobalUserPreferences.save();
needAppRestart=true;
}));
items.add(new SwitchItem(R.string.mo_hide_compose_button_while_scrolling_setting, R.drawable.ic_fluent_edit_24_regular, GlobalUserPreferences.enableFabAutoHide, i->{
GlobalUserPreferences.enableFabAutoHide =i.checked;
GlobalUserPreferences.save();
needAppRestart=true;
}));
// items.add(new SwitchItem(R.string.sk_enable_delete_notifications, R.drawable.ic_fluent_delete_24_regular, GlobalUserPreferences.enableDeleteNotifications, i->{
// GlobalUserPreferences.enableDeleteNotifications=i.checked;
// GlobalUserPreferences.save();
// needAppRestart=true;
// }));
items.add(new SwitchItem(R.string.sk_relocate_publish_button, R.drawable.ic_fluent_arrow_autofit_down_24_regular, GlobalUserPreferences.relocatePublishButton, i->{
items.add(new SwitchItem(R.string.mo_relocate_publish_button, R.drawable.ic_fluent_arrow_autofit_down_24_regular, GlobalUserPreferences.relocatePublishButton, i->{
GlobalUserPreferences.relocatePublishButton=i.checked;
GlobalUserPreferences.save();
}));
@@ -282,7 +286,7 @@ public class SettingsFragment extends MastodonToolbarFragment{
checkForUpdateItem = new TextItem(R.string.sk_check_for_update, GithubSelfUpdater.getInstance()::checkForUpdates);
items.add(checkForUpdateItem);
}
items.add(new TextItem(R.string.sk_settings_contribute, ()->UiUtils.launchWebBrowser(getActivity(), "https://github.com/LucasGGamerM/moshidon"), R.drawable.ic_fluent_open_24_regular));
items.add(new TextItem(R.string.mo_settings_contribute, ()->UiUtils.launchWebBrowser(getActivity(), "https://github.com/LucasGGamerM/moshidon"), R.drawable.ic_fluent_open_24_regular));
items.add(new TextItem(R.string.sk_settings_donate, ()->UiUtils.launchWebBrowser(getActivity(), "https://github.com/sponsors/LucasGGamerM"), R.drawable.ic_fluent_heart_24_regular));
// items.add(new TextItem(R.string.settings_clear_cache, this::clearImageCache));
clearImageCacheItem = new TextItem(R.string.settings_clear_cache, UiUtils.formatFileSize(getContext(), imageCache.getDiskCache().size(), true), this::clearImageCache, 0);
@@ -291,13 +295,13 @@ public class SettingsFragment extends MastodonToolbarFragment{
GlobalUserPreferences.recentLanguages.remove(accountID);
GlobalUserPreferences.save();
})));
items.add(new TextItem(R.string.sk_clear_recent_emoji, ()-> {
items.add(new TextItem(R.string.mo_clear_recent_emoji, ()-> {
GlobalUserPreferences.recentEmojis.clear();
GlobalUserPreferences.save();
}));
// items.add(new TextItem(R.string.log_out, this::confirmLogOut));
items.add(new FooterItem(getString(R.string.sk_settings_app_version, BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)));
items.add(new FooterItem(getString(R.string.mo_settings_app_version, BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)));
}
private void updatePublishText(Button btn) {
@@ -1046,10 +1050,10 @@ public class SettingsFragment extends MastodonToolbarFragment{
if (state == GithubSelfUpdater.UpdateState.CHECKING) return;
GithubSelfUpdater.UpdateInfo info=updater.getUpdateInfo();
if(state!=GithubSelfUpdater.UpdateState.DOWNLOADED){
text.setText(getString(R.string.sk_update_available, info.version));
text.setText(getString(R.string.mo_update_available, info.version));
button.setText(getString(R.string.download_update, UiUtils.formatFileSize(getActivity(), info.size, false)));
}else{
text.setText(getString(R.string.sk_update_ready, info.version));
text.setText(getString(R.string.mo_update_ready, info.version));
button.setText(R.string.install_update);
}
if(state==GithubSelfUpdater.UpdateState.DOWNLOADING){

View File

@@ -38,6 +38,6 @@ public class FederatedTimelineFragment extends FabStatusListFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState){
super.onViewCreated(view, savedInstanceState);
bannerHelper.maybeAddBanner(contentWrap);
// bannerHelper.maybeAddBanner(contentWrap);
}
}

View File

@@ -18,7 +18,7 @@ import java.util.stream.Collectors;
import me.grishka.appkit.api.SimpleCallback;
public class LocalTimelineFragment extends FabStatusListFragment {
private DiscoverInfoBannerHelper bannerHelper=new DiscoverInfoBannerHelper(DiscoverInfoBannerHelper.BannerType.LOCAL_TIMELINE);
// private DiscoverInfoBannerHelper bannerHelper=new DiscoverInfoBannerHelper(DiscoverInfoBannerHelper.BannerType.LOCAL_TIMELINE);
private String maxID;
@Override
@@ -38,6 +38,6 @@ public class LocalTimelineFragment extends FabStatusListFragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState){
super.onViewCreated(view, savedInstanceState);
bannerHelper.maybeAddBanner(contentWrap);
// bannerHelper.maybeAddBanner(contentWrap);
}
}

View File

@@ -140,8 +140,8 @@ public class CustomWelcomeFragment extends InstanceCatalogFragment {
headerView.findViewById(R.id.separator).setVisibility(View.GONE);
headerView.findViewById(R.id.timestamp).setVisibility(View.GONE);
headerView.findViewById(R.id.unread_indicator).setVisibility(View.GONE);
((TextView) headerView.findViewById(R.id.username)).setText(R.string.sk_app_username);
((TextView) headerView.findViewById(R.id.name)).setText(R.string.sk_app_name);
((TextView) headerView.findViewById(R.id.username)).setText(R.string.mo_app_username);
((TextView) headerView.findViewById(R.id.name)).setText(R.string.mo_app_name);
((ImageView) headerView.findViewById(R.id.avatar)).setImageDrawable(getActivity().getDrawable(R.mipmap.ic_launcher));
((FragmentStackActivity) getActivity()).invalidateSystemBarColors(this);

View File

@@ -80,6 +80,7 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple
private LinearLayout filtersWrap;
private HorizontalScrollView filtersScroll;
private ImageButton backBtn, clearSearchBtn;
private View focusThing;
private FilterChipView categoryGeneral, categorySpecialInterests;
private List<FilterChipView> regionalFilters;
@@ -285,7 +286,13 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple
FilterChipView langFilter=new FilterChipView(getActivity());
langFilter.setDrawableEnd(R.drawable.ic_baseline_arrow_drop_down_18);
langFilter.setText(R.string.server_filter_any_language);
if(currentLanguage==null){
langFilter.setText(R.string.server_filter_any_language);
}else{
Locale locale=Locale.forLanguageTag(currentLanguage);
langFilter.setText(locale.getDisplayLanguage(locale));
langFilter.setSelected(true);
}
langFilterMenu=new PopupMenu(getContext(), langFilter);
langFilter.setOnTouchListener(langFilterMenu.getDragToOpenListener());
langFilter.setOnClickListener(v->langFilterMenu.show());
@@ -301,8 +308,12 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple
speedFilterMenu.getMenu().add(0, 2, 0, R.string.server_filter_manual_review);
speedFilter.setOnTouchListener(speedFilterMenu.getDragToOpenListener());
speedFilter.setOnClickListener(v->speedFilterMenu.show());
speedFilter.setText(R.string.server_filter_instant_signup);
speedFilter.setSelected(true);
speedFilter.setText(switch(currentSignupSpeedFilter){
case ANY -> R.string.server_filter_any_signup_speed;
case INSTANT -> R.string.server_filter_instant_signup;
case REVIEWED -> R.string.server_filter_manual_review;
});
speedFilter.setSelected(currentSignupSpeedFilter!=SignupSpeedFilter.ANY);
filtersWrap.addView(speedFilter, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
speedFilterMenu.setOnMenuItemClickListener(item->{
@@ -328,11 +339,13 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple
categoryGeneral.setText(R.string.category_general);
categoryGeneral.setTag(CategoryChoice.GENERAL);
categoryGeneral.setOnClickListener(this::onCategoryFilterClick);
categoryGeneral.setSelected(categoryChoice==CategoryChoice.GENERAL);
filtersWrap.addView(categoryGeneral, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
categorySpecialInterests=new FilterChipView(getActivity());
categorySpecialInterests.setText(R.string.category_special_interests);
categorySpecialInterests.setTag(CategoryChoice.SPECIAL);
categorySpecialInterests.setOnClickListener(this::onCategoryFilterClick);
categorySpecialInterests.setSelected(categoryChoice==CategoryChoice.SPECIAL);
filtersWrap.addView(categorySpecialInterests, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
regionalFilters=Arrays.stream(CatalogInstance.Region.values()).map(r->{
@@ -351,6 +364,8 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple
filtersWrap.addView(fv, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
return fv;
}).collect(Collectors.toList());
focusThing=view.findViewById(R.id.focus_thing);
focusThing.requestFocus();
}
private void onRegionFilterClick(View v){
@@ -550,7 +565,7 @@ public class InstanceCatalogSignupFragment extends InstanceCatalogFragment imple
searchEdit.setCompoundDrawableTintList(ColorStateList.valueOf(0));
}else{
filtersScroll.setVisibility(View.VISIBLE);
searchEdit.clearFocus();
focusThing.requestFocus();
searchEdit.setText("");
lp.addRule(RelativeLayout.END_OF, R.id.btn_back);
getActivity().getSystemService(InputMethodManager.class).hideSoftInputFromWindow(searchEdit.getWindowToken(), 0);

View File

@@ -23,6 +23,7 @@ public class PushSubscription extends BaseModel implements Cloneable{
", endpoint='"+endpoint+'\''+
", alerts="+alerts+
", serverKey='"+serverKey+'\''+
", policy="+policy+
'}';
}

View File

@@ -99,7 +99,7 @@ public class CustomEmojiPopupKeyboard extends PopupKeyboard{
Optional<Emoji> element = allAvailableEmojis.stream().filter(e -> e.shortcode.equals(emojiCode)).findFirst();
element.ifPresent(recentEmojiList::add);
}
emojis.add(0, new EmojiCategory(activity.getString(R.string.sk_emoji_recent), recentEmojiList));
emojis.add(0, new EmojiCategory(activity.getString(R.string.mo_emoji_recent), recentEmojiList));
}
for(EmojiCategory category:emojis)

View File

@@ -1,7 +1,18 @@
package org.joinmastodon.android.ui.displayitems;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ScrollView;
import android.widget.TextView;
import org.joinmastodon.android.R;
import org.joinmastodon.android.fragments.BaseStatusListFragment;
@@ -10,6 +21,7 @@ import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.ui.PhotoLayoutHelper;
import me.grishka.appkit.imageloader.requests.UrlImageLoaderRequest;
import me.grishka.appkit.utils.CubicBezierInterpolator;
public class PhotoStatusDisplayItem extends ImageStatusDisplayItem{
public PhotoStatusDisplayItem(String parentID, Status status, Attachment photo, BaseStatusListFragment parentFragment, int index, int totalPhotos, PhotoLayoutHelper.TiledLayoutResult tiledLayout, PhotoLayoutHelper.TiledLayoutResult.Tile thisTile){
@@ -23,9 +35,109 @@ public class PhotoStatusDisplayItem extends ImageStatusDisplayItem{
}
public static class Holder extends ImageStatusDisplayItem.Holder<PhotoStatusDisplayItem>{
private final FrameLayout altTextWrapper;
private final TextView altTextButton;
private final View altTextScroller;
private final ImageButton altTextClose;
private final TextView altText;
private boolean altTextShown;
private AnimatorSet currentAnim;
public Holder(Activity activity, ViewGroup parent){
super(activity, R.layout.display_item_photo, parent);
altTextWrapper=findViewById(R.id.alt_text_wrapper);
altTextButton=findViewById(R.id.alt_button);
altTextScroller=findViewById(R.id.alt_text_scroller);
altTextClose=findViewById(R.id.alt_text_close);
altText=findViewById(R.id.alt_text);
altTextButton.setOnClickListener(this::onShowHideClick);
altTextClose.setOnClickListener(this::onShowHideClick);
// altTextScroller.setNestedScrollingEnabled(true);
}
@Override
public void onBind(ImageStatusDisplayItem item){
super.onBind(item);
altTextShown=false;
if(currentAnim!=null)
currentAnim.cancel();
altTextScroller.setVisibility(View.GONE);
altTextClose.setVisibility(View.GONE);
altTextButton.setVisibility(View.VISIBLE);
if(TextUtils.isEmpty(item.attachment.description)){
altTextWrapper.setVisibility(View.GONE);
}else{
altTextWrapper.setVisibility(View.VISIBLE);
altText.setText(item.attachment.description);
}
}
private void onShowHideClick(View v){
boolean show=v.getId()==R.id.alt_button;
if(altTextShown==show)
return;
if(currentAnim!=null)
currentAnim.cancel();
altTextShown=show;
if(show){
altTextScroller.setVisibility(View.VISIBLE);
altTextClose.setVisibility(View.VISIBLE);
}else{
altTextButton.setVisibility(View.VISIBLE);
// Hide these views temporarily so FrameLayout measures correctly
altTextScroller.setVisibility(View.GONE);
altTextClose.setVisibility(View.GONE);
}
// This is the current size...
int prevLeft=altTextWrapper.getLeft();
int prevRight=altTextWrapper.getRight();
int prevTop=altTextWrapper.getTop();
altTextWrapper.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener(){
@Override
public boolean onPreDraw(){
altTextWrapper.getViewTreeObserver().removeOnPreDrawListener(this);
// ...and this is after the layout pass, right now the FrameLayout has its final size, but we animate that change
if(!show){
// Show these views again so they're visible for the duration of the animation.
// No one would notice they were missing during measure/layout.
altTextScroller.setVisibility(View.VISIBLE);
altTextClose.setVisibility(View.VISIBLE);
}
AnimatorSet set=new AnimatorSet();
set.playTogether(
ObjectAnimator.ofInt(altTextWrapper, "left", prevLeft, altTextWrapper.getLeft()),
ObjectAnimator.ofInt(altTextWrapper, "right", prevRight, altTextWrapper.getRight()),
ObjectAnimator.ofInt(altTextWrapper, "top", prevTop, altTextWrapper.getTop()),
ObjectAnimator.ofFloat(altTextButton, View.ALPHA, show ? 1f : 0f, show ? 0f : 1f),
ObjectAnimator.ofFloat(altTextScroller, View.ALPHA, show ? 0f : 1f, show ? 1f : 0f),
ObjectAnimator.ofFloat(altTextClose, View.ALPHA, show ? 0f : 1f, show ? 1f : 0f)
);
set.setDuration(300);
set.setInterpolator(CubicBezierInterpolator.DEFAULT);
set.addListener(new AnimatorListenerAdapter(){
@Override
public void onAnimationEnd(Animator animation){
if(show){
altTextButton.setVisibility(View.GONE);
}else{
altTextScroller.setVisibility(View.GONE);
altTextClose.setVisibility(View.GONE);
}
currentAnim=null;
}
});
set.start();
currentAnim=set;
return true;
}
});
}
}
}

View File

@@ -0,0 +1,58 @@
package org.joinmastodon.android.ui.views;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
import android.widget.ScrollView;
public class NestableScrollView extends ScrollView{
private float downY, touchslop;
private boolean didDisallow;
public NestableScrollView(Context context){
super(context);
init();
}
public NestableScrollView(Context context, AttributeSet attrs){
super(context, attrs);
init();
}
public NestableScrollView(Context context, AttributeSet attrs, int defStyleAttr){
super(context, attrs, defStyleAttr);
init();
}
public NestableScrollView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes){
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
private void init(){
touchslop=ViewConfiguration.get(getContext()).getScaledTouchSlop();
}
@Override
public boolean onTouchEvent(MotionEvent ev){
if(ev.getAction()==MotionEvent.ACTION_DOWN){
if(canScrollVertically(-1) || canScrollVertically(1)){
getParent().requestDisallowInterceptTouchEvent(true);
didDisallow=true;
}else{
didDisallow=false;
}
downY=ev.getY();
}else if(didDisallow && ev.getAction()==MotionEvent.ACTION_MOVE){
if(Math.abs(downY-ev.getY())>=touchslop){
if(!canScrollVertically((int)(downY-ev.getY()))){
didDisallow=false;
getParent().requestDisallowInterceptTouchEvent(false);
}
}
}
return super.onTouchEvent(ev);
}
}

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#D9000000"/>
<corners android:radius="4dp"/>
</shape>

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#000000"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
</vector>

View File

@@ -19,8 +19,8 @@
<ImageView
android:id="@+id/send_error"
android:tooltipText="@string/sk_sending_error"
android:contentDescription="@string/sk_sending_error"
android:tooltipText="@string/mo_sending_error"
android:contentDescription="@string/mo_sending_error"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"

View File

@@ -124,6 +124,7 @@
android:id="@+id/bot_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:importantForAccessibility="no"
android:layout_marginTop="2dp"
android:src="@drawable/ic_fluent_bot_16_filled" />

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<org.joinmastodon.android.ui.views.ImageAttachmentFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
@@ -10,4 +11,62 @@
android:layout_gravity="center"
android:scaleType="centerCrop"/>
<!-- This is hidden from screenreaders because that same alt text is set as content description on the ImageView -->
<FrameLayout
android:id="@+id/alt_text_wrapper"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|bottom"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:importantForAccessibility="noHideDescendants"
android:background="@drawable/bg_image_alt_overlay">
<TextView
android:id="@+id/alt_button"
android:layout_width="40dp"
android:layout_height="22dp"
android:textAppearance="@style/m3_label_large"
android:textColor="#FFF"
android:gravity="center"
android:includeFontPadding="false"
android:text="ALT"/>
<ImageButton
android:id="@+id/alt_text_close"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="end|top"
android:src="@drawable/ic_baseline_close_24"
android:tint="#FFF"
android:background="?android:selectableItemBackgroundBorderless"/>
<org.joinmastodon.android.ui.views.NestableScrollView
android:id="@+id/alt_text_scroller"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="40dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/alt_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:textAppearance="@style/m3_body_medium"
android:textColor="#FFF"
tools:text="Alt text goes here"/>
</LinearLayout>
</org.joinmastodon.android.ui.views.NestableScrollView>
</FrameLayout>
</org.joinmastodon.android.ui.views.ImageAttachmentFrameLayout>

View File

@@ -155,7 +155,7 @@
android:layout_marginBottom="8dp"
android:background="@drawable/bg_poll_option_clickable"
android:outlineProvider="background"
android:contentDescription="@string/sk_poll_option_add"
android:contentDescription="@string/mo_poll_option_add"
android:elevation="2dp">
<ImageView
android:id="@+id/add_poll_option_icon"

View File

@@ -40,6 +40,14 @@
android:backgroundTint="?colorM3SurfaceVariant"
android:hint="@string/search_communities"/>
<View
android:id="@+id/focus_thing"
android:layout_width="1dp"
android:layout_height="1dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:importantForAccessibility="no"/>
<ImageButton
android:id="@+id/btn_back"
android:layout_width="24dp"

View File

@@ -278,7 +278,7 @@
android:paddingHorizontal="16dp"
android:elevation="0dp"
android:visibility="gone"
android:hint="@string/sk_personal_note"/>
android:hint="@string/mo_personal_note"/>
<Button
android:id="@+id/note_edit_confirm"
@@ -289,8 +289,8 @@
android:visibility="invisible"
android:backgroundTint="?colorBackgroundLightest"
android:layout_gravity="right|center_vertical"
android:tooltipText="@string/sk_personal_note_confirm"
android:contentDescription="@string/sk_personal_note_confirm"
android:tooltipText="@string/mo_personal_note_confirm"
android:contentDescription="@string/mo_personal_note_confirm"
android:drawableStart="@drawable/ic_fluent_checkmark_24_regular"
/>
</FrameLayout>
@@ -361,8 +361,8 @@
</org.joinmastodon.android.ui.views.NestedRecyclerScrollView>
<ImageButton
android:tooltipText="@string/sk_fab_compose"
android:contentDescription="@string/sk_fab_compose"
android:tooltipText="@string/mo_fab_compose"
android:contentDescription="@string/mo_fab_compose"
android:id="@+id/fab"
style="@style/Widget.Mastodon.Button.Compose"/>
</FrameLayout>

View File

@@ -27,7 +27,7 @@
android:paddingHorizontal="16dp"
android:elevation="0dp"
android:visibility="gone"
android:hint="@string/sk_personal_note"/>
android:hint="@string/mo_personal_note"/>
<ImageButton
android:id="@+id/note_edit_confirm"
@@ -39,8 +39,8 @@
android:visibility="invisible"
android:layout_marginEnd="20dp"
android:layout_gravity="right|center_vertical"
android:tooltipText="@string/sk_personal_note_confirm"
android:contentDescription="@string/sk_personal_note_confirm" />
android:tooltipText="@string/mo_personal_note_confirm"
android:contentDescription="@string/mo_personal_note_confirm" />
</FrameLayout>

View File

@@ -21,7 +21,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="16dp"
android:text="@string/sk_welcome_text" />
android:text="@string/mo_welcome_text" />
<View
android:layout_width="match_parent"

View File

@@ -29,7 +29,7 @@
android:layout_marginBottom="16dp"
android:layout_weight="1"
android:textAppearance="@style/m3_body_medium"
tools:text="@string/sk_update_available" />
tools:text="@string/mo_update_available" />
<FrameLayout
android:layout_width="wrap_content"

View File

@@ -21,8 +21,8 @@
android:id="@+id/empty"/>
<ImageButton
android:contentDescription="@string/sk_fab_compose"
android:tooltipText="@string/sk_fab_compose"
android:contentDescription="@string/mo_fab_compose"
android:tooltipText="@string/mo_fab_compose"
android:id="@+id/fab"
style="@style/Widget.Mastodon.Button.Compose"/>
</FrameLayout>

View File

@@ -8,5 +8,5 @@
<item android:id="@+id/brown_color" android:title="@string/sk_color_palette_brown"/>
<item android:id="@+id/yellow_color" android:title="@string/sk_color_palette_yellow"/>
<item android:id="@+id/red_color" android:title="@string/sk_color_palette_red"/>
<item android:id="@+id/nord_color" android:title="@string/sk_color_palette_nord"/>
<item android:id="@+id/nord_color" android:title="@string/mo_color_palette_nord"/>
</menu>

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/followed_hashtags" android:title="@string/sk_hashtags_you_follow" android:icon="@drawable/ic_fluent_number_symbol_24_regular" android:showAsAction="always"/>
<item android:id="@+id/manage_user_lists" android:title="@string/sk_your_lists" android:icon="@drawable/ic_fluent_people_list_24_regular" android:showAsAction="always"/>
<item android:id="@+id/followed_hashtags" android:title="@string/sk_hashtags_you_follow" android:icon="@drawable/ic_fluent_number_symbol_24_regular" />
<item android:id="@+id/manage_user_lists" android:title="@string/sk_your_lists" android:icon="@drawable/ic_fluent_people_list_24_regular" />
<item android:id="@+id/bookmarks" android:title="@string/bookmarks" android:icon="@drawable/ic_fluent_bookmark_multiple_24_regular" android:showAsAction="always"/>
<item android:id="@+id/favorites" android:title="@string/your_favorites" android:icon="@drawable/ic_fluent_star_24_regular" android:showAsAction="always"/>
<item android:id="@+id/scheduled" android:title="@string/sk_unsent_posts" android:icon="@drawable/ic_fluent_drafts_24_regular" android:showAsAction="always"/>
<item android:id="@+id/share" android:title="@string/share_user" android:icon="@drawable/ic_fluent_share_24_regular" android:showAsAction="always"/>
<item android:id="@+id/share" android:title="@string/share_user" android:icon="@drawable/ic_fluent_share_24_regular" />
</menu>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -11,11 +11,11 @@
<string name="sk_settings_load_new_posts">Carrega automàticament les publicacions noves</string>
<string name="sk_federated_timeline">Federació</string>
<string name="sk_federated_timeline_info_banner">Aquestes són les publicacions més recents de gent de la teua federació.</string>
<string name="sk_update_ready">Moshidon %s s\'ha baixat i està preparat per a instal·lar-se.</string>
<string name="sk_update_ready">Megalodon %s s\'ha baixat i està preparat per a instal·lar-se.</string>
<string name="sk_accept_follow_request">Accepta la sol·licitud</string>
<string name="sk_disable_marquee">Desactiva el desplaçament de text a les barres de títol</string>
<string name="sk_user_post_notifications_on">Notificacions activades per a publicacions de: %s</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_pin_post">Fixa al perfil</string>
<string name="sk_confirm_pin_post_title">Fixar al perfil</string>
<string name="sk_confirm_delete_and_redraft">Segur que vols eliminar i tornar a escriure aquesta publicació\?</string>
@@ -25,10 +25,10 @@
<string name="sk_visibility_unlisted">No llistat</string>
<string name="sk_settings_show_boosts">Mostra els impulsos</string>
<string name="sk_settings_show_interaction_counts">Mostra el recompte d\'interaccions</string>
<string name="sk_settings_app_version">Moshidon v. %1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v. %1$s (%2$d)</string>
<string name="sk_user_post_notifications_off">Notificacions desactivades per a publicacions de: %s</string>
<string name="sk_mark_media_as_sensitive">Marca el contingut com a sensible</string>
<string name="sk_update_available">Moshidon %s està preparat per a baixar-se.</string>
<string name="sk_update_available">Megalodon %s està preparat per a baixar-se.</string>
<string name="sk_check_for_update">Comprova actualitzacions</string>
<string name="sk_no_update_available">No hi ha cap actualització disponible</string>
<string name="sk_list_timelines">Llistes</string>
@@ -36,7 +36,7 @@
<string name="sk_reject_follow_request">Rebutja la sol·licitud</string>
<string name="sk_lists_with_user">Edita les llistes amb %s</string>
<string name="sk_settings_always_reveal_content_warnings">Mostra sempre els avisos de contingut</string>
<string name="sk_settings_contribute">Contribueix a Moshidon</string>
<string name="sk_settings_contribute">Contribueix a Megalodon</string>
<string name="sk_settings_show_federated_timeline">Mostra la línia de temps federada</string>
<string name="sk_notification_type_status">Publicacions</string>
<string name="sk_notify_posts">Notificacions de publicacions</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -18,7 +18,7 @@
<string name="sk_confirm_delete_draft">Jste si jistý, že chcete tento navržený příspěvek smazat\?</string>
<string name="sk_confirm_delete_scheduled_post">Určitě chcete tento naplánovaný příspěvek smazat\?</string>
<string name="sk_delete_list_confirm">Opravdu chcete tento seznam odstranit\?</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_pinned_posts">Připnutý</string>
<string name="sk_delete_and_redraft">vymazat a přepracovat</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -10,7 +10,7 @@
<string name="sk_settings_show_replies">Dangos ymatebion</string>
<string name="sk_list_timelines">Rhestri</string>
<string name="sk_settings_always_reveal_content_warnings">Datguddio rhybuddion cynnwys bob tro</string>
<string name="sk_settings_contribute">Cyfrannu at Moshidon</string>
<string name="sk_settings_contribute">Cyfrannu at Megalodon</string>
<string name="sk_notification_type_status">Negeseuon</string>
<string name="sk_color_palette_material3">System</string>
<string name="sk_color_palette_pink">Pinc</string>
@@ -19,13 +19,13 @@
<string name="sk_color_palette_blue">Glas</string>
<string name="sk_color_palette_brown">Brown</string>
<string name="sk_color_palette_red">Coch</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_confirm_pin_post">Hoffech chi binio\'r neges hon i\'ch proffil\?</string>
<string name="sk_visibility_unlisted">Heb ei restru</string>
<string name="sk_settings_load_new_posts">Llwytho negeseuon newydd yn ddiofyn</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_update_available">Mae Moshidon %s yn barod i\'w lawrlwytho.</string>
<string name="sk_update_ready">Mae Moshidon %s wedi ei lawrlwytho ac yn barod i\'w osod.</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_update_available">Mae Megalodon %s yn barod i\'w lawrlwytho.</string>
<string name="sk_update_ready">Mae Megalodon %s wedi ei lawrlwytho ac yn barod i\'w osod.</string>
<string name="sk_color_palette_yellow">Melyn</string>
<string name="sk_translate_post">Cyfieithu</string>
<string name="sk_translate_show_original">Dangos y gwreiddiol</string>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mo_app_name" translatable="false">Moshidon</string>
<string name="mo_color_palette_nord">Nord</string>
<string name="mo_app_username" translatable="false">\@moshidon</string>
<string name="mo_disable_dividers">Beitrags Trennung deaktivieren</string>
<string name="mo_relocate_publish_button">Veröffentlichen-Schaltfläche verschieben</string>
<string name="mo_hide_compose_button_while_scrolling_setting">Veröffentlichen Schaltfläche beim scrollen ausblenden</string>
<string name="mo_welcome_text">Moshidon sagt Hi! gib den Domain-Namen deiner Heimat-Instanz unten ein.</string>
<!-- Setting this as non-translatable as it simply doesnt change with language-->
<string name="mo_settings_app_version" translatable="false">Moshidon v%1$s (%2$d)</string>
<string name="mo_personal_note">Notiz zu diesem Profil hinzufügen</string>
<string name="mo_personal_note_confirm">Änderungen der Notiz bestätigen</string>
<string name="mo_personal_note_update_failed">Speichern der Notiz fehlgeschlagen</string>
<string name="mo_settings_contribute">Zu Megalodon beitragen</string>
<string name="mo_update_available">Moshidon %s ist bereit zum herunterladen.</string>
<string name="mo_update_ready">Moshidon %s ist heruntergeladen und bereit zur Installation.</string>
<string name="mo_no_image_desc_title">Keine Bildbeschreibung</string>
<string name="mo_no_image_desc">Die enthaltenen Bilder haben keine Beschreibung. Bitte füge eine Beschreibung hinzu, damit auch sehbehinderte Personen teilnehmen können.</string>
<string name="mo_emoji_recent">Kürzlich verwendet</string>
<string name="mo_clear_recent_emoji">Kürzlich verwendete Emojis löschen</string>
<string name="mo_disable_relocate_publish_button_to_enable_customization">Deaktiviere die Funktion Veröffentlichen-Schaltfläche verschieben, um eine Anpassung zu ermöglichen</string>
<!-- accessibility labels-->
<string name="mo_poll_option_add">Neue Umfrageoption hinzufügen</string>
<string name="mo_fab_compose">Verfassen</string>
<string name="mo_sending_error">Fehler beim Veröffentlichen</string>
</resources>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_pinned_posts">Angeheftet</string>
<string name="sk_delete_and_redraft">Löschen und neu erstellen</string>
<string name="sk_confirm_delete_and_redraft_title">Beitrag löschen und neu erstellen</string>
@@ -19,30 +19,27 @@
<string name="sk_settings_show_boosts">Geteilte Beiträge anzeigen</string>
<string name="sk_settings_load_new_posts">Automatisch neue Beiträge laden</string>
<string name="sk_settings_show_interaction_counts">Interaktions-Anzahlen anzeigen</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_mark_media_as_sensitive">Medien als sensibel markieren</string>
<string name="sk_user_post_notifications_on">Benachrichtigungen über Beiträge von %s aktiviert</string>
<string name="sk_user_post_notifications_off">Benachrichtigungen über Beiträge von %s deaktiviert</string>
<string name="sk_federated_timeline">Föderation</string>
<string name="sk_federated_timeline_info_banner">Das sind die neuesten Beiträge von Personen, die in der Föderation deines Servers sind.</string>
<string name="sk_update_available">Moshidon %s ist zum Herunterladen bereit.</string>
<string name="sk_update_ready">Moshidon %s wurde heruntergeladen und kann jetzt installiert werden.</string>
<string name="sk_changelog">Änderungsverlauf:</string>
<string name="sk_update_available">Megalodon %s ist zum Herunterladen bereit.</string>
<string name="sk_update_ready">Megalodon %s wurde heruntergeladen und kann jetzt installiert werden.</string>
<string name="sk_check_for_update">Auf Update prüfen</string>
<string name="sk_no_update_available">Kein Update verfügbar</string>
<string name="sk_list_timelines">Listen</string>
<string name="sk_follow_requests">Folgeanfragen</string>
<string name="sk_accept_follow_request">Folgeanfrage akzeptieren</string>
<string name="sk_reject_follow_request">Folgeanfrage ablehnen</string>
<string name="sk_lists_with_user">Listen mit %s bearbeiten</string>
<string name="sk_lists_with_user">Listen mit %s</string>
<string name="sk_settings_always_reveal_content_warnings">Inhaltswarnungen immer ausklappen</string>
<string name="sk_disable_marquee">Laufschrift in Titelleisten deaktivieren</string>
<string name="sk_disable_dividers">Beitrags Trennung deaktivieren</string>
<string name="sk_relocate_publish_button">Veröffentlichen Schaltfläche verschieben</string>
<string name="sk_settings_contribute">Zu Moshidon beitragen</string>
<string name="sk_settings_contribute">Zu Megalodon beitragen</string>
<string name="sk_settings_show_federated_timeline">Föderierte Timeline anzeigen</string>
<string name="sk_notification_type_status">Beiträge</string>
<string name="sk_notify_posts">Beitrags-Benachrichtigungen</string>
<string name="sk_notify_posts">Beitrags Benachrichtigungen</string>
<string name="sk_settings_color_palette">Farbschema</string>
<string name="sk_color_palette_material3">System</string>
<string name="sk_color_palette_pink">Pink</string>
@@ -52,7 +49,6 @@
<string name="sk_color_palette_brown">Braun</string>
<string name="sk_color_palette_red">Rot</string>
<string name="sk_color_palette_yellow">Gelb</string>
<string name="sk_color_palette_nord">Nord</string>
<string name="sk_poll_allow_multiple">Mehrfachantworten erlauben</string>
<string name="sk_translated_using">Übersetzt mit %s</string>
<string name="sk_translate_post">Übersetzen</string>
@@ -63,13 +59,11 @@
<string name="sk_clear_recent_languages">Zuletzt verwendete Sprachen leeren</string>
<string name="sk_confirm_clear_recent_languages">Sicher, dass du die Liste der zuletzt verwendeten Sprachen leeren willst\?</string>
<string name="sk_welcome_title">Willkommen!</string>
<string name="sk_welcome_text">Moshidon sagt Hi! gib den Domain-Namen deiner Heimat-Instanz unten ein.</string>
<string name="sk_welcome_text">Der Hai sagt Hi! Um anzufangen, gib den Domain-Namen deiner Heimat-Instanz unten ein.</string>
<string name="sk_example_domain">beispiel.social</string>
<string name="sk_tabs_disable_swipe">Wischen zwischen Tabs deaktivieren</string>
<string name="sk_settings_profile">Profil einrichten</string>
<string name="sk_personal_note">Notiz zu diesem Profil hinzufügen</string>
<string name="sk_personal_note_confirm">Änderungen der Notiz bestätigen</string>
<string name="sk_personal_note_update_failed">Speichern der Notiz fehlgeschlagen</string>
<string name="sk_settings_posting">Einstellungen für Beiträge</string>
<string name="sk_settings_filters">Filter konfigurieren</string>
<string name="sk_settings_auth">Sicherheits-Einstellungen</string>
@@ -95,7 +89,6 @@
<string name="sk_quote_post">Drüberkommentieren</string>
<string name="sk_hashtags_you_follow">Hashtags, denen du folgst</string>
<string name="sk_copy_link_to_post">Link zum Beitrag kopieren</string>
<string name="sk_open_in_account">In anderem Konto öffnen</string>
<string name="sk_open_with_account">Mit anderem Konto öffnen</string>
<string name="sk_resource_not_found">Ressource nicht gefunden</string>
<string name="sk_bookmark_as">Lesezeichen mit anderem Konto</string>
@@ -132,13 +125,6 @@
<string name="sk_compose_no_schedule">Nicht planen</string>
<string name="sk_compose_no_draft">Nicht entwerfen</string>
<string name="sk_settings_reduce_motion">Bewegung in Animationen reduzieren</string>
<string name="sk_bot_account">Dies ist ein Bot-Konto</string>
<string name="sk_no_image_desc_title">Keine Bildbeschreibung</string>
<string name="sk_no_image_desc">Die enthaltenen Bilder haben keine Beschreibung. Bitte füge eine Beschreibung hinzu, damit auch sehbehinderte Personen teilnehmen können.</string>
<string name="sk_emoji_recent">Kürzlich verwendet</string>
<string name="sk_clear_recent_emoji">Kürzlich verwendete Emojis löschen</string>
<string name="sk_disable_relocate_publish_button_to_enable_customization">Deaktiviere die Funktion "Veröffentlichen Schaltfläche verschieben", um eine Anpassung zu ermöglichen.</string>
<string name="sk_keep_only_latest_notification">Nur neueste Benachrichtigung behalten</string>
<string name="sk_announcements">Ankündigungen</string>
<string name="sk_mark_as_read">Als gelesen markieren</string>
<string name="sk_settings_about_instance">Über die Instanz</string>
@@ -162,9 +148,90 @@
<string name="sk_remove_follower_confirm">%s als Follower_in entfernen\? Die Person wird dabei blockiert und gleich wieder freigegeben.</string>
<string name="sk_do_remove_follower">Entfernen</string>
<string name="sk_remove_follower_success">Follower_in erfolgreich entfernt</string>
<!-- accessibility labels-->
<string name="sk_poll_option_add">Neue Umfrageoption hinzufügen</string>
<string name="sk_fab_compose">Verfassen</string>
<string name="sk_sending_error">Fehler beim Veröffentlichen</string>
<string name="sk_changelog">Änderungsverlauf</string>
<string name="sk_alt_text_missing_title">Fehlende Bildbeschreibung</string>
<string name="sk_alt_text_missing">Mindestens ein Anhang hat keine Beschreibung.</string>
<string name="sk_publish_anyway">Trotzdem publizieren</string>
<string name="sk_settings_disable_alt_text_reminder">Bildbeschreibungs-Erinnerung deaktivieren</string>
<string name="sk_notify_posts_info_banner">Wenn du Beitrags Benachrichtigungen für jemanden aktiviert hast, erscheinen seine neuen Beiträge hier.</string>
<string name="sk_timelines">Timelines</string>
<string name="sk_timeline_posts">Beiträge</string>
<string name="sk_timelines_add">Hinzufügen</string>
<string name="sk_timeline">Timeline</string>
<string name="sk_list">Liste</string>
<string name="sk_hashtag">Hashtag</string>
<string name="sk_pin_timeline">Timeline anpinnen</string>
<string name="sk_unpin_timeline">Timeline lösen</string>
<string name="sk_pinned_timeline">An Start anpinnen</string>
<string name="sk_unpinned_timeline">Von Start lösen</string>
<string name="sk_remove">Entfernen</string>
<string name="sk_timeline_icon">Icon</string>
<string name="sk_icon_heart">Herz</string>
<string name="sk_icon_star">Stern</string>
<string name="sk_icon_city">Stadt</string>
<string name="sk_icon_cat">Katze</string>
<string name="sk_icon_dog">Hund</string>
<string name="sk_icon_rabbit">Hase</string>
<string name="sk_icon_turtle">Schildkröte</string>
<string name="sk_icon_balloon">Ballon</string>
<string name="sk_icon_image">Bild</string>
<string name="sk_icon_bot">Bot</string>
<string name="sk_icon_language">Sprache</string>
<string name="sk_icon_location">Standort</string>
<string name="sk_icon_megaphone">Megaphon</string>
<string name="sk_icon_microphone">Mikrophon</string>
<string name="sk_icon_microscope">Mikroskop</string>
<string name="sk_icon_keyboard">Tastatur</string>
<string name="sk_icon_coffee">Kaffee</string>
<string name="sk_icon_laugh">Lachen</string>
<string name="sk_icon_news">Nachrichten</string>
<string name="sk_icon_pi">Pi</string>
<string name="sk_icon_color_palette">Farbpalette</string>
<string name="sk_icon_academic_cap">Doktorhut</string>
<string name="sk_icon_tag">Etikett</string>
<string name="sk_icon_stethoscope">Stethoskop</string>
<string name="sk_icon_weather">Wetter</string>
<string name="sk_icon_games">Spiele</string>
<string name="sk_icon_code">Code</string>
<string name="sk_icon_light_bulb">Leuchtmittel</string>
<string name="sk_icon_train">Zug</string>
<string name="sk_icon_clapper_board">Filmklappe</string>
<string name="sk_icon_leaves">Blätter</string>
<string name="sk_icon_sport">Sport</string>
<string name="sk_icon_aperture">Blende</string>
<string name="sk_icon_music">Musik</string>
<string name="sk_icon_people">Personen</string>
<string name="sk_icon_health">Gesundheit</string>
<string name="sk_icon_important">Wichtig</string>
<string name="sk_icon_chat">Unterhaltung</string>
<string name="sk_icon_shield">Schild</string>
<string name="sk_icon_book">Buch</string>
<string name="sk_icon_bicycle">Fahrrad</string>
<string name="sk_icon_map">Karte</string>
<string name="sk_icon_math_formula">Formel</string>
<string name="sk_icon_backpack">Rucksack</string>
<string name="sk_icon_briefcase">Aktenkoffer</string>
<string name="sk_icon_fire">Feuer</string>
<string name="sk_icon_bug">Käfer</string>
<string name="sk_icon_pizza">Pizza</string>
<string name="sk_icon_gavel">Hammer</string>
<string name="sk_icon_gauge">Gage</string>
<string name="sk_icon_headphones">Kopfhörer</string>
<string name="sk_icon_human">Mensch</string>
<string name="sk_icon_globe">Globus</string>
<string name="sk_icon_pin">Pin</string>
<string name="sk_edit_timeline">Timeline bearbeiten</string>
<string name="sk_edit_timelines">Timelines bearbeiten</string>
<string name="sk_alt_button">ALT</string>
<string name="sk_post_edited">bearbeitet</string>
<string name="sk_notification_type_update">Bearbeitete Beiträge</string>
<string name="sk_notify_update">Bearbeitet einen geteilten Beitrag</string>
<string name="sk_attach_file">Datein anhängen</string>
<string name="sk_searching">Suche…</string>
<string name="sk_no_results">Keine Ergebnisse</string>
<string name="sk_save_draft">Entwurf speichern\?</string>
<string name="sk_save_draft_message">Möchtest du die Änderungen an diesem Entwurf speichern oder jetzt veröffentlichen\?</string>
<string name="sk_no_alt_text">Kein Bildbeschreibung verfügbar</string>
<string name="sk_settings_show_alt_indicator">Indikator für Bildbeschreibungen</string>
<string name="sk_settings_show_no_alt_indicator">Indikator für fehlende Bildbeschreibungen</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mo_color_palette_nord">Nord</string>
<string name="mo_disable_dividers">Desactivar divisores de publicaciones</string>
<string name="mo_relocate_publish_button">Recolocar botón de publicación</string>
<string name="mo_hide_compose_button_while_scrolling_setting">Esconder botón de escritura al deslizar</string>
<string name="mo_welcome_text">Para empezar introduce el nombre del dominio de tu instancia debajo, por favor.</string>
<string name="mo_personal_note">Añade una nota sobre este perfil</string>
<string name="mo_personal_note_confirm">Confirmar cambios en la nota</string>
<string name="mo_personal_note_update_failed">Fallo al guardar la nota</string>
<string name="mo_update_available">Moshidon %s se puede descargar.</string>
<string name="mo_update_ready">Moshidon %s se ha descargado y se puede instalar.</string>
<string name="mo_no_image_desc_title">Sin descripción de imagen</string>
<string name="mo_emoji_recent">Usados recientemente</string>
<string name="mo_clear_recent_emoji">Borrar emojis usados recientemente</string>
<string name="mo_disable_relocate_publish_button_to_enable_customization">Desactiva \"Recolocar botón de publicación\" para poder personalizar</string>
<string name="mo_poll_option_add">Añadir nueva opción en la encuesta</string>
<string name="mo_fab_compose">Componer</string>
<string name="mo_sending_error">Error al publicar</string>
<string name="mo_settings_contribute">Contribuir en Moshidon</string>
<string name="mo_no_image_desc">Las imágenes incluidas no tienen descripción. Por favor, piénsate añadir una para permitir a las personas con discapacidad participar.</string>
</resources>

View File

@@ -11,7 +11,7 @@
<string name="sk_unpin_post">Desanclar del perfil</string>
<string name="sk_confirm_unpin_post_title">Desanclar publicación del perfil</string>
<string name="sk_confirm_unpin_post">¿Confirma que quiere desanclar esta publicación\?</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_unpinning">Desanclando publicación…</string>
<string name="sk_image_description">Descripción de la imagen</string>
<string name="sk_visibility_unlisted">Descatalogada</string>
@@ -24,8 +24,8 @@
<string name="sk_user_post_notifications_off">Desactivadas las notificaciones de posts para %s</string>
<string name="sk_federated_timeline">Federación</string>
<string name="sk_federated_timeline_info_banner">Estas son las publicaciones más recientes de las personas de su federación.</string>
<string name="sk_update_available">Moshidon %s está listo para descargar.</string>
<string name="sk_update_ready">Moshidon %s se ha descargado y está listo para instalarse.</string>
<string name="sk_update_available">Megalodon %s está listo para descargar.</string>
<string name="sk_update_ready">Megalodon %s se ha descargado y está listo para instalarse.</string>
<string name="sk_check_for_update">Buscar actualizaciones</string>
<string name="sk_no_update_available">No hay actualizaciones disponibles</string>
<string name="sk_list_timelines">Listas</string>
@@ -35,9 +35,9 @@
<string name="sk_lists_with_user">Editar listas con %s</string>
<string name="sk_settings_always_reveal_content_warnings">Mostrar siempre advertencias de contenido</string>
<string name="sk_disable_marquee">Desactivar desplazamiento de texto en barras del título</string>
<string name="sk_settings_contribute">Contribuir a Moshidon</string>
<string name="sk_settings_contribute">Contribuir a Megalodon</string>
<string name="sk_settings_show_federated_timeline">Mostrar cronología federada</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_notification_type_status">Publicaciones</string>
<string name="sk_notify_posts">Publicar notificaciones</string>
<string name="sk_settings_color_palette">Colores para los temas</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_delete_and_redraft">Ezabatu eta editatu</string>
<string name="sk_confirm_delete_and_redraft_title">Argitalpena ezabatu eta editatu</string>
<string name="sk_pin_post">Profilean finkatu</string>
@@ -15,12 +15,12 @@
<string name="sk_settings_show_replies">Erakutsi erantzunak</string>
<string name="sk_settings_show_boosts">Erakutsi bultzadak</string>
<string name="sk_settings_show_interaction_counts">Erakutsi interakzio zenbaketak</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_mark_media_as_sensitive">Markatu multimedia sentikor gisa</string>
<string name="sk_user_post_notifications_on">Gaitu %s-en argitalpen jakinarazpenak</string>
<string name="sk_federated_timeline">Federatua</string>
<string name="sk_federated_timeline_info_banner">Hauek dira zure federazioko pertsonen argitalpen berrienak.</string>
<string name="sk_update_available">Moshidon %s deskargatzeko prest dago.</string>
<string name="sk_update_available">Megalodon %s deskargatzeko prest dago.</string>
<string name="sk_check_for_update">Eguneraketak egiaztatu</string>
<string name="sk_no_update_available">Ez dago eguneraketarik eskuragarri</string>
<string name="sk_list_timelines">Zerrendak</string>
@@ -32,7 +32,7 @@
<string name="sk_lists_with_user">%s-ekin zerrendatu</string>
<string name="sk_settings_always_reveal_content_warnings">Erakutsi beti edukiaren abisua</string>
<string name="sk_disable_marquee">Desgaitu izenburu-barretako testuaren desplazamendua</string>
<string name="sk_settings_contribute">Lagundu Moshidon</string>
<string name="sk_settings_contribute">Lagundu Megalodon</string>
<string name="sk_translated_using">%s-ekin itzulia</string>
<string name="sk_post_language">Hizkuntza: %s</string>
<string name="sk_language_name">%s (%s)</string>
@@ -88,7 +88,7 @@
<string name="sk_confirm_unpin_post_title">Argitalpen finkatua kendu profiletik</string>
<string name="sk_settings_load_new_posts">Kargatu automatikoki argitalpen berriak</string>
<string name="sk_user_post_notifications_off">Desgaitu %s-en argitalpen jakinarazpenak</string>
<string name="sk_update_ready">Moshidon %s deskargatuta eta instalatzeko prest dago.</string>
<string name="sk_update_ready">Megalodon %s deskargatuta eta instalatzeko prest dago.</string>
<string name="sk_accept_follow_request">Onartu jarraitzeko eskaerak</string>
<string name="sk_reject_follow_request">Alboratu jarraitzeko eskaerak</string>
<string name="sk_settings_show_federated_timeline">Erakutsi federatutako denbora-lerroa</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -13,12 +13,12 @@
<string name="sk_settings_show_replies">Afficher les réponses</string>
<string name="sk_settings_show_boosts">Afficher les boosts</string>
<string name="sk_settings_load_new_posts">Charger automatiquement les nouveaux messages</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_mark_media_as_sensitive">Marquer le média comme sensible</string>
<string name="sk_user_post_notifications_on">Notifications de message activées pour %s</string>
<string name="sk_user_post_notifications_off">Désactivation des notifications de message pour %s</string>
<string name="sk_update_available">Moshidon %s est prête à être téléchargée.</string>
<string name="sk_update_ready">Moshidon %s est téléchargée et prête à être installée.</string>
<string name="sk_update_available">Megalodon %s est prête à être téléchargée.</string>
<string name="sk_update_ready">Megalodon %s est téléchargée et prête à être installée.</string>
<string name="sk_check_for_update">Vérifier les mises à jour</string>
<string name="sk_no_update_available">Pas de mise a jour disponible</string>
<string name="sk_list_timelines">Listes</string>
@@ -28,9 +28,9 @@
<string name="sk_lists_with_user">Modifier les listes avec %s</string>
<string name="sk_settings_always_reveal_content_warnings">Toujours afficher les avertissements de contenu</string>
<string name="sk_disable_marquee">Désactiver le défilement du texte dans les barres de titre</string>
<string name="sk_settings_contribute">Contribuez à Moshidon</string>
<string name="sk_settings_contribute">Contribuez à Megalodon</string>
<string name="sk_settings_show_federated_timeline">Afficher la timeline fédérée</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_delete_and_redraft">Supprimer et rééditer</string>
<string name="sk_pin_post">Épingler au profil</string>
<string name="sk_confirm_pin_post_title">Épingler le message au profil</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_delete_and_redraft">Eliminar e rescribir</string>
<string name="sk_confirm_delete_and_redraft">Tes a certeza de querere eliminar e rescribir esta publicación\?</string>
<string name="sk_pinned_posts">Fixado</string>
@@ -20,14 +20,14 @@
<string name="sk_settings_show_boosts">Mostrar promocións</string>
<string name="sk_settings_load_new_posts">Cargar automáticamente novas publicacións</string>
<string name="sk_settings_show_interaction_counts">Mostrar contadores de interaccións</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_mark_media_as_sensitive">Marcar multimedia como sensible</string>
<string name="sk_user_post_notifications_on">Acender notificación de publicación para %s</string>
<string name="sk_user_post_notifications_off">Apagar notificación de publicación para %s</string>
<string name="sk_federated_timeline">Federación</string>
<string name="sk_federated_timeline_info_banner">Estas son as publicacións máis recentes das persoas da túa federación.</string>
<string name="sk_update_available">Moshidon %s está lista para descargar.</string>
<string name="sk_update_ready">Moshidon %s foi descargada e está lista para instalar.</string>
<string name="sk_update_available">Megalodon %s está lista para descargar.</string>
<string name="sk_update_ready">Megalodon %s foi descargada e está lista para instalar.</string>
<string name="sk_check_for_update">Comprobar actualizacións</string>
<string name="sk_no_update_available">Non hai actualizacións</string>
<string name="sk_list_timelines">Listas</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -19,14 +19,14 @@
<string name="sk_unpinning">Unpinning poszt…</string>
<string name="sk_settings_show_replies">Válaszok megjelenítése</string>
<string name="sk_visibility_unlisted">Felsorolatlan</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_settings_load_new_posts">Automatikusan töltse be az új hozzászólásokat</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_user_post_notifications_on">Bekapcsoltuk a postai értesítéseket %s számára</string>
<string name="sk_user_post_notifications_off">Kikapcsoltam a postai értesítéseket %s számára</string>
<string name="sk_mark_media_as_sensitive">A média érzékenynek jelölése</string>
<string name="sk_federated_timeline">Föderáció</string>
<string name="sk_update_ready">A Moshidon %s letöltődött és telepítésre kész.</string>
<string name="sk_update_ready">A Megalodon %s letöltődött és telepítésre kész.</string>
<string name="sk_disable_marquee">A görgethető szöveg kikapcsolása a címsorokban</string>
<string name="sk_check_for_update">Frissítés ellenőrzése</string>
<string name="sk_no_update_available">Nincs frissítés elérhető</string>
@@ -35,7 +35,7 @@
<string name="sk_accept_follow_request">Követési kérés elfogadása</string>
<string name="sk_lists_with_user">%s-t tartalmazó listák</string>
<string name="sk_settings_always_reveal_content_warnings">Mindig fedje fel a tartalmi figyelmeztetéseket</string>
<string name="sk_settings_contribute">Hozzájárulni Moshidon</string>
<string name="sk_settings_contribute">Hozzájárulni Megalodon</string>
<string name="sk_settings_show_federated_timeline">Összevont idővonal megjelenítése</string>
<string name="sk_confirm_clear_recent_languages">Biztos, hogy törölni szeretné a nemrég használt nyelveket\?</string>
<string name="sk_available_languages">Elérhető nyelvek</string>
@@ -115,7 +115,7 @@
<string name="sk_welcome_text">A cápa tiszteleg előtted! A kezdéshez kérjük, adja meg az alábbiakban az otthoni domain nevét.</string>
<string name="sk_federated_timeline_info_banner">Ezek a szövetséged tagjainak legfrissebb bejegyzései.</string>
<string name="sk_confirm_delete_and_redraft">Biztos, hogy törölni és újrafogalmazni akarod ezt a hozzászólást\?</string>
<string name="sk_update_available">Moshidon %s készen áll a letöltésre.</string>
<string name="sk_update_available">Megalodon %s készen áll a letöltésre.</string>
<string name="sk_confirm_delete_and_redraft_title">Törlés és újraszövegezés Hozzászólás</string>
<string name="sk_image_description">Kép leírása</string>
<string name="sk_settings_show_boosts">Show boostok</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -12,23 +12,23 @@
<string name="sk_settings_show_boosts">Lihat boost</string>
<string name="sk_settings_load_new_posts">Muat kiriman baru secara otomatis</string>
<string name="sk_settings_show_interaction_counts">Tampilkan jumlah interaksi</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_user_post_notifications_on">Nyalakan notifikasi kiriman untuk %s</string>
<string name="sk_user_post_notifications_off">Matikan notifikasi kiriman untuk %s</string>
<string name="sk_federated_timeline">Federasi</string>
<string name="sk_federated_timeline_info_banner">Kiriman terbaru dari orang-orang di federasi anda.</string>
<string name="sk_update_available">Moshidon %s siap untuk diunduh.</string>
<string name="sk_update_ready">Moshidon %s telah diunduh dan siap dipasang.</string>
<string name="sk_update_available">Megalodon %s siap untuk diunduh.</string>
<string name="sk_update_ready">Megalodon %s telah diunduh dan siap dipasang.</string>
<string name="sk_check_for_update">Periksa pembaruan</string>
<string name="sk_no_update_available">Tidak ada pembaruan</string>
<string name="sk_list_timelines">Daftar</string>
<string name="sk_unpinning">Menghapus sematan kiriman…</string>
<string name="sk_accept_follow_request">Terima permintaan pengikut</string>
<string name="sk_reject_follow_request">Tolak permintaan pengikut</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_confirm_delete_and_redraft">Hapus dan tulis ulang kiriman ini\?</string>
<string name="sk_confirm_unpin_post">Apakah Anda yakin untuk menghapus sematan kiriman ini\?</string>
<string name="sk_settings_contribute">Berkontribusi ke Moshidon</string>
<string name="sk_settings_contribute">Berkontribusi ke Megalodon</string>
<string name="sk_pinned_posts">Disematkan</string>
<string name="sk_pin_post">Sematkan ke profil</string>
<string name="sk_visibility_unlisted">Tidak terdaftar</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -9,7 +9,7 @@
<string name="sk_color_palette_blue">Blu</string>
<string name="sk_color_palette_brown">Marrone</string>
<string name="sk_color_palette_yellow">Giallo</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_pinned_posts">Fissati</string>
<string name="sk_delete_and_redraft">Elimina e riscrivi</string>
<string name="sk_user_post_notifications_on">Attivate notifiche per i post di %s</string>
@@ -32,18 +32,18 @@
<string name="sk_settings_show_boosts">Mostra boost</string>
<string name="sk_settings_load_new_posts">Carica automaticamente nuovi post</string>
<string name="sk_settings_show_interaction_counts">Mostra conteggi interazioni</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_mark_media_as_sensitive">Segnala media come sensibile</string>
<string name="sk_federated_timeline">Federata</string>
<string name="sk_federated_timeline_info_banner">Questi sono i post più recenti dalle persone nella tua federazione.</string>
<string name="sk_update_available">Moshidon %s è pronto da scaricare.</string>
<string name="sk_update_ready">Moshidon %s è scaricato e pronto da installare.</string>
<string name="sk_update_available">Megalodon %s è pronto da scaricare.</string>
<string name="sk_update_ready">Megalodon %s è scaricato e pronto da installare.</string>
<string name="sk_check_for_update">Verifica aggiornamenti</string>
<string name="sk_no_update_available">Non ci sono aggiornamenti disponibili</string>
<string name="sk_list_timelines">Liste</string>
<string name="sk_settings_always_reveal_content_warnings">Apri sempre contenuti segnalati come sensibili</string>
<string name="sk_lists_with_user">Modifica liste con %s</string>
<string name="sk_settings_contribute">Contribuisci a Moshidon</string>
<string name="sk_settings_contribute">Contribuisci a Megalodon</string>
<string name="sk_settings_show_federated_timeline">Mostra timeline federata</string>
<string name="sk_disable_marquee">Disabilita scorrimento titoli</string>
<string name="sk_reject_follow_request">Rifiuta richiesta di seguirti</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -32,10 +32,10 @@
<string name="sk_lists_with_user">%s 님이 포함된 리스트 수정</string>
<string name="sk_settings_always_reveal_content_warnings">열람주의 게시물을 항상 펼치기</string>
<string name="sk_disable_marquee">제목 표시줄의 텍스트 스크롤 비활성화</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_update_available">Moshidon %s 버전을 다운로드할 수 있습니다.</string>
<string name="sk_update_ready">Moshidon %s 버전을 다운로드하였으며 설치할 수 있습니다.</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_update_available">Megalodon %s 버전을 다운로드할 수 있습니다.</string>
<string name="sk_update_ready">Megalodon %s 버전을 다운로드하였으며 설치할 수 있습니다.</string>
<string name="sk_settings_show_federated_timeline">연합 타임라인 표시</string>
<string name="sk_notification_type_status">게시물</string>
<string name="sk_notify_posts">게시물 알림</string>
@@ -46,7 +46,7 @@
<string name="sk_color_palette_blue">파란색</string>
<string name="sk_color_palette_brown">갈색</string>
<string name="sk_color_palette_yellow">노란색</string>
<string name="sk_settings_contribute">Moshidon에 기여</string>
<string name="sk_settings_contribute">Megalodon에 기여</string>
<string name="sk_poll_allow_multiple">다중 선택 허용</string>
<string name="sk_translate_post">번역하기</string>
<string name="sk_translate_show_original">원본 보기</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_delete_and_redraft">ဖျက်ပြီး ပြန်ရေးမည်</string>
<string name="sk_pin_post">ပရိုဖိုင်းတွင် ပင်တွဲမည်</string>
<string name="sk_pinning">ပင်တွဲနေသည်…</string>
@@ -10,12 +10,12 @@
<string name="sk_image_description">ပုံတွင်ပါဝင်သော အကြောင်းအရာ</string>
<string name="sk_visibility_unlisted">စာရင်းမလုပ်</string>
<string name="sk_settings_show_boosts">Boost များကို ပြသမည်</string>
<string name="sk_settings_app_version">Moshidon - ဗားရှင်း %1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon - ဗားရှင်း %1$s (%2$d)</string>
<string name="sk_mark_media_as_sensitive">ပုံ/ဗီဒီယိုအား ထိရှလွယ်သည်အဖြစ် မှတ်သားသည်</string>
<string name="sk_user_post_notifications_off">%s အတွက် ပို့စ်နိုတီများကို ပိတ်လိုက်သည်</string>
<string name="sk_federated_timeline">ဖက်ဒရေးရှင်း</string>
<string name="sk_update_available">Moshidon %s ကို ဒေါင်းလုဒ်ဆွဲလို့ရပါပြီ။</string>
<string name="sk_update_ready">Moshidon %s ကို ဒေါင်းလုဒ်ဆွဲပြီးပြီမလို့ အင်စတောလုပ်နိုင်ပါပြီ။</string>
<string name="sk_update_available">Megalodon %s ကို ဒေါင်းလုဒ်ဆွဲလို့ရပါပြီ။</string>
<string name="sk_update_ready">Megalodon %s ကို ဒေါင်းလုဒ်ဆွဲပြီးပြီမလို့ အင်စတောလုပ်နိုင်ပါပြီ။</string>
<string name="sk_no_update_available">မည်သည့်အပ်ဒိတ်မျှ မရှိသေးပါ</string>
<string name="sk_follow_requests">ဖော်လိုဝါအဖြစ် တောင်းဆိုမှုများ</string>
<string name="sk_accept_follow_request">ဖော်လိုဝါအဖြစ်တောင်းဆိုမှုကို လက်ခံမည်</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_pinned_posts">Vastgemaakt</string>
<string name="sk_delete_and_redraft">Verwijderen en opnieuw opstellen</string>
<string name="sk_confirm_delete_and_redraft_title">Verwijder en stel bericht opnieuw op</string>
@@ -20,14 +20,14 @@
<string name="sk_settings_show_boosts">Boosts weergeven</string>
<string name="sk_settings_load_new_posts">Automatisch nieuwe berichten laden</string>
<string name="sk_settings_show_interaction_counts">Aantal interacties weergeven</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_mark_media_as_sensitive">Markeer media als gevoelig</string>
<string name="sk_user_post_notifications_on">Berichtmeldingen aangezet voor %s</string>
<string name="sk_user_post_notifications_off">Berichtmeldingen uitgezet voor %s</string>
<string name="sk_federated_timeline">Federatie</string>
<string name="sk_federated_timeline_info_banner">Dit zijn de meest recente berichten van de mensen in jouw federatie.</string>
<string name="sk_update_available">Moshidon %s is klaar om te downloaden.</string>
<string name="sk_update_ready">Moshidon %s is gedownload en klaar om te installeren.</string>
<string name="sk_update_available">Megalodon %s is klaar om te downloaden.</string>
<string name="sk_update_ready">Megalodon %s is gedownload en klaar om te installeren.</string>
<string name="sk_check_for_update">Controleren op update</string>
<string name="sk_no_update_available">Geen update beschikbaar</string>
<string name="sk_list_timelines">Lijsten</string>
@@ -36,7 +36,7 @@
<string name="sk_lists_with_user">Bewerk lijsten met %s</string>
<string name="sk_settings_always_reveal_content_warnings">Onthul altijd inhoudswaarschuwingen</string>
<string name="sk_disable_marquee">Schakel scrollende tekst in titelbalken uit</string>
<string name="sk_settings_contribute">Bijdragen aan Moshidon</string>
<string name="sk_settings_contribute">Bijdragen aan Megalodon</string>
<string name="sk_settings_show_federated_timeline">Toon gefedereerde tijdlijn</string>
<string name="sk_notification_type_status">Berichten</string>
<string name="sk_notify_posts">Bericht meldingen</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -17,11 +17,11 @@
<string name="sk_user_post_notifications_off">Wyłączono powiadomienia dla wpisu %s</string>
<string name="sk_federated_timeline">fediwersum</string>
<string name="sk_federated_timeline_info_banner">To są najnowsze wpisy z wszystkich serwerów z którymi twoja instancja jest sfederowana.</string>
<string name="sk_update_available">Moshidon %s jest dostępny do pobrania.</string>
<string name="sk_update_ready">Moshidon %s został pobrany i jest gotowy do instalacji.</string>
<string name="sk_update_available">Megalodon %s jest dostępny do pobrania.</string>
<string name="sk_update_ready">Megalodon %s został pobrany i jest gotowy do instalacji.</string>
<string name="sk_check_for_update">Sprawdź dostępność aktualizacji</string>
<string name="sk_no_update_available">Brak dostępnych aktualizacji</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_pinned_posts">Przypięte</string>
<string name="sk_confirm_delete_and_redraft">Jesteś pewien, że chcesz usunąć wpis i utworzyć jego kopię roboczą\?</string>
<string name="sk_confirm_unpin_post">Jesteś pewien, że chcesz odpiąć ten wpis\?</string>
@@ -34,9 +34,9 @@
<string name="sk_lists_with_user">Edytuj listy z %s</string>
<string name="sk_settings_always_reveal_content_warnings">Zawsze odkrywaj ostrzeżenia o zawartości</string>
<string name="sk_disable_marquee">Wyłącz tekst przewijany w paskach tytułowych</string>
<string name="sk_settings_contribute">Wspomóż Moshidon</string>
<string name="sk_settings_contribute">Wspomóż Megalodon</string>
<string name="sk_settings_show_federated_timeline">Pokaż globalną oś czasu</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_visibility_unlisted">Niewidoczny</string>
<string name="sk_notification_type_status">Wpisy</string>
<string name="sk_notify_posts">Powiadomienia wpisów</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -7,7 +7,7 @@
<string name="sk_confirm_pin_post_title">Fixar postagem no perfil</string>
<string name="sk_confirm_pin_post">Você deseja fixar esta postagem em seu perfil\?</string>
<string name="sk_pinning">Fixando publicação…</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_pinned_posts">Fixado</string>
<string name="sk_unpin_post">Desafixar do perfil</string>
<string name="sk_confirm_unpin_post_title">Desafixar postagem do perfil</string>
@@ -18,13 +18,13 @@
<string name="sk_settings_show_boosts">Mostrar boosts</string>
<string name="sk_settings_load_new_posts">Carregar novas postagens automaticamente</string>
<string name="sk_mark_media_as_sensitive">Marcar mídia como sensível</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_lists_with_user">Editar listas com %s</string>
<string name="sk_user_post_notifications_on">Ativar as notificações de postagem para %s</string>
<string name="sk_federated_timeline">Federação</string>
<string name="sk_federated_timeline_info_banner">Estas são as postagens mais recentes das pessoas em sua federação.</string>
<string name="sk_update_available">Moshidon %s está pronto para baixar.</string>
<string name="sk_update_ready">Moshidon %s foi baixado e está pronto para instalar.</string>
<string name="sk_update_available">Megalodon %s está pronto para baixar.</string>
<string name="sk_update_ready">Megalodon %s foi baixado e está pronto para instalar.</string>
<string name="sk_check_for_update">Verificar se há atualizações</string>
<string name="sk_no_update_available">Nenhuma atualização disponível</string>
<string name="sk_list_timelines">Listas</string>
@@ -34,7 +34,7 @@
<string name="sk_reject_follow_request">Recusar solicitação para seguir</string>
<string name="sk_settings_always_reveal_content_warnings">Sempre revelar avisos de conteúdo</string>
<string name="sk_disable_marquee">Desative o texto de rolagem nas barras de título</string>
<string name="sk_settings_contribute">Contribua para o Moshidon</string>
<string name="sk_settings_contribute">Contribua para o Megalodon</string>
<string name="sk_settings_show_federated_timeline">Mostre a linha do tempo federada</string>
<string name="sk_visibility_unlisted">Não-listado</string>
<string name="sk_settings_show_interaction_counts">Mostrar contagens de interação</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_pinned_posts">Fixado</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_pinned_posts">Закрепленные</string>
<string name="sk_delete_and_redraft">Удалить и исправить</string>
<string name="sk_confirm_delete_and_redraft_title">Удалить и исправить пост</string>
@@ -14,7 +14,7 @@
<string name="sk_image_description">Описание изображения</string>
<string name="sk_visibility_unlisted">Скрытый</string>
<string name="sk_mark_media_as_sensitive">Отметить медиафайл как деликатный</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_notification_type_status">Публикации</string>
<string name="sk_notify_posts">Уведомдения о</string>
<string name="sk_settings_color_palette">Цветовая схема</string>
@@ -31,8 +31,8 @@
<string name="sk_settings_load_new_posts">Автоматически загружать новые посты</string>
<string name="sk_settings_show_replies">Показать ответы</string>
<string name="sk_federated_timeline">Федерация</string>
<string name="sk_update_available">Moshidon %s готов к скачиванию.</string>
<string name="sk_update_ready">Moshidon %s скачан и готов к установке новой версии.</string>
<string name="sk_update_available">Megalodon %s готов к скачиванию.</string>
<string name="sk_update_ready">Megalodon %s скачан и готов к установке новой версии.</string>
<string name="sk_check_for_update">Проверить обновления</string>
<string name="sk_follow_requests">Запросы на подписку</string>
<string name="sk_lists_with_user">Списки с %s</string>
@@ -44,7 +44,7 @@
<string name="sk_accept_follow_request">Принять запрос на подписку</string>
<string name="sk_reject_follow_request">Отклонить заявку на подписку</string>
<string name="sk_settings_always_reveal_content_warnings">Всегда раскрывать предупреждения о непристойном контенте</string>
<string name="sk_settings_contribute">Внести свой код в Moshidon</string>
<string name="sk_settings_contribute">Внести свой код в Megalodon</string>
<string name="sk_settings_show_federated_timeline">Показывать федеративную временную шкалу</string>
<string name="sk_color_palette_green">Зелёный</string>
<string name="sk_color_palette_blue">Синий</string>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -12,7 +12,7 @@
<string name="sk_mark_media_as_sensitive">Označite medij kot občutljiv</string>
<string name="sk_federated_timeline">Federacija</string>
<string name="sk_clear_recent_languages">Izbriši nazadnje uporabljene jezike</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_pinned_posts">Pripeto</string>
<string name="sk_confirm_delete_and_redraft_title">Izbriši ter ponovno izdelaj objavo</string>
<string name="sk_confirm_delete_and_redraft">Ali ste prepričani, da želite objavo izbrisati in jo ponovno izdelati\?</string>
@@ -20,5 +20,5 @@
<string name="sk_confirm_unpin_post">Ali ste prepričani, da želite odpeti to objavo\?</string>
<string name="sk_unpinning">Odpenjanje objave…</string>
<string name="sk_settings_load_new_posts">Samodejno naloži nove objave</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
</resources>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mo_disable_dividers">Inaktivera inläggsavdelare</string>
<string name="mo_relocate_publish_button">Flytta publiceringsknappen</string>
<string name="mo_color_palette_nord">Nord</string>
<string name="mo_hide_compose_button_while_scrolling_setting">Dölj skrivknappen medan du skrollar</string>
</resources>

View File

@@ -13,12 +13,12 @@
<string name="sk_settings_show_boosts">Visa puffar</string>
<string name="sk_settings_load_new_posts">Ladda automatiskt nya inlägg</string>
<string name="sk_settings_show_interaction_counts">Visa antal interaktioner</string>
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
<string name="sk_settings_app_version">Megalodon v%1$s (%2$d)</string>
<string name="sk_mark_media_as_sensitive">Markera media som känsligt</string>
<string name="sk_user_post_notifications_off">Slå av inläggsnotifieringar för %s</string>
<string name="sk_federated_timeline">Federation</string>
<string name="sk_federated_timeline_info_banner">Dessa är de senaste inläggen av folk i din federation.</string>
<string name="sk_update_available">Moshidon %s är redo att ladda ner.</string>
<string name="sk_update_available">Megalodon %s är redo att ladda ner.</string>
<string name="sk_check_for_update">Kolla efter uppdateringar</string>
<string name="sk_no_update_available">Inga uppdateringar tillgängliga</string>
<string name="sk_list_timelines">Listor</string>
@@ -28,14 +28,14 @@
<string name="sk_lists_with_user">Listor med %s</string>
<string name="sk_settings_always_reveal_content_warnings">Visa alltid innehållsvarningar</string>
<string name="sk_disable_marquee">Slå av skrollande text i titelrader</string>
<string name="sk_settings_contribute">Bidra till Moshidon</string>
<string name="sk_settings_contribute">Bidra till Megalodon</string>
<string name="sk_settings_show_federated_timeline">Visa federerad tidslinje</string>
<string name="sk_app_name">Moshidon</string>
<string name="sk_app_name">Megalodon</string>
<string name="sk_confirm_delete_and_redraft_title">Ta bort och skriv om inlägg</string>
<string name="sk_confirm_delete_and_redraft">Är du säker på att du vill ta bort och skriva om detta inlägg\?</string>
<string name="sk_confirm_pin_post_title">Nåla fast inlägg på profil</string>
<string name="sk_confirm_pin_post">Vill du nåla fast detta inlägg på din profil\?</string>
<string name="sk_confirm_unpin_post">Är du säker på att du vill ta bort detta inlägg\?</string>
<string name="sk_user_post_notifications_on">Slå på inläggsnotifieringar för %s</string>
<string name="sk_update_ready">Moshidon %s är nerladdad och redo att installeras.</string>
<string name="sk_update_ready">Megalodon %s är nerladdad och redo att installeras.</string>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

Some files were not shown because too many files have changed in this diff Show More