Compare commits
32 Commits
1.1.4+fork
...
1.1.4+fork
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
27079a7ec5 | ||
|
|
9563df0574 | ||
|
|
638209cc13 | ||
|
|
224c731afa | ||
|
|
0bbf937531 | ||
|
|
3556c92c3e | ||
|
|
87c5b23196 | ||
|
|
c83910c885 | ||
|
|
586622e90d | ||
|
|
e5e2430e03 | ||
|
|
04bfdba50e | ||
|
|
7abf15e9e0 | ||
|
|
6b680831b8 | ||
|
|
6cbf100828 | ||
|
|
3e7bbebe7f | ||
|
|
56d344045a | ||
|
|
7ab634cc08 | ||
|
|
9f0db3ebb5 | ||
|
|
6415eb8590 | ||
|
|
87c77b84a4 | ||
|
|
0b7bb16f22 | ||
|
|
5164b5ba78 | ||
|
|
f3c28bc66a | ||
|
|
239f7eb9e7 | ||
|
|
d6daf7a553 | ||
|
|
dfb3b230e6 | ||
|
|
484a5c878f | ||
|
|
3f27cfb13b | ||
|
|
38e2ba6ccd | ||
|
|
3dad38e614 | ||
|
|
0865c9d1bd | ||
|
|
20a8783d84 |
@@ -9,8 +9,8 @@ android {
|
||||
applicationId "org.joinmastodon.android.moshinda"
|
||||
minSdk 23
|
||||
targetSdk 33
|
||||
versionCode 68
|
||||
versionName "1.1.4+fork.68.moshinda"
|
||||
versionCode 69
|
||||
versionName "1.1.4+fork.69.moshinda"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
resConfigs "ar-rSA", "be-rBY", "bn-rBD", "bs-rBA", "ca-rES", "cs-rCZ", "de-rDE", "el-rGR", "es-rES", "eu-rES", "fi-rFI", "fil-rPH", "fr-rFR", "ga-rIE", "gd-rGB", "gl-rES", "hi-rIN", "hr-rHR", "hu-rHU", "hy-rAM", "in-rID", "is-rIS", "it-rIT", "iw-rIL", "ja-rJP", "kab", "ko-rKR", "nl-rNL", "oc-rFR", "pl-rPL", "pt-rBR", "pt-rPT", "ro-rRO", "ru-rRU", "si-rLK", "sl-rSI", "sv-rSE", "th-rTH", "tr-rTR", "uk-rUA", "vi-rVN", "zh-rCN", "zh-rTW"
|
||||
}
|
||||
|
||||
@@ -70,7 +70,8 @@ public class StatusInteractionController{
|
||||
SetStatusReblogged req=(SetStatusReblogged) new SetStatusReblogged(status.id, reblogged)
|
||||
.setCallback(new Callback<>(){
|
||||
@Override
|
||||
public void onSuccess(Status result){
|
||||
public void onSuccess(Status reblog){
|
||||
Status result = reblog.getContentStatus();
|
||||
runningReblogRequests.remove(status.id);
|
||||
result.reblogsCount = Math.max(0, status.reblogsCount) + (reblogged ? 1 : -1);
|
||||
cb.accept(result);
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
package org.joinmastodon.android.api.requests.statuses;
|
||||
|
||||
import org.joinmastodon.android.api.AllFieldsAreRequired;
|
||||
import org.joinmastodon.android.api.MastodonAPIRequest;
|
||||
import org.joinmastodon.android.model.BaseModel;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.model.StatusTranslation;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class GetStatusTranslation extends MastodonAPIRequest<StatusTranslation>{
|
||||
public GetStatusTranslation(String id){
|
||||
super(HttpMethod.POST, "/statuses/"+id+"/translate", StatusTranslation.class);
|
||||
Request r = new Request();
|
||||
setRequestBody(r);
|
||||
}
|
||||
|
||||
public static class Request{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package org.joinmastodon.android.api.requests.statuses;
|
||||
|
||||
import org.joinmastodon.android.api.MastodonAPIRequest;
|
||||
import org.joinmastodon.android.model.TranslatedStatus;
|
||||
|
||||
public class TranslateStatus extends MastodonAPIRequest<TranslatedStatus> {
|
||||
public TranslateStatus(String id) {
|
||||
super(HttpMethod.POST, "/statuses/"+id+"/translate", TranslatedStatus.class);
|
||||
setRequestBody(new Object());
|
||||
}
|
||||
}
|
||||
@@ -104,6 +104,7 @@ public class AccountSessionManager{
|
||||
|
||||
public void addAccount(Instance instance, Token token, Account self, Application app, AccountActivationInfo activationInfo){
|
||||
instances.put(instance.uri, instance);
|
||||
updateInstanceInfoV2(instance);
|
||||
AccountSession session=new AccountSession(token, self, app, instance.uri, activationInfo==null, activationInfo);
|
||||
sessions.put(session.getID(), session);
|
||||
lastActiveAccountID=session.getID();
|
||||
@@ -329,9 +330,7 @@ public class AccountSessionManager{
|
||||
instances.put(domain, instance);
|
||||
updateInstanceEmojis(instance, domain);
|
||||
try {
|
||||
if (Integer.parseInt(instance.version.split("\\.")[0]) >= 4) {
|
||||
updateInstanceInfoV2(domain);
|
||||
}
|
||||
updateInstanceInfoV2(instance);
|
||||
} catch (Exception ignored) {}
|
||||
}
|
||||
|
||||
@@ -343,17 +342,17 @@ public class AccountSessionManager{
|
||||
.execNoAuth(domain);
|
||||
}
|
||||
|
||||
public void updateInstanceInfoV2(String domain) {
|
||||
public void updateInstanceInfoV2(Instance instance) {
|
||||
new GetInstance.V2().setCallback(new Callback<>() {
|
||||
@Override
|
||||
public void onSuccess(Instance.V2 v2) {
|
||||
Instance instanceInfo = instances.get(domain);
|
||||
if (instanceInfo != null) instanceInfo.v2 = v2;
|
||||
if (instance != null) instance.v2 = v2;
|
||||
writeAccountsFile();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(ErrorResponse errorResponse) {}
|
||||
}).execNoAuth(domain);
|
||||
}).execNoAuth(instance.uri);
|
||||
}
|
||||
|
||||
private void updateInstanceEmojis(Instance instance, String domain){
|
||||
|
||||
@@ -463,22 +463,6 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
revealSpoiler(status, holder.getItemID());
|
||||
}
|
||||
|
||||
public void onRevealTranslationClick(HeaderStatusDisplayItem.Holder holder, View v){
|
||||
Status status=holder.getItem().status;
|
||||
revealTranslation(status, holder.getItemID(), v);
|
||||
}
|
||||
|
||||
protected void revealTranslation(Status status, String itemID, View v){
|
||||
status.wantsTranslation=!status.wantsTranslation;
|
||||
TextStatusDisplayItem.Holder text=findHolderOfType(itemID, TextStatusDisplayItem.Holder.class);
|
||||
if(text!=null)
|
||||
adapter.notifyItemChanged(text.getAbsoluteAdapterPosition()-getMainAdapterOffset());
|
||||
HeaderStatusDisplayItem.Holder header=findHolderOfType(itemID, HeaderStatusDisplayItem.Holder.class);
|
||||
if(header!=null)
|
||||
header.rebind();
|
||||
updateImagesSpoilerState(status, itemID);
|
||||
}
|
||||
|
||||
protected void revealSpoiler(Status status, String itemID){
|
||||
status.spoilerRevealed=true;
|
||||
TextStatusDisplayItem.Holder text=findHolderOfType(itemID, TextStatusDisplayItem.Holder.class);
|
||||
|
||||
@@ -155,7 +155,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
||||
private int charCount, charLimit, trimmedCharCount;
|
||||
|
||||
private Button publishButton, languageButton;
|
||||
private PopupMenu languagePopup;
|
||||
private PopupMenu languagePopup, visibilityPopup;
|
||||
private ImageButton mediaBtn, pollBtn, emojiBtn, spoilerBtn, visibilityBtn;
|
||||
private ImageView sensitiveIcon;
|
||||
private ComposeMediaLayout attachmentsView;
|
||||
@@ -255,6 +255,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
||||
wm=activity.getSystemService(WindowManager.class);
|
||||
}
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
@Override
|
||||
public View onCreateContentView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
|
||||
creatingView=true;
|
||||
@@ -295,7 +296,9 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
||||
pollBtn.setOnClickListener(v->togglePoll());
|
||||
emojiBtn.setOnClickListener(v->emojiKeyboard.toggleKeyboardPopup(mainEditText));
|
||||
spoilerBtn.setOnClickListener(v->toggleSpoiler());
|
||||
visibilityBtn.setOnClickListener(this::onVisibilityClick);
|
||||
buildVisibilityPopup(visibilityBtn);
|
||||
visibilityBtn.setOnClickListener(v->visibilityPopup.show());
|
||||
visibilityBtn.setOnTouchListener(visibilityPopup.getDragToOpenListener());
|
||||
sensitiveItem.setOnClickListener(v->toggleSensitive());
|
||||
emojiKeyboard.setOnIconChangedListener(new PopupKeyboard.OnIconChangeListener(){
|
||||
@Override
|
||||
@@ -1396,11 +1399,11 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
||||
return attachments.size();
|
||||
}
|
||||
|
||||
private void onVisibilityClick(View v){
|
||||
PopupMenu menu=new PopupMenu(getActivity(), v);
|
||||
menu.inflate(R.menu.compose_visibility);
|
||||
Menu m=menu.getMenu();
|
||||
UiUtils.enablePopupMenuIcons(getActivity(), menu);
|
||||
private void buildVisibilityPopup(View v){
|
||||
visibilityPopup=new PopupMenu(getActivity(), v);
|
||||
visibilityPopup.inflate(R.menu.compose_visibility);
|
||||
Menu m=visibilityPopup.getMenu();
|
||||
UiUtils.enablePopupMenuIcons(getActivity(), visibilityPopup);
|
||||
m.setGroupCheckable(0, true, true);
|
||||
m.findItem(switch(statusVisibility){
|
||||
case PUBLIC -> R.id.vis_public;
|
||||
@@ -1408,7 +1411,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
||||
case PRIVATE -> R.id.vis_followers;
|
||||
case DIRECT -> R.id.vis_private;
|
||||
}).setChecked(true);
|
||||
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){
|
||||
visibilityPopup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item){
|
||||
int id=item.getItemId();
|
||||
@@ -1426,7 +1429,6 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
||||
return true;
|
||||
}
|
||||
});
|
||||
menu.show();
|
||||
}
|
||||
|
||||
private void loadDefaultStatusVisibility(Bundle savedInstanceState) {
|
||||
|
||||
@@ -189,8 +189,8 @@ public abstract class StatusListFragment extends BaseStatusListFragment<Status>{
|
||||
}
|
||||
}
|
||||
for(Status s:preloadedData){
|
||||
if(s.id.equals(ev.id)){
|
||||
s.update(ev);
|
||||
if(s.getContentStatus().id.equals(ev.id)){
|
||||
s.getContentStatus().update(ev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@ public class SignupFragment extends ToolbarFragment{
|
||||
}
|
||||
|
||||
private void onButtonClick(){
|
||||
if(!password.getText().equals(passwordConfirm.getText())){
|
||||
if(!password.getText().toString().equals(passwordConfirm.getText().toString())){
|
||||
passwordConfirm.setError(getString(R.string.signup_passwords_dont_match));
|
||||
passwordConfirmWrap.setErrorState();
|
||||
return;
|
||||
|
||||
@@ -1,146 +0,0 @@
|
||||
package org.joinmastodon.android.model;
|
||||
|
||||
import org.joinmastodon.android.GlobalUserPreferences;
|
||||
import org.joinmastodon.android.api.ObjectValidationException;
|
||||
import org.joinmastodon.android.api.RequiredField;
|
||||
import org.joinmastodon.android.events.StatusCountersUpdatedEvent;
|
||||
import org.joinmastodon.android.ui.text.HtmlParser;
|
||||
import org.parceler.Parcel;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.List;
|
||||
|
||||
@Parcel
|
||||
public class StatusTranslation extends BaseModel implements DisplayItemsParent{
|
||||
// @RequiredField
|
||||
public String id;
|
||||
// @RequiredField
|
||||
public String uri;
|
||||
// @RequiredField
|
||||
public Instant createdAt;
|
||||
// @RequiredField
|
||||
public Account account;
|
||||
// @RequiredField
|
||||
public String content;
|
||||
// @RequiredField
|
||||
public StatusPrivacy visibility;
|
||||
public boolean sensitive;
|
||||
// @RequiredField
|
||||
public String spoilerText;
|
||||
// @RequiredField
|
||||
public List<Attachment> mediaAttachments;
|
||||
public Application application;
|
||||
// @RequiredField
|
||||
public List<Mention> mentions;
|
||||
// @RequiredField
|
||||
public List<Hashtag> tags;
|
||||
// @RequiredField
|
||||
public List<Emoji> emojis;
|
||||
public long reblogsCount;
|
||||
public long favouritesCount;
|
||||
public long repliesCount;
|
||||
public Instant editedAt;
|
||||
|
||||
public String url;
|
||||
public String inReplyToId;
|
||||
public String inReplyToAccountId;
|
||||
public Status reblog;
|
||||
public Poll poll;
|
||||
public Card card;
|
||||
public String language;
|
||||
public String text;
|
||||
|
||||
public boolean favourited;
|
||||
public boolean reblogged;
|
||||
public boolean muted;
|
||||
public boolean bookmarked;
|
||||
public boolean pinned;
|
||||
|
||||
public transient boolean spoilerRevealed;
|
||||
public transient boolean hasGapAfter;
|
||||
private transient String strippedText;
|
||||
|
||||
@Override
|
||||
public void postprocess() throws ObjectValidationException{
|
||||
super.postprocess();
|
||||
// if(application!=null)
|
||||
// application.postprocess();
|
||||
// for(Mention m:mentions)
|
||||
// m.postprocess();
|
||||
// for(Hashtag t:tags)
|
||||
// t.postprocess();
|
||||
// for(Emoji e:emojis)
|
||||
// e.postprocess();
|
||||
// for(Attachment a:mediaAttachments)
|
||||
// a.postprocess();
|
||||
// account.postprocess();
|
||||
// if(poll!=null)
|
||||
// poll.postprocess();
|
||||
// if(card!=null)
|
||||
// card.postprocess();
|
||||
// if(reblog!=null)
|
||||
// reblog.postprocess();
|
||||
|
||||
// spoilerRevealed=GlobalUserPreferences.alwaysExpandContentWarnings || !sensitive;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
return "Status{"+
|
||||
"id='"+id+'\''+
|
||||
", uri='"+uri+'\''+
|
||||
", createdAt="+createdAt+
|
||||
", account="+account+
|
||||
", content='"+content+'\''+
|
||||
", visibility="+visibility+
|
||||
", sensitive="+sensitive+
|
||||
", spoilerText='"+spoilerText+'\''+
|
||||
", mediaAttachments="+mediaAttachments+
|
||||
", application="+application+
|
||||
", mentions="+mentions+
|
||||
", tags="+tags+
|
||||
", emojis="+emojis+
|
||||
", reblogsCount="+reblogsCount+
|
||||
", favouritesCount="+favouritesCount+
|
||||
", repliesCount="+repliesCount+
|
||||
", url='"+url+'\''+
|
||||
", inReplyToId='"+inReplyToId+'\''+
|
||||
", inReplyToAccountId='"+inReplyToAccountId+'\''+
|
||||
", reblog="+reblog+
|
||||
", poll="+poll+
|
||||
", card="+card+
|
||||
", language='"+language+'\''+
|
||||
", text='"+text+'\''+
|
||||
", favourited="+favourited+
|
||||
", reblogged="+reblogged+
|
||||
", muted="+muted+
|
||||
", bookmarked="+bookmarked+
|
||||
", pinned="+pinned+
|
||||
'}';
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getID(){
|
||||
return id;
|
||||
}
|
||||
|
||||
public void update(StatusCountersUpdatedEvent ev){
|
||||
favouritesCount=ev.favorites;
|
||||
reblogsCount=ev.reblogs;
|
||||
repliesCount=ev.replies;
|
||||
favourited=ev.favorited;
|
||||
reblogged=ev.reblogged;
|
||||
bookmarked=ev.bookmarked;
|
||||
pinned=ev.pinned;
|
||||
}
|
||||
|
||||
public StatusTranslation getContentStatus(){
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getStrippedText(){
|
||||
if(strippedText==null)
|
||||
strippedText=HtmlParser.strip(content);
|
||||
return strippedText;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package org.joinmastodon.android.model;
|
||||
|
||||
public class TranslatedStatus extends BaseModel {
|
||||
public String content;
|
||||
public String detectedSourceLanguage;
|
||||
public String provider;
|
||||
}
|
||||
@@ -63,7 +63,6 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
||||
private SpannableStringBuilder parsedName;
|
||||
public final Status status;
|
||||
private boolean hasVisibilityToggle;
|
||||
private boolean hasTranslateToggle;
|
||||
boolean needBottomPadding;
|
||||
private String extraText;
|
||||
|
||||
@@ -77,10 +76,7 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
||||
this.status=status;
|
||||
HtmlParser.parseCustomEmoji(parsedName, user.emojis);
|
||||
emojiHelper.setText(parsedName);
|
||||
Preferences prefs = AccountSessionManager.getInstance().getAccount(accountID).preferences;
|
||||
if(status!=null){
|
||||
hasTranslateToggle = !(Objects.equals(status.language, prefs.postingDefaultLanguage) || (status.visibility == StatusPrivacy.DIRECT || status.visibility == StatusPrivacy.PRIVATE));
|
||||
// hasTranslateToggle = !status.language.equals(prefs.postingDefaultLanguage) || (status.visibility==StatusPrivacy.PRIVATE);
|
||||
hasVisibilityToggle=status.sensitive || !TextUtils.isEmpty(status.spoilerText);
|
||||
if(!hasVisibilityToggle && !status.mediaAttachments.isEmpty()){
|
||||
for(Attachment att:status.mediaAttachments){
|
||||
@@ -114,7 +110,7 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
||||
|
||||
public static class Holder extends StatusDisplayItem.Holder<HeaderStatusDisplayItem> implements ImageLoaderViewHolder{
|
||||
private final TextView name, username, timestamp, extraText;
|
||||
private final ImageView avatar, more, visibility, translate;
|
||||
private final ImageView avatar, more, visibility;
|
||||
private final PopupMenu optionsMenu;
|
||||
private Relationship relationship;
|
||||
private APIRequest<?> currentRelationshipRequest;
|
||||
@@ -128,7 +124,6 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
||||
|
||||
public Holder(Activity activity, ViewGroup parent){
|
||||
super(activity, R.layout.display_item_header, parent);
|
||||
translate=findViewById(R.id.translate);
|
||||
name=findViewById(R.id.name);
|
||||
username=findViewById(R.id.username);
|
||||
timestamp=findViewById(R.id.timestamp);
|
||||
@@ -141,7 +136,6 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
||||
avatar.setClipToOutline(true);
|
||||
more.setOnClickListener(this::onMoreClick);
|
||||
visibility.setOnClickListener(v->item.parentFragment.onVisibilityIconClick(this));
|
||||
translate.setOnClickListener(v->item.parentFragment.onRevealTranslationClick(this, v));
|
||||
|
||||
optionsMenu=new PopupMenu(activity, more);
|
||||
optionsMenu.inflate(R.menu.post);
|
||||
@@ -235,7 +229,6 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
||||
else
|
||||
timestamp.setText(item.parentFragment.getString(R.string.edited_timestamp, UiUtils.formatRelativeTimestamp(itemView.getContext(), item.status.editedAt)));
|
||||
visibility.setVisibility(item.hasVisibilityToggle && !item.inset ? View.VISIBLE : View.GONE);
|
||||
translate.setVisibility(item.hasTranslateToggle ? View.VISIBLE : View.GONE);
|
||||
if(item.hasVisibilityToggle){
|
||||
visibility.setImageResource(item.status.spoilerRevealed ? R.drawable.ic_visibility_off : R.drawable.ic_visibility);
|
||||
visibility.setContentDescription(item.parentFragment.getString(item.status.spoilerRevealed ? R.string.hide_content : R.string.reveal_content));
|
||||
@@ -243,10 +236,6 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
||||
visibility.setTooltipText(visibility.getContentDescription());
|
||||
}
|
||||
}
|
||||
if(item.hasTranslateToggle){
|
||||
translate.setImageResource(R.drawable.ic_translate);
|
||||
translate.setSelected(item.status.wantsTranslation);
|
||||
}
|
||||
itemView.setPadding(itemView.getPaddingLeft(), itemView.getPaddingTop(), itemView.getPaddingRight(), item.needBottomPadding ? V.dp(16) : 0);
|
||||
if(TextUtils.isEmpty(item.extraText)){
|
||||
extraText.setVisibility(View.GONE);
|
||||
|
||||
@@ -8,16 +8,20 @@ import android.text.TextUtils;
|
||||
import android.util.TypedValue;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.api.requests.statuses.GetStatusTranslation;
|
||||
import org.joinmastodon.android.api.requests.statuses.TranslateStatus;
|
||||
import org.joinmastodon.android.api.session.AccountSession;
|
||||
import org.joinmastodon.android.api.session.AccountSessionManager;
|
||||
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
||||
import org.joinmastodon.android.model.Instance;
|
||||
import org.joinmastodon.android.model.Status;
|
||||
import org.joinmastodon.android.model.StatusTranslation;
|
||||
import org.joinmastodon.android.ui.drawables.SpoilerStripesDrawable;
|
||||
import org.joinmastodon.android.model.StatusPrivacy;
|
||||
import org.joinmastodon.android.model.TranslatedStatus;
|
||||
import org.joinmastodon.android.ui.text.HtmlParser;
|
||||
import org.joinmastodon.android.ui.utils.CustomEmojiHelper;
|
||||
import org.joinmastodon.android.ui.views.LinkedTextView;
|
||||
@@ -35,18 +39,21 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
|
||||
private CharSequence parsedSpoilerText;
|
||||
public boolean textSelectable;
|
||||
public final Status status;
|
||||
public boolean translated = false;
|
||||
public TranslatedStatus translation = null;
|
||||
private AccountSession session;
|
||||
|
||||
public TextStatusDisplayItem(String parentID, CharSequence text, BaseStatusListFragment parentFragment, Status status){
|
||||
super(parentID, parentFragment);
|
||||
this.text=text;
|
||||
this.status=status;
|
||||
// this.wantsTranslation=wantsTranslation;
|
||||
emojiHelper.setText(text);
|
||||
if(!TextUtils.isEmpty(status.spoilerText)){
|
||||
parsedSpoilerText=HtmlParser.parseCustomEmoji(status.spoilerText, status.emojis);
|
||||
spoilerEmojiHelper=new CustomEmojiHelper();
|
||||
spoilerEmojiHelper.setText(parsedSpoilerText);
|
||||
}
|
||||
session = AccountSessionManager.getInstance().getAccount(parentFragment.getAccountID());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -71,9 +78,10 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
|
||||
public static class Holder extends StatusDisplayItem.Holder<TextStatusDisplayItem> implements ImageLoaderViewHolder{
|
||||
private final LinkedTextView text;
|
||||
private final LinearLayout spoilerHeader;
|
||||
private final TextView spoilerTitle, spoilerTitleInline;
|
||||
private final View spoilerOverlay, borderTop, borderBottom;
|
||||
private final TextView spoilerTitle, spoilerTitleInline, translateInfo;
|
||||
private final View spoilerOverlay, borderTop, borderBottom, textWrap, translateWrap, translateProgress;
|
||||
private final Drawable backgroundColor, borderColor;
|
||||
private final Button translateButton;
|
||||
|
||||
public Holder(Activity activity, ViewGroup parent){
|
||||
super(activity, R.layout.display_item_text, parent);
|
||||
@@ -84,6 +92,11 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
|
||||
spoilerOverlay=findViewById(R.id.spoiler_overlay);
|
||||
borderTop=findViewById(R.id.border_top);
|
||||
borderBottom=findViewById(R.id.border_bottom);
|
||||
textWrap=findViewById(R.id.text_wrap);
|
||||
translateWrap=findViewById(R.id.translate_wrap);
|
||||
translateButton=findViewById(R.id.translate_btn);
|
||||
translateInfo=findViewById(R.id.translate_info);
|
||||
translateProgress=findViewById(R.id.translate_progress);
|
||||
itemView.setOnClickListener(v->item.parentFragment.onRevealSpoilerClick(this));
|
||||
|
||||
TypedValue outValue=new TypedValue();
|
||||
@@ -97,32 +110,9 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
|
||||
|
||||
@Override
|
||||
public void onBind(TextStatusDisplayItem item){
|
||||
if(item.status.wantsTranslation && item.status.translation == null){
|
||||
new GetStatusTranslation(item.status.id)
|
||||
.setCallback(new Callback<StatusTranslation>(){
|
||||
@Override
|
||||
public void onSuccess(StatusTranslation statusTranslation){
|
||||
item.status.translation = statusTranslation.getStrippedText();
|
||||
text.setText(item.status.translation);
|
||||
}
|
||||
@Override
|
||||
public void onError(ErrorResponse error){
|
||||
item.status.wantsTranslation=false;
|
||||
text.setText(item.text);
|
||||
error.showToast(item.parentFragment.getActivity());
|
||||
}
|
||||
})
|
||||
.wrapProgress(item.parentFragment.getActivity(), R.string.loading, true)
|
||||
.exec(item.parentFragment.getAccountID());
|
||||
}
|
||||
if(item.status.wantsTranslation){
|
||||
if(item.status.translation != null)
|
||||
{
|
||||
text.setText(item.status.translation);
|
||||
}
|
||||
}else{
|
||||
text.setText(item.text);
|
||||
}
|
||||
text.setText(item.translated
|
||||
? HtmlParser.parse(item.translation.content, item.status.emojis, item.status.mentions, item.status.tags, item.parentFragment.getAccountID())
|
||||
: item.text);
|
||||
text.setTextIsSelectable(item.textSelectable);
|
||||
spoilerTitleInline.setTextIsSelectable(item.textSelectable);
|
||||
text.setInvalidateOnEveryFrame(false);
|
||||
@@ -136,20 +126,59 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
|
||||
if(item.status.spoilerRevealed){
|
||||
spoilerOverlay.setVisibility(View.GONE);
|
||||
spoilerHeader.setVisibility(View.VISIBLE);
|
||||
text.setVisibility(View.VISIBLE);
|
||||
textWrap.setVisibility(View.VISIBLE);
|
||||
itemView.setClickable(false);
|
||||
}else{
|
||||
spoilerOverlay.setVisibility(View.VISIBLE);
|
||||
spoilerHeader.setVisibility(View.GONE);
|
||||
text.setVisibility(View.GONE);
|
||||
textWrap.setVisibility(View.GONE);
|
||||
itemView.setClickable(true);
|
||||
}
|
||||
}else{
|
||||
spoilerOverlay.setVisibility(View.GONE);
|
||||
spoilerHeader.setVisibility(View.GONE);
|
||||
text.setVisibility(View.VISIBLE);
|
||||
textWrap.setVisibility(View.VISIBLE);
|
||||
itemView.setClickable(false);
|
||||
}
|
||||
|
||||
Instance instanceInfo = AccountSessionManager.getInstance().getInstanceInfo(item.session.domain);
|
||||
boolean translateEnabled = instanceInfo.v2 != null && instanceInfo.v2.configuration.translation != null && instanceInfo.v2.configuration.translation.enabled;
|
||||
|
||||
translateWrap.setVisibility(translateEnabled &&
|
||||
!item.status.visibility.isLessVisibleThan(StatusPrivacy.UNLISTED) &&
|
||||
(item.session.preferences == null || !item.status.language.equalsIgnoreCase(item.session.preferences.postingDefaultLanguage))
|
||||
? View.VISIBLE : View.GONE);
|
||||
translateButton.setText(item.translated ? R.string.sk_translate_show_original : R.string.sk_translate_post);
|
||||
translateInfo.setText(item.translated ? itemView.getResources().getString(R.string.sk_translated_using, item.translation.provider) : "");
|
||||
translateButton.setOnClickListener(v->{
|
||||
if (item.translation == null) {
|
||||
translateProgress.setVisibility(View.VISIBLE);
|
||||
translateButton.setClickable(false);
|
||||
translateButton.setAlpha(.50f);
|
||||
new TranslateStatus(item.status.id).setCallback(new Callback<>() {
|
||||
@Override
|
||||
public void onSuccess(TranslatedStatus translatedStatus) {
|
||||
item.translation = translatedStatus;
|
||||
item.translated = true;
|
||||
translateProgress.setVisibility(View.GONE);
|
||||
translateButton.setClickable(true);
|
||||
translateButton.setAlpha(1f);
|
||||
rebind();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(ErrorResponse error) {
|
||||
translateProgress.setVisibility(View.GONE);
|
||||
translateButton.setClickable(true);
|
||||
translateButton.setAlpha(1f);
|
||||
error.showToast(itemView.getContext());
|
||||
}
|
||||
}).exec(item.parentFragment.getAccountID());
|
||||
} else {
|
||||
item.translated = !item.translated;
|
||||
rebind();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -26,25 +26,13 @@
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_marginTop="-6dp"
|
||||
android:layout_marginEnd="6dp"
|
||||
android:layout_toStartOf="@id/more"
|
||||
android:layout_marginRight="6dp"
|
||||
android:layout_toLeftOf="@id/more"
|
||||
android:background="?android:selectableItemBackgroundBorderless"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/ic_visibility"
|
||||
android:tint="?android:textColorSecondary" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/translate"
|
||||
android:layout_width="36dp"
|
||||
android:layout_height="36dp"
|
||||
android:layout_marginTop="-6dp"
|
||||
android:layout_marginEnd="6dp"
|
||||
android:layout_toStartOf="@id/visibility"
|
||||
android:background="?android:selectableItemBackgroundBorderless"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/ic_translate"
|
||||
android:tint="@color/translate_icon" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/avatar"
|
||||
android:layout_width="46dp"
|
||||
@@ -58,7 +46,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_toStartOf="@id/translate"
|
||||
android:layout_toStartOf="@id/visibility"
|
||||
android:layout_toEndOf="@id/avatar">
|
||||
|
||||
<TextView
|
||||
@@ -90,7 +78,7 @@
|
||||
android:layout_height="20dp"
|
||||
android:layout_below="@id/name_wrap"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_toStartOf="@id/translate"
|
||||
android:layout_toStartOf="@id/visibility"
|
||||
android:layout_toEndOf="@id/avatar"
|
||||
android:layoutDirection="locale"
|
||||
android:orientation="horizontal">
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
android:paddingBottom="12dp">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/text_wrap"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
@@ -32,10 +33,9 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="@style/m3_title_medium"
|
||||
android:background="@color/error_900"
|
||||
android:background="?colorBackgroundLight"
|
||||
tools:text="CW title"/>
|
||||
|
||||
|
||||
<View
|
||||
android:id="@+id/border_bottom"
|
||||
android:layout_width="match_parent"
|
||||
@@ -49,27 +49,58 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:textSize="16sp"
|
||||
android:textAppearance="@style/m3_body_large"
|
||||
tools:text="setting up my mstdn"/>
|
||||
android:textAppearance="@style/m3_body_large"/>
|
||||
|
||||
<!-- <Button-->
|
||||
<!-- android:id="@+id/translate"-->
|
||||
<!-- android:layout_width="wrap_content"-->
|
||||
<!-- android:layout_height="32dp"-->
|
||||
<!-- android:background="@drawable/bg_inline_button"-->
|
||||
<!-- android:elevation="0dp"-->
|
||||
<!-- android:ellipsize="middle"-->
|
||||
<!-- android:fontFamily="sans-serif-medium"-->
|
||||
<!-- android:singleLine="true"-->
|
||||
<!-- android:stateListAnimator="@null"-->
|
||||
<!-- android:textColor="?android:textColorPrimary"-->
|
||||
<!-- android:textSize="16sp"-->
|
||||
<!-- tools:text="@string/pink_color" />-->
|
||||
<org.joinmastodon.android.ui.views.AutoOrientationLinearLayout
|
||||
android:id="@+id/translate_wrap"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/action_btn_wrap"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="8dp"
|
||||
android:clipToPadding="false">
|
||||
<org.joinmastodon.android.ui.views.ProgressBarButton
|
||||
android:id="@+id/translate_btn"
|
||||
style="?secondaryButtonStyle"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:textColor="?android:textColorSecondary"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingHorizontal="8dp"
|
||||
tools:text="@string/sk_translate_post"/>
|
||||
<ProgressBar
|
||||
android:id="@+id/translate_progress"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:indeterminate="true"
|
||||
style="?android:progressBarStyleSmall"
|
||||
android:elevation="10dp"
|
||||
android:outlineProvider="none"
|
||||
android:indeterminateTint="?android:textColorPrimary"
|
||||
android:visibility="gone"/>
|
||||
</FrameLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/translate_info"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginVertical="4dp"
|
||||
android:layout_weight="1"
|
||||
android:textColor="?android:textColorSecondary"
|
||||
android:textAlignment="textEnd"
|
||||
tools:text="Translated using TranslateEngine" />
|
||||
|
||||
</org.joinmastodon.android.ui.views.AutoOrientationLinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:visibility="gone"
|
||||
android:id="@+id/spoiler_overlay"
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:textColor="?colorAccentLight"
|
||||
android:textColor="?android:textColorPrimary"
|
||||
android:textAllCaps="true"
|
||||
android:textSize="14dp"
|
||||
android:paddingLeft="16dp"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:id="@+id/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"/>
|
||||
<item android:id="@+id/share" android:title="@string/share_user" android:icon="@drawable/ic_fluent_share_24_regular"/>
|
||||
<item android:id="@+id/bookmarks" android:title="@string/bookmarks" android:icon="@drawable/ic_fluent_bookmark_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/share" android:title="@string/share_user" android:icon="@drawable/ic_fluent_share_24_regular" android:showAsAction="always"/>
|
||||
</menu>
|
||||
@@ -40,11 +40,11 @@
|
||||
<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>
|
||||
<string name="sk_settings_color_picker">Color de tema</string>
|
||||
<string name="sk_color_theme_pink">Rosa</string>
|
||||
<string name="sk_color_theme_purple">Lila</string>
|
||||
<string name="sk_color_theme_green">Verd</string>
|
||||
<string name="sk_color_theme_blue">Blau</string>
|
||||
<string name="sk_color_theme_brown">Marró</string>
|
||||
<string name="sk_color_theme_yellow">Groc</string>
|
||||
<string name="sk_settings_color_palette">Color de tema</string>
|
||||
<string name="sk_color_palette_pink">Rosa</string>
|
||||
<string name="sk_color_palette_purple">Lila</string>
|
||||
<string name="sk_color_palette_green">Verd</string>
|
||||
<string name="sk_color_palette_blue">Blau</string>
|
||||
<string name="sk_color_palette_brown">Marró</string>
|
||||
<string name="sk_color_palette_yellow">Groc</string>
|
||||
</resources>
|
||||
@@ -39,14 +39,14 @@
|
||||
<string name="sk_settings_contribute">Zu Moshidon beitragen</string>
|
||||
<string name="sk_settings_show_federated_timeline">Föderierte Timeline anzeigen</string>
|
||||
<string name="sk_notify_posts">Beitrags-Benachrichtigungen</string>
|
||||
<string name="sk_settings_color_picker">Farbschema</string>
|
||||
<string name="sk_color_theme_pink">Pink</string>
|
||||
<string name="sk_color_theme_purple">Violett</string>
|
||||
<string name="sk_color_theme_green">Grün</string>
|
||||
<string name="sk_color_theme_brown">Braun</string>
|
||||
<string name="sk_color_theme_yellow">Gelb</string>
|
||||
<string name="sk_settings_color_palette">Farbschema</string>
|
||||
<string name="sk_color_palette_pink">Pink</string>
|
||||
<string name="sk_color_palette_purple">Violett</string>
|
||||
<string name="sk_color_palette_green">Grün</string>
|
||||
<string name="sk_color_palette_brown">Braun</string>
|
||||
<string name="sk_color_palette_yellow">Gelb</string>
|
||||
<string name="sk_notification_type_status">Beiträge</string>
|
||||
<string name="sk_color_theme_blue">Blau</string>
|
||||
<string name="sk_color_palette_blue">Blau</string>
|
||||
<string name="sk_poll_allow_multiple">Mehrfachantworten erlauben</string>
|
||||
<string name="sk_translated_using">Übersetzt mit %s</string>
|
||||
<string name="sk_post_language">Sprache: %s</string>
|
||||
@@ -56,4 +56,17 @@
|
||||
<string name="sk_translate_show_original">Original anzeigen</string>
|
||||
<string name="sk_available_languages">Verfügbare Sprachen</string>
|
||||
<string name="sk_clear_recent_languages">Zuletzt verwendete Sprachen leeren</string>
|
||||
<string name="sk_welcome_title">Willkommen!</string>
|
||||
<string name="sk_example_domain">beispiel.social</string>
|
||||
<string name="sk_welcome_text">Der Hai sagt Hi! Um anzufangen, bitte gib den Domain-Namen deiner Heim-Instanz unten ein.</string>
|
||||
<string name="sk_color_palette_material3">System</string>
|
||||
<string name="sk_color_palette_red">Rot</string>
|
||||
<string name="sk_settings_profile">Profil einrichten</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">Sicherheitseinstellungen</string>
|
||||
<string name="sk_settings_rules">Regelwerk</string>
|
||||
<string name="sk_settings_about">Über die App</string>
|
||||
<string name="sk_settings_donate">Spenden</string>
|
||||
<string name="sk_tabs_disable_swipe">Wischen zwischen Tabs deaktivieren</string>
|
||||
</resources>
|
||||
@@ -40,13 +40,13 @@
|
||||
<string name="sk_settings_app_version">Moshidon 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_picker">Colores para los temas</string>
|
||||
<string name="sk_color_theme_pink">Rosa</string>
|
||||
<string name="sk_color_theme_purple">Violeta</string>
|
||||
<string name="sk_color_theme_green">Verde</string>
|
||||
<string name="sk_color_theme_blue">Azul</string>
|
||||
<string name="sk_color_theme_brown">Marrón</string>
|
||||
<string name="sk_color_theme_yellow">Amarillo</string>
|
||||
<string name="sk_settings_color_palette">Colores para los temas</string>
|
||||
<string name="sk_color_palette_pink">Rosa</string>
|
||||
<string name="sk_color_palette_purple">Violeta</string>
|
||||
<string name="sk_color_palette_green">Verde</string>
|
||||
<string name="sk_color_palette_blue">Azul</string>
|
||||
<string name="sk_color_palette_brown">Marrón</string>
|
||||
<string name="sk_color_palette_yellow">Amarillo</string>
|
||||
<string name="sk_poll_allow_multiple">Permitir respuesta múltiple</string>
|
||||
<string name="sk_translate_post">Traducir</string>
|
||||
<string name="sk_translate_show_original">Mostrar original</string>
|
||||
@@ -56,4 +56,9 @@
|
||||
<string name="sk_language_name">%s (%s)</string>
|
||||
<string name="sk_confirm_clear_recent_languages">¿Confirma que quiere vaciar sus idiomas usados recientemente\?</string>
|
||||
<string name="sk_clear_recent_languages">Vaciar idiomas usados recientemente</string>
|
||||
<string name="sk_welcome_text">¡El tiburón te saluda! Para empezar, introduzca a continuación el nombre del dominio de su instancia de origen.</string>
|
||||
<string name="sk_example_domain">example.social</string>
|
||||
<string name="sk_welcome_title">¡Bienvenidos!</string>
|
||||
<string name="sk_color_palette_material3">Sistema</string>
|
||||
<string name="sk_color_palette_red">Rojo</string>
|
||||
</resources>
|
||||
@@ -40,13 +40,13 @@
|
||||
<string name="sk_federated_timeline_info_banner">Ce sont les messages les plus récents des membres de votre fédération.</string>
|
||||
<string name="sk_notification_type_status">Messages</string>
|
||||
<string name="sk_notify_posts">Notifications des messages</string>
|
||||
<string name="sk_color_theme_pink">Rose</string>
|
||||
<string name="sk_color_theme_purple">Violet</string>
|
||||
<string name="sk_color_theme_green">Vert</string>
|
||||
<string name="sk_color_theme_blue">Bleu</string>
|
||||
<string name="sk_color_theme_brown">Marron</string>
|
||||
<string name="sk_color_theme_yellow">Jaune</string>
|
||||
<string name="sk_settings_color_picker">Couleur d\'accentuation</string>
|
||||
<string name="sk_color_palette_pink">Rose</string>
|
||||
<string name="sk_color_palette_purple">Violet</string>
|
||||
<string name="sk_color_palette_green">Vert</string>
|
||||
<string name="sk_color_palette_blue">Bleu</string>
|
||||
<string name="sk_color_palette_brown">Marron</string>
|
||||
<string name="sk_color_palette_yellow">Jaune</string>
|
||||
<string name="sk_settings_color_palette">Couleur d\'accentuation</string>
|
||||
<string name="sk_poll_allow_multiple">Autoriser plusieurs choix</string>
|
||||
<string name="sk_translate_post">Traduire</string>
|
||||
<string name="sk_translate_show_original">Afficher l\'original</string>
|
||||
@@ -59,4 +59,6 @@
|
||||
<string name="sk_example_domain">exemple.social</string>
|
||||
<string name="sk_welcome_title">Bienvenue !</string>
|
||||
<string name="sk_welcome_text">Le requin vous salue ! Pour commencer, veuillez entrer le nom de domaine de votre instance personnelle ci-dessous.</string>
|
||||
<string name="sk_color_palette_material3">Système</string>
|
||||
<string name="sk_color_palette_red">Rouge</string>
|
||||
</resources>
|
||||
@@ -28,7 +28,7 @@
|
||||
<string name="sk_app_name">Moshidon</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">Kontribusi ke Moshidon</string>
|
||||
<string name="sk_settings_contribute">Berkontribusi ke Moshidon</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>
|
||||
@@ -40,11 +40,25 @@
|
||||
<string name="sk_settings_show_federated_timeline">Tampilkan lini masa federasi</string>
|
||||
<string name="sk_notification_type_status">Kiriman</string>
|
||||
<string name="sk_notify_posts">Notifikasi kiriman</string>
|
||||
<string name="sk_settings_color_picker">Warna tema</string>
|
||||
<string name="sk_color_theme_pink">Merah muda</string>
|
||||
<string name="sk_color_theme_purple">Ungu</string>
|
||||
<string name="sk_color_theme_green">Hijau</string>
|
||||
<string name="sk_color_theme_blue">Biru</string>
|
||||
<string name="sk_color_theme_brown">Cokelat</string>
|
||||
<string name="sk_color_theme_yellow">Kuning</string>
|
||||
<string name="sk_settings_color_palette">Warna tema</string>
|
||||
<string name="sk_color_palette_pink">Merah Muda</string>
|
||||
<string name="sk_color_palette_purple">Ungu</string>
|
||||
<string name="sk_color_palette_green">Hijau</string>
|
||||
<string name="sk_color_palette_blue">Biru</string>
|
||||
<string name="sk_color_palette_brown">Cokelat</string>
|
||||
<string name="sk_color_palette_yellow">Kuning</string>
|
||||
<string name="sk_poll_allow_multiple">Perbolehkan beberapa pilihan</string>
|
||||
<string name="sk_clear_recent_languages">Hapus bahasa terkini yang digunakan</string>
|
||||
<string name="sk_welcome_title">Selamat datang!</string>
|
||||
<string name="sk_confirm_clear_recent_languages">Apakah Anda yakin ingin menghapus bahasa terkini yang Anda gunakan\?</string>
|
||||
<string name="sk_color_palette_material3">Sistem</string>
|
||||
<string name="sk_available_languages">Bahasa yang tersedia</string>
|
||||
<string name="sk_language_name">%s (%s)</string>
|
||||
<string name="sk_translate_post">Terjemahkan</string>
|
||||
<string name="sk_translate_show_original">Tampilkan yang asli</string>
|
||||
<string name="sk_post_language">Bahasa: %s</string>
|
||||
<string name="sk_example_domain">contoh.social</string>
|
||||
<string name="sk_color_palette_red">Merah</string>
|
||||
<string name="sk_translated_using">Diterjemahkan menggunakan %s</string>
|
||||
<string name="sk_welcome_text">Hiu menyapamu! Untuk memulai, silakan memasukkan nama domain instansi Anda di bawah.</string>
|
||||
</resources>
|
||||
@@ -2,13 +2,13 @@
|
||||
<resources>
|
||||
<string name="sk_notification_type_status">Post</string>
|
||||
<string name="sk_notify_posts">Notifiche post</string>
|
||||
<string name="sk_settings_color_picker">Colore del tema</string>
|
||||
<string name="sk_color_theme_pink">Rosa</string>
|
||||
<string name="sk_color_theme_purple">Viola</string>
|
||||
<string name="sk_color_theme_green">Verde</string>
|
||||
<string name="sk_color_theme_blue">Blu</string>
|
||||
<string name="sk_color_theme_brown">Marrone</string>
|
||||
<string name="sk_color_theme_yellow">Giallo</string>
|
||||
<string name="sk_settings_color_palette">Colore del tema</string>
|
||||
<string name="sk_color_palette_pink">Rosa</string>
|
||||
<string name="sk_color_palette_purple">Viola</string>
|
||||
<string name="sk_color_palette_green">Verde</string>
|
||||
<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_pinned_posts">Fissati</string>
|
||||
<string name="sk_delete_and_redraft">Elimina e riscrivi</string>
|
||||
@@ -49,14 +49,15 @@
|
||||
<string name="sk_reject_follow_request">Rifiuta richiesta di seguirti</string>
|
||||
<string name="sk_translate_post">Traduci</string>
|
||||
<string name="sk_translate_show_original">Mostra originale</string>
|
||||
<string name="sk_translated_using">Tradotto usando %s</string>
|
||||
<string name="sk_translated_using">Tradotto con %s</string>
|
||||
<string name="sk_post_language">Lingua: %s</string>
|
||||
<string name="sk_language_name">%s (%s)</string>
|
||||
<string name="sk_confirm_clear_recent_languages">Sei sicuro di voler cancellare le lingue usate di recente\?</string>
|
||||
<string name="sk_clear_recent_languages">Cancella lingue usate di recente</string>
|
||||
<string name="sk_welcome_title">Benvenuto!</string>
|
||||
<string name="sk_example_domain">example.social</string>
|
||||
<string name="sk_poll_allow_multiple">Permetti scelta multipla</string>
|
||||
<string name="sk_poll_allow_multiple">Consenti scelte multiple</string>
|
||||
<string name="sk_available_languages">Lingue disponibili</string>
|
||||
<string name="sk_welcome_text">Lo squalo ti saluta! Per iniziare inserisci il dominio dell\'istanza a cui sei iscritto.</string>
|
||||
<string name="sk_color_palette_material3">Sistema</string>
|
||||
</resources>
|
||||
@@ -39,13 +39,13 @@
|
||||
<string name="sk_settings_show_federated_timeline">연합 타임라인 표시</string>
|
||||
<string name="sk_notification_type_status">게시물</string>
|
||||
<string name="sk_notify_posts">게시물 알림</string>
|
||||
<string name="sk_settings_color_picker">테마 색상</string>
|
||||
<string name="sk_color_theme_pink">분홍색</string>
|
||||
<string name="sk_color_theme_purple">보라색</string>
|
||||
<string name="sk_color_theme_green">초록색</string>
|
||||
<string name="sk_color_theme_blue">파란색</string>
|
||||
<string name="sk_color_theme_brown">갈색</string>
|
||||
<string name="sk_color_theme_yellow">노란색</string>
|
||||
<string name="sk_settings_color_palette">테마 색상</string>
|
||||
<string name="sk_color_palette_pink">분홍색</string>
|
||||
<string name="sk_color_palette_purple">보라색</string>
|
||||
<string name="sk_color_palette_green">초록색</string>
|
||||
<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_poll_allow_multiple">다중 선택 허용</string>
|
||||
<string name="sk_translate_post">번역하기</string>
|
||||
@@ -59,4 +59,6 @@
|
||||
<string name="sk_example_domain">example.social</string>
|
||||
<string name="sk_welcome_title">환영합니다!</string>
|
||||
<string name="sk_welcome_text">상어가 당신을 맞이합니다! 시작하기 위해, 아래에 사용하시는 인스턴스의 도메인 이름을 입력해주세요.</string>
|
||||
<string name="sk_color_palette_material3">시스템</string>
|
||||
<string name="sk_color_palette_red">빨간색</string>
|
||||
</resources>
|
||||
@@ -40,13 +40,13 @@
|
||||
<string name="sk_visibility_unlisted">Niewidoczny</string>
|
||||
<string name="sk_notification_type_status">Wpisy</string>
|
||||
<string name="sk_notify_posts">Powiadomienia wpisów</string>
|
||||
<string name="sk_settings_color_picker">Motyw</string>
|
||||
<string name="sk_color_theme_pink">Różowy</string>
|
||||
<string name="sk_color_theme_purple">Fioletowy</string>
|
||||
<string name="sk_color_theme_green">Zielony</string>
|
||||
<string name="sk_color_theme_blue">Niebieski</string>
|
||||
<string name="sk_color_theme_brown">Brązowy</string>
|
||||
<string name="sk_color_theme_yellow">Żółty</string>
|
||||
<string name="sk_settings_color_palette">Motyw</string>
|
||||
<string name="sk_color_palette_pink">Różowy</string>
|
||||
<string name="sk_color_palette_purple">Fioletowy</string>
|
||||
<string name="sk_color_palette_green">Zielony</string>
|
||||
<string name="sk_color_palette_blue">Niebieski</string>
|
||||
<string name="sk_color_palette_brown">Brązowy</string>
|
||||
<string name="sk_color_palette_yellow">Żółty</string>
|
||||
<string name="sk_poll_allow_multiple">Pozwalaj na wybieranie wielu opcji</string>
|
||||
<string name="sk_translate_post">Przetłumacz</string>
|
||||
<string name="sk_translate_show_original">Pokaż oryginał</string>
|
||||
|
||||
@@ -38,14 +38,14 @@
|
||||
<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>
|
||||
<string name="sk_color_theme_purple">Roxo</string>
|
||||
<string name="sk_color_theme_green">Verde</string>
|
||||
<string name="sk_color_theme_blue">Azul</string>
|
||||
<string name="sk_color_theme_brown">Marrom</string>
|
||||
<string name="sk_color_theme_yellow">Amarelo</string>
|
||||
<string name="sk_color_theme_pink">Rosa</string>
|
||||
<string name="sk_color_palette_purple">Roxo</string>
|
||||
<string name="sk_color_palette_green">Verde</string>
|
||||
<string name="sk_color_palette_blue">Azul</string>
|
||||
<string name="sk_color_palette_brown">Marrom</string>
|
||||
<string name="sk_color_palette_yellow">Amarelo</string>
|
||||
<string name="sk_color_palette_pink">Rosa</string>
|
||||
<string name="sk_notification_type_status">Postagens</string>
|
||||
<string name="sk_settings_color_picker">Cor do tema</string>
|
||||
<string name="sk_settings_color_palette">Cor do tema</string>
|
||||
<string name="sk_translate_post">Traduzir</string>
|
||||
<string name="sk_translate_show_original">Mostrar original</string>
|
||||
<string name="sk_translated_using">Traduzido usando %s</string>
|
||||
@@ -55,4 +55,10 @@
|
||||
<string name="sk_confirm_clear_recent_languages">Tem certeza de que deseja limpar os idiomas usados recentemente\?</string>
|
||||
<string name="sk_clear_recent_languages">Limpar idiomas usados recentemente</string>
|
||||
<string name="sk_notify_posts">Notificações de posts</string>
|
||||
<string name="sk_poll_allow_multiple">Permitir múltiplas escolhas</string>
|
||||
<string name="sk_welcome_text">O tubarão te cumprimenta! Para começar, por favor, digite abaixo o nome de domínio de sua instância de origem.</string>
|
||||
<string name="sk_example_domain">exemplo.social</string>
|
||||
<string name="sk_welcome_title">Bem vindo!</string>
|
||||
<string name="sk_color_palette_material3">Sistema</string>
|
||||
<string name="sk_color_palette_red">Vermelho</string>
|
||||
</resources>
|
||||
@@ -17,11 +17,11 @@
|
||||
<string name="sk_settings_app_version">Moshidon v%1$s (%2$d)</string>
|
||||
<string name="sk_notification_type_status">Публикации</string>
|
||||
<string name="sk_notify_posts">Отправляет публикацию</string>
|
||||
<string name="sk_settings_color_picker">Цветовая схема</string>
|
||||
<string name="sk_color_theme_pink">Розовый</string>
|
||||
<string name="sk_color_theme_purple">Фиолетовый</string>
|
||||
<string name="sk_color_theme_brown">Коричневый</string>
|
||||
<string name="sk_color_theme_yellow">Жёлтый</string>
|
||||
<string name="sk_settings_color_palette">Цветовая схема</string>
|
||||
<string name="sk_color_palette_pink">Розовый</string>
|
||||
<string name="sk_color_palette_purple">Фиолетовый</string>
|
||||
<string name="sk_color_palette_brown">Коричневый</string>
|
||||
<string name="sk_color_palette_yellow">Жёлтый</string>
|
||||
<string name="sk_translate_show_original">Показать оригинальную публикацию</string>
|
||||
<string name="sk_translated_using">Переведено через %s</string>
|
||||
<string name="sk_available_languages">Доступные языки</string>
|
||||
@@ -46,11 +46,19 @@
|
||||
<string name="sk_settings_always_reveal_content_warnings">Всегда раскрывать предупреждения о непристойном контенте</string>
|
||||
<string name="sk_settings_contribute">Внести свой код в Moshidon</string>
|
||||
<string name="sk_settings_show_federated_timeline">Показывать федеративную временную шкалу</string>
|
||||
<string name="sk_color_theme_green">Зелёный</string>
|
||||
<string name="sk_color_theme_blue">Синий</string>
|
||||
<string name="sk_color_palette_green">Зелёный</string>
|
||||
<string name="sk_color_palette_blue">Синий</string>
|
||||
<string name="sk_translate_post">Перевести</string>
|
||||
<string name="sk_post_language">Язык: %s</string>
|
||||
<string name="sk_clear_recent_languages">Очистить недавно использованные языки</string>
|
||||
<string name="sk_confirm_clear_recent_languages">Вы точно хотите очистить недавно использованные языки\?</string>
|
||||
<string name="sk_welcome_text">Акула приветствует вас! Чтобы начать, пожалуйста, введите домен своего домашнего сервера (инстанса) ниже.</string>
|
||||
<string name="sk_poll_allow_multiple">Разрешить несколько вариантов ответа</string>
|
||||
<string name="sk_user_post_notifications_on">Уведомления о постах %s включены</string>
|
||||
<string name="sk_user_post_notifications_off">Уведомления о новых постах %s отключены</string>
|
||||
<string name="sk_color_palette_material3">Система</string>
|
||||
<string name="sk_settings_show_boosts">Показать репосты</string>
|
||||
<string name="sk_settings_show_interaction_counts">Показывать количество взаимодействий</string>
|
||||
<string name="sk_disable_marquee">Отключить прокручиваемый текст в заголовках</string>
|
||||
<string name="sk_color_palette_red">Красный</string>
|
||||
</resources>
|
||||
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="sk_notify_posts">Сповіщення про пости</string>
|
||||
<string name="sk_settings_color_picker">Колірна тема</string>
|
||||
<string name="sk_color_theme_purple">Фіолетовий</string>
|
||||
<string name="sk_color_theme_green">Зелений</string>
|
||||
<string name="sk_color_theme_blue">Синий</string>
|
||||
<string name="sk_color_theme_brown">Коричневий</string>
|
||||
<string name="sk_color_theme_yellow">Жовтий</string>
|
||||
<string name="sk_settings_color_palette">Колірна тема</string>
|
||||
<string name="sk_color_palette_purple">Фіолетовий</string>
|
||||
<string name="sk_color_palette_green">Зелений</string>
|
||||
<string name="sk_color_palette_blue">Синий</string>
|
||||
<string name="sk_color_palette_brown">Коричневий</string>
|
||||
<string name="sk_color_palette_yellow">Жовтий</string>
|
||||
<string name="sk_poll_allow_multiple">Дозволити кілька виборів</string>
|
||||
<string name="sk_translate_post">Перекласти</string>
|
||||
<string name="sk_translate_show_original">Показати оригінал</string>
|
||||
@@ -17,7 +17,7 @@
|
||||
<string name="sk_clear_recent_languages">Очистити нещодавно використані мови</string>
|
||||
<string name="sk_settings_always_reveal_content_warnings">Завжди відкривати вміст</string>
|
||||
<string name="sk_notification_type_status">Пости</string>
|
||||
<string name="sk_color_theme_pink">Рожевий</string>
|
||||
<string name="sk_color_palette_pink">Рожевий</string>
|
||||
<string name="sk_confirm_clear_recent_languages">Ви впевнені, що хочете очистити нещодавно використані мови\?</string>
|
||||
<string name="sk_app_name">Moshidon</string>
|
||||
<string name="sk_pinned_posts">Закріплене</string>
|
||||
|
||||
@@ -38,13 +38,13 @@
|
||||
<string name="sk_settings_show_federated_timeline">显示联邦时间轴</string>
|
||||
<string name="sk_follow_requests">关注请求</string>
|
||||
<string name="sk_settings_always_reveal_content_warnings">总是显示内容警告</string>
|
||||
<string name="sk_settings_color_picker">主题色</string>
|
||||
<string name="sk_color_theme_pink">粉</string>
|
||||
<string name="sk_color_theme_purple">紫</string>
|
||||
<string name="sk_color_theme_green">绿</string>
|
||||
<string name="sk_color_theme_blue">蓝</string>
|
||||
<string name="sk_color_theme_brown">棕</string>
|
||||
<string name="sk_color_theme_yellow">黄</string>
|
||||
<string name="sk_settings_color_palette">主题色</string>
|
||||
<string name="sk_color_palette_pink">粉</string>
|
||||
<string name="sk_color_palette_purple">紫</string>
|
||||
<string name="sk_color_palette_green">绿</string>
|
||||
<string name="sk_color_palette_blue">蓝</string>
|
||||
<string name="sk_color_palette_brown">棕</string>
|
||||
<string name="sk_color_palette_yellow">黄</string>
|
||||
<string name="sk_notification_type_status">嘟文</string>
|
||||
<string name="sk_notify_posts">嘟文通知</string>
|
||||
</resources>
|
||||
4
metadata/id/changelogs/55.txt
Normal file
4
metadata/id/changelogs/55.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
- Diperbaiki perenderan tag HTML dan aktifkan perenderan format Markdown
|
||||
- Dimulai <a href="https://translate.codeberg.org/projects/megalodon">proyek terjemahkan Weblate</a>
|
||||
- Ditambahkan saklar untuk lini masa Federasi
|
||||
- Versi 52-54 adalah perubahan kecil untuk sebuah rilis di Google Play
|
||||
6
metadata/id/changelogs/56.txt
Normal file
6
metadata/id/changelogs/56.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
- Tema warna kustom oleh @LucasGGamerM
|
||||
- Logo teks "megalodon" baru dikirim oleh @LucasGGamerM
|
||||
- Pencarian emoji lebih baik saat menulis kiriman
|
||||
- Diubah antarmuka pemungutan suara (tampilkan suara sendiri, selalu tampilkan tombol kirim suara, jangan potong jawaban panjang)
|
||||
- Ditambahkan pengaturan notifikasi dorong untuk notifikasi kiriman
|
||||
- Perbaikan kutu
|
||||
6
metadata/id/changelogs/59.txt
Normal file
6
metadata/id/changelogs/59.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
- Ditambahkan pemilih bahasa
|
||||
- Ditambahkan kemampuan terjemahan
|
||||
- Ditingkatkan semantik untuk kiriman suara pada pemungutan suara (tombol radio dan kotak centang)
|
||||
- Ditambahkan opsi untuk perbolehkan mengirim suara beberapa opsi pada pemungutan suara
|
||||
- Layar masuk baru
|
||||
- Perbaikan kutu
|
||||
@@ -9,3 +9,7 @@ Megalodon adalah versi modifikasi <a href="https://github.com/mastodon/mastodon-
|
||||
- <b>Ikuti tagar</b>: Lihat kiriman baru dari tagar spesifik secara langsung dalam lini masa beranda Anda dengan mengikutinya.
|
||||
- <b>Menjawab permintaan pengikut</b>: Tolak atau terima permintaan pengikut dari notifikasi Anda atau daftar permintaan pengikut khusus.
|
||||
- <b>Hapus dan draf ulang</b>: Fitur yang banyak disukai yang membuat penyuntingan memungkinkan tanpa fungsi penyuntingan yang asli.
|
||||
- <b>Pemilih bahasa</b>: Pilih bahasa untuk setiap kiriman tanpa kesulitan supaya saringan dan terjemahan bekerja dengan benar.
|
||||
- <b>Terjemahan</b>: Terjemahkan kiriman dalam Megalodon dengan mudah! Hanya bekerja jika fitur juga tersedia di Mastodon Web Anda.
|
||||
- <b>Indikator keterlihatan kiriman</b>: Ketika membuka atau membalas kiriman, sebuah ikon kecil yang menandakan keterlihatan kiriman akan ditampilkan.
|
||||
- <b>Tema warna</b>: Jika Anda tidak ingin warna Merah Muda bawaan (hiunya diam-diam menghakimimu), tema warna Moshidon akan menyelesaikan masalah itu.
|
||||
|
||||
@@ -2,4 +2,5 @@
|
||||
- 번역 기능 추가
|
||||
- 투표 기능의 보다 명확한 표현 (라디오 버튼 및 체크박스)
|
||||
- 투표 생성 시 다중 선택이 가능하도록 옵션 추가
|
||||
- 새로운 로그인 화면
|
||||
- 버그 수정
|
||||
|
||||
@@ -9,3 +9,7 @@ Megalodon은 <a href="https://github.com/mastodon/mastodon-android">공식 마
|
||||
- <b>해시태그 팔로우</b>: 특정 해시태그를 팔로우하고 해시태그가 포함된 새로운 게시물을 홈 타임라인에서 바로 확인하세요.
|
||||
- <b>팔로우 요청에 응답</b>: 알림 또는 전용 팔로우 요청 목록을 통해 팔로우 요청을 허가하거나 거부하세요.
|
||||
- <b>삭제하고 다시 쓰기</b>: 실제 수정 기능 없이도 수정이 가능하도록 해 많은 사랑을 받고 있는 기능입니다.
|
||||
- <b>언어 선택기</b>: 게시물을 작성할 때 불편함 없이 언어를 선택하고 필터와 번역 기능이 제대로 동작할 수 있도록 하세요.
|
||||
- <b>번역</b>: Megaloton에서 바로 게시물을 번역해보세요! 이 기능은 사용하시는 Mastodon 웹에서 지원해야 사용하실 수 있습니다.
|
||||
- <b>게시물 공개 범위 표시기</b>: 게시물을 열거나 답글을 달 때, 게시물의 공개 범위를 편리한 아이콘으로 표시합니다.
|
||||
- <b>색상 테마</b>: 기본 핑크 색상이 마음에 들지 않으신다면(상어가 당신을 넌지시 바라봅니다), Moshidon의 색상 테마가 도움을 줄 것입니다.
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
Megalodon é uma versão modificada do <a href="https://github.com/mastodon/mastodon-android">aplicativo oficial do Mastodon para Android</a> adicionando importantes funcionalidades que estão faltando no aplicativo oficial, como a linha do tempo federada, postagens não listadas e um visualizador de descrições de imagem.
|
||||
Megalodon é uma versão modificada do aplicativo <a href="https://github.com/mastodon/mastodon-android">official Mastodon Android app</a> adicionando características importantes que estão faltando no aplicativo oficial, tais como a linha do tempo federada, postagem não listada e um visualizador de descrição de imagem.
|
||||
|
||||
<b>Principais recursos</b>
|
||||
<b>Características-chave</b>
|
||||
|
||||
- <b>Postagem não listada</b>: Poste publicamente sem que sua postagem apareça nas tendências, hashtags ou linhas do tempo públicas.
|
||||
- <b>Linha do tempo federada</b>: Veja todas as postagens públicas de pessoas em todo o Fediverso que sua instância está conectada.
|
||||
- <b>Visualizador de descrição de imagem</b>: Verifique rapidamente se uma imagem ou vídeo tem um texto alternativo anexado a ele.
|
||||
- <b>Fixando postagens</b>: Fixe suas postagens mais importantes em seu perfil e veja o que outras pessoas fixaram usando a guia "Fixado".
|
||||
- <b>Seguir hashtags</b>: Veja novas postagens de hashtags específicas diretamente em sua linha do tempo inicial seguindo-as.
|
||||
- <b>Respondendo a solicitações de seguir</b>: Aceite ou recuse pedidos para seguir de suas notificações ou da lista dedicada de solicitações de seguir.
|
||||
- <b>Excluir e reescrever</b>: O recurso muito amado que tornou a edição possível sem uma função de edição real.
|
||||
- <b>Publicação na lista</b>: Postar publicamente sem que seu post apareça em tendências, hashtags ou linhas de tempo públicas.
|
||||
- <b>Linha de tempo federada</b>: Veja todas as postagens públicas de pessoas em todos os outros bairros Fediverse aos quais sua instância de origem está conectada.
|
||||
- <b>Visualizador de descrição de imagens</b>: Verifique rapidamente se uma imagem ou vídeo tem um texto alt anexado a ele.
|
||||
- <b>Fixar posts</b>: Fixe seus posts mais importantes em seu perfil e veja o que os outros fixaram usando a aba "Fixado".
|
||||
- <b>Seguir hashtags</b>: Veja novos posts de hashtags específicos diretamente em sua linha de tempo de casa, seguindo-os.
|
||||
- <b>Responder às solicitações</b>: Aceitar ou recusar após as solicitações de suas notificações ou da lista dedicada de solicitações Follow.
|
||||
- <b>Deletar e reescrever</b>: O recurso muito apreciado que tornou possível a edição sem uma função de edição real.
|
||||
- <b>Seletor de idioma</b>: Selecione indolor o idioma para cada post que você fizer, para que os filtros e a tradução estejam funcionando corretamente.
|
||||
- <b>Tradução</b>: Traduza facilmente os postes dentro do Megalodon! Só funciona se o recurso também estiver disponível em seu Mastodon Web.
|
||||
- <b>Indicador de visibilidade de post</b>: Ao abrir ou responder a um post, será exibido um ícone indicando a visibilidade do post.
|
||||
- <b>Temas de cor</b>: Caso você não goste da cor rosa padrão (o tubarão está silenciosamente julgando você), os temas de cor de Moshidon o cobrirão.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
Megalodon - это модифицированная версия <a href="https://github.com/mastodon/mastodon-android">официального клиента Mastodon на Android</a>, добавляющая важные функции, отсутствующие в официальном приложении, такие как объединенная временная шкала, "скрытая" публикация и просмотр описания изображений.
|
||||
|
||||
<b>Основные отличия от официального клиента</b>
|
||||
|
||||
- <b>Скрытая Публикация</b>: Публикуйте публично, без того, чтобы ваш пост отображался в трендах, хэштегах или общедоступных временных шкалах.
|
||||
- <b> Объединенная временная шкала</b>: смотрите все общедоступные сообщения от людей во всех других районах Fediverse, к которым подключен ваш домашний сервер (инстанс).
|
||||
- <b> Просмотр описания изображения</b>: быстро проверьте, прикреплен ли к изображению или видео альтернативный текст.
|
||||
@@ -8,3 +9,7 @@ Megalodon - это модифицированная версия <a href="https:
|
||||
- <b> Подписывайтесь на хэштеги</b>: смотрите новые сообщения с определенными хэштегами непосредственно на своей домашней временной шкале, следуя за ними.
|
||||
- <b> Ответы на запросы подписчиков</b>: принимайте или отклоняйте запросы подписчиков из ваших уведомлений или специального списка запросов подписчиков.
|
||||
- <b>"Удалить и исправить"</b>: очень любимая функция, которая сделала возможным редактирование без реальной функции редактирования.
|
||||
- <b>Выбор языка</b>: Безболезненно выбирайте язык для каждой публикации, которую вы делаете, чтобы фильтры и перевод работали правильно.
|
||||
- <b>Перевод публикации</b>: Легко переводите публикации прямо внутри Megalodon! Работает только в том случае, если администратор вашего домашнего сервера включил эту функцию для Web-клиента Mastodon.
|
||||
- <b>Индикатор видимости поста</b>: При открытии поста или ответе на него будет отображаться удобный значок, указывающий на видимость поста.
|
||||
- <b>Цветовая схема</b>: Если вам по умолчанию не устраивает розовый цвет в клиенте (акула молча вас осуждает), цветовые схемы Moshidon помогут вам.
|
||||
|
||||
Reference in New Issue
Block a user