Compare commits
122 Commits
v1.2.0+for
...
v1.2.0+for
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf9afba590 | ||
|
|
b667afc7cd | ||
|
|
21b0736842 | ||
|
|
8bd3c7cc28 | ||
|
|
4db90b87f4 | ||
|
|
46fd0be0eb | ||
|
|
05a966869b | ||
|
|
6fef51fcbb | ||
|
|
d5b6c02b22 | ||
|
|
6cd722dbef | ||
|
|
8dfc1ecae8 | ||
|
|
fdca799a5f | ||
|
|
def79e591b | ||
|
|
093a27970d | ||
|
|
9a1e33a776 | ||
|
|
a4a206eae6 | ||
|
|
21ee5fc2bf | ||
|
|
7df72e6bc6 | ||
|
|
9ceea8de99 | ||
|
|
79d48a12a9 | ||
|
|
473d3a5196 | ||
|
|
43717634f6 | ||
|
|
6ba8555adf | ||
|
|
722ad8c53e | ||
|
|
b0b497ed46 | ||
|
|
6c881eccd2 | ||
|
|
94b92bd7c1 | ||
|
|
676b195aee | ||
|
|
4591731cdc | ||
|
|
fc5eeae9e7 | ||
|
|
aaa88c45f7 | ||
|
|
5d91e8030c | ||
|
|
c9be188d19 | ||
|
|
ecc8daa8f1 | ||
|
|
5bbe11bf45 | ||
|
|
e52170abea | ||
|
|
0f87fc7924 | ||
|
|
cc7c4fc95f | ||
|
|
4a2dcdf701 | ||
|
|
ede47af962 | ||
|
|
70e4cb2286 | ||
|
|
c5e8460516 | ||
|
|
f852dac1e5 | ||
|
|
374626cb32 | ||
|
|
aefa0b89ae | ||
|
|
9cc8b2668c | ||
|
|
94b862a3ff | ||
|
|
f71bb6b78c | ||
|
|
499ac8f727 | ||
|
|
938ae97cac | ||
|
|
e2193e8e3c | ||
|
|
16f907c91f | ||
|
|
584700225c | ||
|
|
bad72985cb | ||
|
|
56b24420d1 | ||
|
|
a9b828001c | ||
|
|
be050abf7e | ||
|
|
2d071ca252 | ||
|
|
abf94e1e70 | ||
|
|
2991c7421c | ||
|
|
834f84f995 | ||
|
|
6bf713c96c | ||
|
|
72b16be297 | ||
|
|
0c7f27b3ac | ||
|
|
ca101748eb | ||
|
|
3584c123d6 | ||
|
|
a2fd4be339 | ||
|
|
656364db60 | ||
|
|
884347da12 | ||
|
|
675c49a922 | ||
|
|
a3146d6cdd | ||
|
|
d769f757ed | ||
|
|
654e3eb36b | ||
|
|
f62ba685d1 | ||
|
|
8cc5678b38 | ||
|
|
592eb2d589 | ||
|
|
0bf31de1f1 | ||
|
|
7fd32cab3d | ||
|
|
0c63b99e6c | ||
|
|
5881f5fa05 | ||
|
|
5e8ede6ab8 | ||
|
|
1124bab96b | ||
|
|
cbcdf09bfe | ||
|
|
575ca6251c | ||
|
|
9c83a5aaeb | ||
|
|
bc3e46eae1 | ||
|
|
6756b36e87 | ||
|
|
36808e4e8e | ||
|
|
1c38570609 | ||
|
|
2dc6deb93a | ||
|
|
0b58d19811 | ||
|
|
50362d630b | ||
|
|
bfcd67cbaf | ||
|
|
ea190c0597 | ||
|
|
e68160800d | ||
|
|
73481f4a1f | ||
|
|
0303e59fc1 | ||
|
|
0c0d36da62 | ||
|
|
e7e0b8841c | ||
|
|
79d9abe7f7 | ||
|
|
684fbc0050 | ||
|
|
03973d41be | ||
|
|
06c533bf5a | ||
|
|
cc64a20e53 | ||
|
|
d633b6f1d4 | ||
|
|
7b68baef0d | ||
|
|
fb5ef921f7 | ||
|
|
da44e50679 | ||
|
|
93d89f93b2 | ||
|
|
cce64f9a76 | ||
|
|
afb396acd8 | ||
|
|
0943908173 | ||
|
|
b018788cd1 | ||
|
|
4a315e73eb | ||
|
|
d0a9ba041d | ||
|
|
b01ef6d5a7 | ||
|
|
604e581139 | ||
|
|
082f697b40 | ||
|
|
8c61660cfc | ||
|
|
d6933be3cd | ||
|
|
ca6cfd2b91 | ||
|
|
20960bdd57 |
@@ -9,8 +9,8 @@ android {
|
|||||||
applicationId "org.joinmastodon.android.sk"
|
applicationId "org.joinmastodon.android.sk"
|
||||||
minSdk 23
|
minSdk 23
|
||||||
targetSdk 33
|
targetSdk 33
|
||||||
versionCode 77
|
versionCode 79
|
||||||
versionName "1.2.0+fork.77"
|
versionName "1.2.0+fork.79"
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
resConfigs "ar-rSA", "be-rBY", "bn-rBD", "bs-rBA", "ca-rES", "cs-rCZ", "da-rDK", "de-rDE", "el-rGR", "es-rES", "eu-rES", "fa-rIR", "fi-rFI", "fil-rPH", "fr-rFR", "ga-rIE", "gd-rGB", "gl-rES", "hi-rIN", "hr-rHR", "hu-rHU", "hy-rAM", "ig-rNG", "in-rID", "is-rIS", "it-rIT", "iw-rIL", "ja-rJP", "kab", "ko-rKR", "my-rMM", "nl-rNL", "no-rNO", "oc-rFR", "pl-rPL", "pt-rBR", "pt-rPT", "ro-rRO", "ru-rRU", "si-rLK", "sl-rSI", "sv-rSE", "th-rTH", "tr-rTR", "uk-rUA", "vi-rVN", "zh-rCN", "zh-rTW"
|
resConfigs "ar-rSA", "be-rBY", "bn-rBD", "bs-rBA", "ca-rES", "cs-rCZ", "da-rDK", "de-rDE", "el-rGR", "es-rES", "eu-rES", "fa-rIR", "fi-rFI", "fil-rPH", "fr-rFR", "ga-rIE", "gd-rGB", "gl-rES", "hi-rIN", "hr-rHR", "hu-rHU", "hy-rAM", "ig-rNG", "in-rID", "is-rIS", "it-rIT", "iw-rIL", "ja-rJP", "kab", "ko-rKR", "my-rMM", "nl-rNL", "no-rNO", "oc-rFR", "pl-rPL", "pt-rBR", "pt-rPT", "ro-rRO", "ru-rRU", "si-rLK", "sl-rSI", "sv-rSE", "th-rTH", "tr-rTR", "uk-rUA", "vi-rVN", "zh-rCN", "zh-rTW"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ public class GlobalUserPreferences{
|
|||||||
public static boolean collapseLongPosts;
|
public static boolean collapseLongPosts;
|
||||||
public static boolean spectatorMode;
|
public static boolean spectatorMode;
|
||||||
public static boolean autoHideFab;
|
public static boolean autoHideFab;
|
||||||
|
public static boolean replyLineAboveHeader;
|
||||||
|
public static boolean compactReblogReplyLine;
|
||||||
public static String publishButtonText;
|
public static String publishButtonText;
|
||||||
public static ThemePreference theme;
|
public static ThemePreference theme;
|
||||||
public static ColorPreference color;
|
public static ColorPreference color;
|
||||||
@@ -55,6 +57,11 @@ public class GlobalUserPreferences{
|
|||||||
public static Set<String> accountsWithLocalOnlySupport;
|
public static Set<String> accountsWithLocalOnlySupport;
|
||||||
public static Set<String> accountsInGlitchMode;
|
public static Set<String> accountsInGlitchMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pleroma
|
||||||
|
*/
|
||||||
|
public static String replyVisibility;
|
||||||
|
|
||||||
private static SharedPreferences getPrefs(){
|
private static SharedPreferences getPrefs(){
|
||||||
return MastodonApp.context.getSharedPreferences("global", Context.MODE_PRIVATE);
|
return MastodonApp.context.getSharedPreferences("global", Context.MODE_PRIVATE);
|
||||||
}
|
}
|
||||||
@@ -93,12 +100,15 @@ public class GlobalUserPreferences{
|
|||||||
collapseLongPosts=prefs.getBoolean("collapseLongPosts", true);
|
collapseLongPosts=prefs.getBoolean("collapseLongPosts", true);
|
||||||
spectatorMode=prefs.getBoolean("spectatorMode", false);
|
spectatorMode=prefs.getBoolean("spectatorMode", false);
|
||||||
autoHideFab=prefs.getBoolean("autoHideFab", true);
|
autoHideFab=prefs.getBoolean("autoHideFab", true);
|
||||||
|
replyLineAboveHeader=prefs.getBoolean("replyLineAboveHeader", true);
|
||||||
|
compactReblogReplyLine=prefs.getBoolean("compactReblogReplyLine", true);
|
||||||
publishButtonText=prefs.getString("publishButtonText", "");
|
publishButtonText=prefs.getString("publishButtonText", "");
|
||||||
theme=ThemePreference.values()[prefs.getInt("theme", 0)];
|
theme=ThemePreference.values()[prefs.getInt("theme", 0)];
|
||||||
recentLanguages=fromJson(prefs.getString("recentLanguages", null), recentLanguagesType, new HashMap<>());
|
recentLanguages=fromJson(prefs.getString("recentLanguages", null), recentLanguagesType, new HashMap<>());
|
||||||
pinnedTimelines=fromJson(prefs.getString("pinnedTimelines", null), pinnedTimelinesType, new HashMap<>());
|
pinnedTimelines=fromJson(prefs.getString("pinnedTimelines", null), pinnedTimelinesType, new HashMap<>());
|
||||||
accountsWithLocalOnlySupport=prefs.getStringSet("accountsWithLocalOnlySupport", new HashSet<>());
|
accountsWithLocalOnlySupport=prefs.getStringSet("accountsWithLocalOnlySupport", new HashSet<>());
|
||||||
accountsInGlitchMode=prefs.getStringSet("accountsInGlitchMode", new HashSet<>());
|
accountsInGlitchMode=prefs.getStringSet("accountsInGlitchMode", new HashSet<>());
|
||||||
|
replyVisibility=prefs.getString("replyVisibility", null);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
color=ColorPreference.valueOf(prefs.getString("color", ColorPreference.PINK.name()));
|
color=ColorPreference.valueOf(prefs.getString("color", ColorPreference.PINK.name()));
|
||||||
@@ -134,14 +144,17 @@ public class GlobalUserPreferences{
|
|||||||
.putBoolean("collapseLongPosts", collapseLongPosts)
|
.putBoolean("collapseLongPosts", collapseLongPosts)
|
||||||
.putBoolean("spectatorMode", spectatorMode)
|
.putBoolean("spectatorMode", spectatorMode)
|
||||||
.putBoolean("autoHideFab", autoHideFab)
|
.putBoolean("autoHideFab", autoHideFab)
|
||||||
|
.putBoolean("compactReblogReplyLine", compactReblogReplyLine)
|
||||||
.putString("publishButtonText", publishButtonText)
|
.putString("publishButtonText", publishButtonText)
|
||||||
.putBoolean("bottomEncoding", bottomEncoding)
|
.putBoolean("bottomEncoding", bottomEncoding)
|
||||||
|
.putBoolean("replyLineAboveHeader", replyLineAboveHeader)
|
||||||
.putInt("theme", theme.ordinal())
|
.putInt("theme", theme.ordinal())
|
||||||
.putString("color", color.name())
|
.putString("color", color.name())
|
||||||
.putString("recentLanguages", gson.toJson(recentLanguages))
|
.putString("recentLanguages", gson.toJson(recentLanguages))
|
||||||
.putString("pinnedTimelines", gson.toJson(pinnedTimelines))
|
.putString("pinnedTimelines", gson.toJson(pinnedTimelines))
|
||||||
.putStringSet("accountsWithLocalOnlySupport", accountsWithLocalOnlySupport)
|
.putStringSet("accountsWithLocalOnlySupport", accountsWithLocalOnlySupport)
|
||||||
.putStringSet("accountsInGlitchMode", accountsInGlitchMode)
|
.putStringSet("accountsInGlitchMode", accountsInGlitchMode)
|
||||||
|
.putString("replyVisibility", replyVisibility)
|
||||||
.apply();
|
.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import android.app.NotificationChannel;
|
|||||||
import android.app.NotificationChannelGroup;
|
import android.app.NotificationChannelGroup;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
|
import android.app.RemoteInput;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@@ -16,15 +17,25 @@ import android.util.Log;
|
|||||||
|
|
||||||
import org.joinmastodon.android.api.MastodonAPIController;
|
import org.joinmastodon.android.api.MastodonAPIController;
|
||||||
import org.joinmastodon.android.api.requests.notifications.GetNotificationByID;
|
import org.joinmastodon.android.api.requests.notifications.GetNotificationByID;
|
||||||
|
import org.joinmastodon.android.api.requests.statuses.CreateStatus;
|
||||||
|
import org.joinmastodon.android.api.requests.statuses.SetStatusBookmarked;
|
||||||
|
import org.joinmastodon.android.api.requests.statuses.SetStatusFavorited;
|
||||||
|
import org.joinmastodon.android.api.requests.statuses.SetStatusReblogged;
|
||||||
import org.joinmastodon.android.api.session.AccountSession;
|
import org.joinmastodon.android.api.session.AccountSession;
|
||||||
import org.joinmastodon.android.api.session.AccountSessionManager;
|
import org.joinmastodon.android.api.session.AccountSessionManager;
|
||||||
import org.joinmastodon.android.model.Account;
|
import org.joinmastodon.android.model.Account;
|
||||||
|
import org.joinmastodon.android.model.NotificationAction;
|
||||||
|
import org.joinmastodon.android.model.Preferences;
|
||||||
import org.joinmastodon.android.model.PushNotification;
|
import org.joinmastodon.android.model.PushNotification;
|
||||||
|
import org.joinmastodon.android.model.Status;
|
||||||
|
import org.joinmastodon.android.model.StatusPrivacy;
|
||||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||||
import org.parceler.Parcels;
|
import org.parceler.Parcels;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import me.grishka.appkit.api.Callback;
|
import me.grishka.appkit.api.Callback;
|
||||||
@@ -37,6 +48,9 @@ public class PushNotificationReceiver extends BroadcastReceiver{
|
|||||||
private static final String TAG="PushNotificationReceive";
|
private static final String TAG="PushNotificationReceive";
|
||||||
|
|
||||||
public static final int NOTIFICATION_ID=178;
|
public static final int NOTIFICATION_ID=178;
|
||||||
|
private static final String ACTION_KEY_TEXT_REPLY = "ACTION_KEY_TEXT_REPLY";
|
||||||
|
|
||||||
|
private static final int SUMMARY_ID = 791;
|
||||||
private static int notificationId = 0;
|
private static int notificationId = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -91,6 +105,35 @@ public class PushNotificationReceiver extends BroadcastReceiver{
|
|||||||
Log.w(TAG, "onReceive: invalid push notification format");
|
Log.w(TAG, "onReceive: invalid push notification format");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(intent.getBooleanExtra("fromNotificationAction", false)){
|
||||||
|
String accountID=intent.getStringExtra("accountID");
|
||||||
|
int notificationId=intent.getIntExtra("notificationId", -1);
|
||||||
|
|
||||||
|
if (notificationId >= 0){
|
||||||
|
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||||
|
notificationManager.cancel(accountID, notificationId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(intent.hasExtra("notification")){
|
||||||
|
org.joinmastodon.android.model.Notification notification=Parcels.unwrap(intent.getParcelableExtra("notification"));
|
||||||
|
String statusID=notification.status.id;
|
||||||
|
if (statusID != null) {
|
||||||
|
AccountSessionManager accountSessionManager = AccountSessionManager.getInstance();
|
||||||
|
Preferences preferences = accountSessionManager.getAccount(accountID).preferences;
|
||||||
|
|
||||||
|
switch (NotificationAction.values()[intent.getIntExtra("notificationAction", 0)]) {
|
||||||
|
case FAVORITE -> new SetStatusFavorited(statusID, true).exec(accountID);
|
||||||
|
case BOOKMARK -> new SetStatusBookmarked(statusID, true).exec(accountID);
|
||||||
|
case REBLOG -> new SetStatusReblogged(notification.status.id, true, preferences.postingDefaultVisibility).exec(accountID);
|
||||||
|
case UNDO_REBLOG -> new SetStatusReblogged(notification.status.id, false, preferences.postingDefaultVisibility).exec(accountID);
|
||||||
|
case REPLY -> handleReplyAction(context, accountID, intent, notification, notificationId, preferences);
|
||||||
|
default -> Log.w(TAG, "onReceive: Failed to get NotificationAction");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
Log.e(TAG, "onReceive: Failed to load notification");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void notify(Context context, PushNotification pn, String accountID, org.joinmastodon.android.model.Notification notification){
|
private void notify(Context context, PushNotification pn, String accountID, org.joinmastodon.android.model.Notification notification){
|
||||||
@@ -142,7 +185,7 @@ public class PushNotificationReceiver extends BroadcastReceiver{
|
|||||||
.setShowWhen(true)
|
.setShowWhen(true)
|
||||||
.setCategory(Notification.CATEGORY_SOCIAL)
|
.setCategory(Notification.CATEGORY_SOCIAL)
|
||||||
.setAutoCancel(true)
|
.setAutoCancel(true)
|
||||||
.setColor(context.getColor(R.color.primary_700));
|
.setColor(context.getColor(R.color.shortcut_icon_background));
|
||||||
|
|
||||||
if (!GlobalUserPreferences.uniformNotificationIcon) {
|
if (!GlobalUserPreferences.uniformNotificationIcon) {
|
||||||
builder.setSmallIcon(switch (pn.notificationType) {
|
builder.setSmallIcon(switch (pn.notificationType) {
|
||||||
@@ -164,6 +207,108 @@ public class PushNotificationReceiver extends BroadcastReceiver{
|
|||||||
if(AccountSessionManager.getInstance().getLoggedInAccounts().size()>1){
|
if(AccountSessionManager.getInstance().getLoggedInAccounts().size()>1){
|
||||||
builder.setSubText(accountName);
|
builder.setSubText(accountName);
|
||||||
}
|
}
|
||||||
nm.notify(accountID, GlobalUserPreferences.keepOnlyLatestNotification ? NOTIFICATION_ID : notificationId++, builder.build());
|
|
||||||
|
int id = GlobalUserPreferences.keepOnlyLatestNotification ? NOTIFICATION_ID : notificationId++;
|
||||||
|
|
||||||
|
if (notification != null){
|
||||||
|
switch (pn.notificationType){
|
||||||
|
case MENTION, STATUS -> {
|
||||||
|
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){
|
||||||
|
builder.addAction(buildReplyAction(context, id, accountID, notification));
|
||||||
|
}
|
||||||
|
builder.addAction(buildNotificationAction(context, id, accountID, notification, context.getString(R.string.button_favorite), NotificationAction.FAVORITE));
|
||||||
|
builder.addAction(buildNotificationAction(context, id, accountID, notification, context.getString(R.string.add_bookmark), NotificationAction.BOOKMARK));
|
||||||
|
if(notification.status.visibility != StatusPrivacy.DIRECT) {
|
||||||
|
builder.addAction(buildNotificationAction(context, id, accountID, notification, context.getString(R.string.button_reblog), NotificationAction.REBLOG));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case UPDATE -> {
|
||||||
|
if(notification.status.reblogged)
|
||||||
|
builder.addAction(buildNotificationAction(context, id, accountID, notification, context.getString(R.string.sk_undo_reblog), NotificationAction.UNDO_REBLOG));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
nm.notify(accountID, id, builder.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Notification.Action buildNotificationAction(Context context, int notificationId, String accountID, org.joinmastodon.android.model.Notification notification, String title, NotificationAction action){
|
||||||
|
Intent notificationIntent=new Intent(context, PushNotificationReceiver.class);
|
||||||
|
notificationIntent.putExtra("notificationId", notificationId);
|
||||||
|
notificationIntent.putExtra("fromNotificationAction", true);
|
||||||
|
notificationIntent.putExtra("accountID", accountID);
|
||||||
|
notificationIntent.putExtra("notificationAction", action.ordinal());
|
||||||
|
notificationIntent.putExtra("notification", Parcels.wrap(notification));
|
||||||
|
PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, new Random().nextInt(), notificationIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_ONE_SHOT);
|
||||||
|
|
||||||
|
return new Notification.Action.Builder(null, title, actionPendingIntent).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Notification.Action buildReplyAction(Context context, int notificationId, String accountID, org.joinmastodon.android.model.Notification notification){
|
||||||
|
String replyLabel = context.getResources().getString(R.string.button_reply);
|
||||||
|
RemoteInput remoteInput = new RemoteInput.Builder(ACTION_KEY_TEXT_REPLY)
|
||||||
|
.setLabel(replyLabel)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
Intent notificationIntent=new Intent(context, PushNotificationReceiver.class);
|
||||||
|
notificationIntent.putExtra("notificationId", notificationId);
|
||||||
|
notificationIntent.putExtra("fromNotificationAction", true);
|
||||||
|
notificationIntent.putExtra("accountID", accountID);
|
||||||
|
notificationIntent.putExtra("notificationAction", NotificationAction.REPLY.ordinal());
|
||||||
|
notificationIntent.putExtra("notification", Parcels.wrap(notification));
|
||||||
|
|
||||||
|
int flags = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ? PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT : PendingIntent.FLAG_UPDATE_CURRENT;
|
||||||
|
PendingIntent replyPendingIntent = PendingIntent.getBroadcast(context, new Random().nextInt(), notificationIntent,flags);
|
||||||
|
return new Notification.Action.Builder(null, replyLabel, replyPendingIntent).addRemoteInput(remoteInput).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleReplyAction(Context context, String accountID, Intent intent, org.joinmastodon.android.model.Notification notification, int notificationId, Preferences preferences) {
|
||||||
|
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
|
||||||
|
if (remoteInput == null) {
|
||||||
|
Log.e(TAG, "handleReplyAction: Could not get reply input");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
CharSequence input = remoteInput.getCharSequence(ACTION_KEY_TEXT_REPLY);
|
||||||
|
|
||||||
|
CreateStatus.Request req=new CreateStatus.Request();
|
||||||
|
req.status = input.toString();
|
||||||
|
req.language = preferences.postingDefaultLanguage;
|
||||||
|
req.visibility = preferences.postingDefaultVisibility;
|
||||||
|
req.inReplyToId = notification.status.id;
|
||||||
|
if(!notification.status.spoilerText.isEmpty() && GlobalUserPreferences.prefixRepliesWithRe && !notification.status.spoilerText.startsWith("re: ")){
|
||||||
|
req.spoilerText = "re: " + notification.status.spoilerText;
|
||||||
|
}
|
||||||
|
|
||||||
|
new CreateStatus(req, UUID.randomUUID().toString()).setCallback(new Callback<Status>() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Status status) {
|
||||||
|
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||||
|
Notification.Builder builder = android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O ?
|
||||||
|
new Notification.Builder(context, accountID+"_"+notification.type) :
|
||||||
|
new Notification.Builder(context)
|
||||||
|
.setPriority(Notification.PRIORITY_DEFAULT)
|
||||||
|
.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);
|
||||||
|
|
||||||
|
notification.status = status;
|
||||||
|
Intent contentIntent=new Intent(context, MainActivity.class);
|
||||||
|
contentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
contentIntent.putExtra("fromNotification", true);
|
||||||
|
contentIntent.putExtra("accountID", accountID);
|
||||||
|
contentIntent.putExtra("notification", Parcels.wrap(notification));
|
||||||
|
|
||||||
|
Notification repliedNotification = builder.setSmallIcon(R.drawable.ic_ntf_logo)
|
||||||
|
.setContentTitle(context.getString(R.string.sk_notification_action_replied, notification.status.account.displayName))
|
||||||
|
.setContentText(status.getStrippedText())
|
||||||
|
.setCategory(Notification.CATEGORY_SOCIAL)
|
||||||
|
.setContentIntent(PendingIntent.getActivity(context, notificationId, contentIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT))
|
||||||
|
.build();
|
||||||
|
notificationManager.notify(accountID, notificationId, repliedNotification);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(ErrorResponse errorResponse) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}).exec(accountID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,9 +13,11 @@ import org.joinmastodon.android.BuildConfig;
|
|||||||
import org.joinmastodon.android.MastodonApp;
|
import org.joinmastodon.android.MastodonApp;
|
||||||
import org.joinmastodon.android.api.requests.notifications.GetNotifications;
|
import org.joinmastodon.android.api.requests.notifications.GetNotifications;
|
||||||
import org.joinmastodon.android.api.requests.timelines.GetHomeTimeline;
|
import org.joinmastodon.android.api.requests.timelines.GetHomeTimeline;
|
||||||
|
import org.joinmastodon.android.api.session.AccountSession;
|
||||||
import org.joinmastodon.android.api.session.AccountSessionManager;
|
import org.joinmastodon.android.api.session.AccountSessionManager;
|
||||||
import org.joinmastodon.android.model.CacheablePaginatedResponse;
|
import org.joinmastodon.android.model.CacheablePaginatedResponse;
|
||||||
import org.joinmastodon.android.model.Filter;
|
import org.joinmastodon.android.model.Filter;
|
||||||
|
import org.joinmastodon.android.model.Instance;
|
||||||
import org.joinmastodon.android.model.Notification;
|
import org.joinmastodon.android.model.Notification;
|
||||||
import org.joinmastodon.android.model.PaginatedResponse;
|
import org.joinmastodon.android.model.PaginatedResponse;
|
||||||
import org.joinmastodon.android.model.SearchResult;
|
import org.joinmastodon.android.model.SearchResult;
|
||||||
@@ -130,7 +132,8 @@ public class CacheController{
|
|||||||
cancelDelayedClose();
|
cancelDelayedClose();
|
||||||
databaseThread.postRunnable(()->{
|
databaseThread.postRunnable(()->{
|
||||||
try{
|
try{
|
||||||
List<Filter> filters=AccountSessionManager.getInstance().getAccount(accountID).wordFilters.stream().filter(f->f.context.contains(Filter.FilterContext.NOTIFICATIONS)).collect(Collectors.toList());
|
AccountSession accountSession=AccountSessionManager.getInstance().getAccount(accountID);
|
||||||
|
List<Filter> filters=accountSession.wordFilters.stream().filter(f->f.context.contains(Filter.FilterContext.NOTIFICATIONS)).collect(Collectors.toList());
|
||||||
if(!forceReload){
|
if(!forceReload){
|
||||||
SQLiteDatabase db=getOrOpenDatabase();
|
SQLiteDatabase db=getOrOpenDatabase();
|
||||||
String table=onlyPosts ? "notifications_posts" : onlyMentions ? "notifications_mentions" : "notifications_all";
|
String table=onlyPosts ? "notifications_posts" : onlyMentions ? "notifications_mentions" : "notifications_all";
|
||||||
@@ -160,7 +163,8 @@ public class CacheController{
|
|||||||
Log.w(TAG, "getNotifications: corrupted notification object in database", x);
|
Log.w(TAG, "getNotifications: corrupted notification object in database", x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
new GetNotifications(maxID, count, onlyPosts ? EnumSet.of(Notification.Type.STATUS) : onlyMentions ? EnumSet.of(Notification.Type.MENTION): EnumSet.allOf(Notification.Type.class))
|
Instance instance=AccountSessionManager.getInstance().getInstanceInfo(accountSession.domain);
|
||||||
|
new GetNotifications(maxID, count, onlyPosts ? EnumSet.of(Notification.Type.STATUS) : onlyMentions ? EnumSet.of(Notification.Type.MENTION): EnumSet.allOf(Notification.Type.class), instance.pleroma != null)
|
||||||
.setCallback(new Callback<>(){
|
.setCallback(new Callback<>(){
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(List<Notification> result){
|
public void onSuccess(List<Notification> result){
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import org.joinmastodon.android.MastodonApp;
|
|||||||
import org.joinmastodon.android.api.gson.IsoInstantTypeAdapter;
|
import org.joinmastodon.android.api.gson.IsoInstantTypeAdapter;
|
||||||
import org.joinmastodon.android.api.gson.IsoLocalDateTypeAdapter;
|
import org.joinmastodon.android.api.gson.IsoLocalDateTypeAdapter;
|
||||||
import org.joinmastodon.android.api.session.AccountSession;
|
import org.joinmastodon.android.api.session.AccountSession;
|
||||||
|
import org.joinmastodon.android.model.Status;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -40,12 +41,15 @@ import okhttp3.ResponseBody;
|
|||||||
|
|
||||||
public class MastodonAPIController{
|
public class MastodonAPIController{
|
||||||
private static final String TAG="MastodonAPIController";
|
private static final String TAG="MastodonAPIController";
|
||||||
public static final Gson gson=new GsonBuilder()
|
public static final Gson gsonWithoutDeserializer = new GsonBuilder()
|
||||||
.disableHtmlEscaping()
|
.disableHtmlEscaping()
|
||||||
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
|
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
|
||||||
.registerTypeAdapter(Instant.class, new IsoInstantTypeAdapter())
|
.registerTypeAdapter(Instant.class, new IsoInstantTypeAdapter())
|
||||||
.registerTypeAdapter(LocalDate.class, new IsoLocalDateTypeAdapter())
|
.registerTypeAdapter(LocalDate.class, new IsoLocalDateTypeAdapter())
|
||||||
.create();
|
.create();
|
||||||
|
public static final Gson gson = gsonWithoutDeserializer.newBuilder()
|
||||||
|
.registerTypeAdapter(Status.class, new Status.StatusDeserializer())
|
||||||
|
.create();
|
||||||
private static WorkerThread thread=new WorkerThread("MastodonAPIController");
|
private static WorkerThread thread=new WorkerThread("MastodonAPIController");
|
||||||
private static OkHttpClient httpClient=new OkHttpClient.Builder().build();
|
private static OkHttpClient httpClient=new OkHttpClient.Builder().build();
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package org.joinmastodon.android.api.requests.notifications;
|
package org.joinmastodon.android.api.requests.notifications;
|
||||||
|
|
||||||
import com.google.gson.annotations.SerializedName;
|
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
import org.joinmastodon.android.api.ApiUtils;
|
import org.joinmastodon.android.api.ApiUtils;
|
||||||
@@ -11,18 +10,24 @@ import java.util.EnumSet;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class GetNotifications extends MastodonAPIRequest<List<Notification>>{
|
public class GetNotifications extends MastodonAPIRequest<List<Notification>>{
|
||||||
public GetNotifications(String maxID, int limit, EnumSet<Notification.Type> includeTypes){
|
public GetNotifications(String maxID, int limit, EnumSet<Notification.Type> includeTypes, boolean isPleromaInstance){
|
||||||
super(HttpMethod.GET, "/notifications", new TypeToken<>(){});
|
super(HttpMethod.GET, "/notifications", new TypeToken<>(){});
|
||||||
if(maxID!=null)
|
if(maxID!=null)
|
||||||
addQueryParameter("max_id", maxID);
|
addQueryParameter("max_id", maxID);
|
||||||
if(limit>0)
|
if(limit>0)
|
||||||
addQueryParameter("limit", ""+limit);
|
addQueryParameter("limit", ""+limit);
|
||||||
if(includeTypes!=null){
|
if(includeTypes!=null){
|
||||||
for(String type:ApiUtils.enumSetToStrings(includeTypes, Notification.Type.class)){
|
if(!isPleromaInstance) {
|
||||||
addQueryParameter("types[]", type);
|
for(String type:ApiUtils.enumSetToStrings(includeTypes, Notification.Type.class)){
|
||||||
}
|
addQueryParameter("types[]", type);
|
||||||
for(String type:ApiUtils.enumSetToStrings(EnumSet.complementOf(includeTypes), Notification.Type.class)){
|
}
|
||||||
addQueryParameter("exclude_types[]", type);
|
for(String type:ApiUtils.enumSetToStrings(EnumSet.complementOf(includeTypes), Notification.Type.class)){
|
||||||
|
addQueryParameter("exclude_types[]", type);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
for(String type:ApiUtils.enumSetToStrings(includeTypes, Notification.Type.class)){
|
||||||
|
addQueryParameter("include_types[]", type);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
removeUnsupportedItems=true;
|
removeUnsupportedItems=true;
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ public class CreateStatus extends MastodonAPIRequest<Status>{
|
|||||||
public Instant scheduledAt;
|
public Instant scheduledAt;
|
||||||
public String language;
|
public String language;
|
||||||
|
|
||||||
|
public String quoteId;
|
||||||
|
|
||||||
public static class Poll{
|
public static class Poll{
|
||||||
public ArrayList<String> options=new ArrayList<>();
|
public ArrayList<String> options=new ArrayList<>();
|
||||||
public int expiresIn;
|
public int expiresIn;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.joinmastodon.android.api.requests.timelines;
|
|||||||
|
|
||||||
import com.google.gson.reflect.TypeToken;
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
|
import org.joinmastodon.android.GlobalUserPreferences;
|
||||||
import org.joinmastodon.android.api.MastodonAPIRequest;
|
import org.joinmastodon.android.api.MastodonAPIRequest;
|
||||||
import org.joinmastodon.android.model.Status;
|
import org.joinmastodon.android.model.Status;
|
||||||
|
|
||||||
@@ -18,5 +19,7 @@ public class GetHomeTimeline extends MastodonAPIRequest<List<Status>>{
|
|||||||
addQueryParameter("since_id", sinceID);
|
addQueryParameter("since_id", sinceID);
|
||||||
if(limit>0)
|
if(limit>0)
|
||||||
addQueryParameter("limit", ""+limit);
|
addQueryParameter("limit", ""+limit);
|
||||||
|
if(GlobalUserPreferences.replyVisibility != null)
|
||||||
|
addQueryParameter("reply_visibility", GlobalUserPreferences.replyVisibility);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -278,6 +278,12 @@ public class AccountSessionManager{
|
|||||||
public void onSuccess(Account result){
|
public void onSuccess(Account result){
|
||||||
session.self=result;
|
session.self=result;
|
||||||
session.infoLastUpdated=System.currentTimeMillis();
|
session.infoLastUpdated=System.currentTimeMillis();
|
||||||
|
if(session.preferences != null && session.preferences.postingDefaultVisibility != null){
|
||||||
|
session.preferences.postingDefaultVisibility = result.source.privacy;
|
||||||
|
}
|
||||||
|
if(session.preferences != null && session.preferences.postingDefaultLanguage != null){
|
||||||
|
session.preferences.postingDefaultLanguage = result.source.language;
|
||||||
|
}
|
||||||
writeAccountsFile();
|
writeAccountsFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -297,7 +303,14 @@ public class AccountSessionManager{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(ErrorResponse error) {}
|
public void onError(ErrorResponse error) {
|
||||||
|
Preferences preferences = new Preferences();
|
||||||
|
if(session.self != null){
|
||||||
|
preferences.postingDefaultVisibility = session.self.source.privacy;
|
||||||
|
preferences.postingDefaultLanguage = session.self.source.language;
|
||||||
|
}
|
||||||
|
session.preferences = preferences;
|
||||||
|
}
|
||||||
}).exec(session.getID());
|
}).exec(session.getID());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -289,12 +289,11 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
|||||||
0,
|
0,
|
||||||
fab.getHeight() * 2);
|
fab.getHeight() * 2);
|
||||||
animate.setDuration(300);
|
animate.setDuration(300);
|
||||||
animate.setFillAfter(true);
|
|
||||||
fab.startAnimation(animate);
|
fab.startAnimation(animate);
|
||||||
fab.setVisibility(View.INVISIBLE);
|
fab.setVisibility(View.INVISIBLE);
|
||||||
scrollDiff = 0;
|
scrollDiff = 0;
|
||||||
} else if (dy < 0 && fab.getVisibility() != View.VISIBLE) {
|
} else if (dy < 0 && fab.getVisibility() != View.VISIBLE) {
|
||||||
if (list.getChildLayoutPosition(list.getChildAt(0)) == 0 || scrollDiff > 400) {
|
if (list.getChildAt(0).getTop() == 0 || scrollDiff > 400) {
|
||||||
fab.setVisibility(View.VISIBLE);
|
fab.setVisibility(View.VISIBLE);
|
||||||
TranslateAnimation animate = new TranslateAnimation(
|
TranslateAnimation animate = new TranslateAnimation(
|
||||||
0,
|
0,
|
||||||
@@ -302,7 +301,6 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
|||||||
fab.getHeight() * 2,
|
fab.getHeight() * 2,
|
||||||
0);
|
0);
|
||||||
animate.setDuration(300);
|
animate.setDuration(300);
|
||||||
animate.setFillAfter(true);
|
|
||||||
fab.startAnimation(animate);
|
fab.startAnimation(animate);
|
||||||
scrollDiff = 0;
|
scrollDiff = 0;
|
||||||
} else {
|
} else {
|
||||||
@@ -505,7 +503,6 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
|||||||
holder.getItem().status.textExpandable = expandable;
|
holder.getItem().status.textExpandable = expandable;
|
||||||
HeaderStatusDisplayItem.Holder header = findHolderOfType(holder.getItemID(), HeaderStatusDisplayItem.Holder.class);
|
HeaderStatusDisplayItem.Holder header = findHolderOfType(holder.getItemID(), HeaderStatusDisplayItem.Holder.class);
|
||||||
if (header != null) header.rebind();
|
if (header != null) header.rebind();
|
||||||
holder.rebind();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -204,6 +204,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
|||||||
private List<EmojiCategory> customEmojis;
|
private List<EmojiCategory> customEmojis;
|
||||||
private CustomEmojiPopupKeyboard emojiKeyboard;
|
private CustomEmojiPopupKeyboard emojiKeyboard;
|
||||||
private Status replyTo;
|
private Status replyTo;
|
||||||
|
private Status quote;
|
||||||
private String initialText;
|
private String initialText;
|
||||||
private String uuid;
|
private String uuid;
|
||||||
private int pollDuration=24*3600;
|
private int pollDuration=24*3600;
|
||||||
@@ -252,6 +253,8 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
|||||||
editingStatus=Parcels.unwrap(getArguments().getParcelable("editStatus"));
|
editingStatus=Parcels.unwrap(getArguments().getParcelable("editStatus"));
|
||||||
if(getArguments().containsKey("replyTo"))
|
if(getArguments().containsKey("replyTo"))
|
||||||
replyTo=Parcels.unwrap(getArguments().getParcelable("replyTo"));
|
replyTo=Parcels.unwrap(getArguments().getParcelable("replyTo"));
|
||||||
|
if(getArguments().containsKey("quote"))
|
||||||
|
quote=Parcels.unwrap(getArguments().getParcelable("quote"));
|
||||||
if(instance==null){
|
if(instance==null){
|
||||||
Nav.finish(this);
|
Nav.finish(this);
|
||||||
return;
|
return;
|
||||||
@@ -333,7 +336,9 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
|||||||
scheduleTimeBtn=view.findViewById(R.id.scheduled_time_btn);
|
scheduleTimeBtn=view.findViewById(R.id.scheduled_time_btn);
|
||||||
sensitiveIcon=view.findViewById(R.id.sensitive_icon);
|
sensitiveIcon=view.findViewById(R.id.sensitive_icon);
|
||||||
sensitiveItem=view.findViewById(R.id.sensitive_item);
|
sensitiveItem=view.findViewById(R.id.sensitive_item);
|
||||||
replyText=view.findViewById(R.id.reply_text);
|
replyText=view.findViewById(GlobalUserPreferences.replyLineAboveHeader ? R.id.reply_text : R.id.reply_text_below);
|
||||||
|
view.findViewById(GlobalUserPreferences.replyLineAboveHeader ? R.id.reply_text_below : R.id.reply_text)
|
||||||
|
.setVisibility(View.GONE);
|
||||||
|
|
||||||
if (isPhotoPickerAvailable()) {
|
if (isPhotoPickerAvailable()) {
|
||||||
PopupMenu attachPopup = new PopupMenu(getContext(), mediaBtn);
|
PopupMenu attachPopup = new PopupMenu(getContext(), mediaBtn);
|
||||||
@@ -605,7 +610,8 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
spoilerEdit.addTextChangedListener(new SimpleTextWatcher(e->updateCharCounter()));
|
spoilerEdit.addTextChangedListener(new SimpleTextWatcher(e->updateCharCounter()));
|
||||||
if(replyTo!=null){
|
if(replyTo!=null || quote!=null){
|
||||||
|
Status status = quote!=null ? quote : replyTo;
|
||||||
View replyWrap = view.findViewById(R.id.reply_wrap);
|
View replyWrap = view.findViewById(R.id.reply_wrap);
|
||||||
scrollView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
|
scrollView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
|
||||||
int scrollHeight = scrollView.getHeight();
|
int scrollHeight = scrollView.getHeight();
|
||||||
@@ -631,13 +637,13 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
|||||||
originalPost.setOnClickListener(v->{
|
originalPost.setOnClickListener(v->{
|
||||||
Bundle args=new Bundle();
|
Bundle args=new Bundle();
|
||||||
args.putString("account", accountID);
|
args.putString("account", accountID);
|
||||||
args.putParcelable("status", Parcels.wrap(replyTo));
|
args.putParcelable("status", Parcels.wrap(status));
|
||||||
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||||
Nav.go(getActivity(), ThreadFragment.class, args);
|
Nav.go(getActivity(), ThreadFragment.class, args);
|
||||||
});
|
});
|
||||||
|
|
||||||
ImageView avatar = view.findViewById(R.id.avatar);
|
ImageView avatar = view.findViewById(R.id.avatar);
|
||||||
ViewImageLoader.load(avatar, null, new UrlImageLoaderRequest(replyTo.account.avatar));
|
ViewImageLoader.load(avatar, null, new UrlImageLoaderRequest(status.account.avatar));
|
||||||
ViewOutlineProvider roundCornersOutline=new ViewOutlineProvider(){
|
ViewOutlineProvider roundCornersOutline=new ViewOutlineProvider(){
|
||||||
@Override
|
@Override
|
||||||
public void getOutline(View view, Outline outline){
|
public void getOutline(View view, Outline outline){
|
||||||
@@ -649,15 +655,15 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
|||||||
avatar.setOnClickListener(v->{
|
avatar.setOnClickListener(v->{
|
||||||
Bundle args=new Bundle();
|
Bundle args=new Bundle();
|
||||||
args.putString("account", accountID);
|
args.putString("account", accountID);
|
||||||
args.putParcelable("profileAccount", Parcels.wrap(replyTo.account));
|
args.putParcelable("profileAccount", Parcels.wrap(status.account));
|
||||||
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||||
Nav.go(getActivity(), ProfileFragment.class, args);
|
Nav.go(getActivity(), ProfileFragment.class, args);
|
||||||
});
|
});
|
||||||
|
|
||||||
((TextView) view.findViewById(R.id.name)).setText(replyTo.account.displayName);
|
((TextView) view.findViewById(R.id.name)).setText(status.account.displayName);
|
||||||
((TextView) view.findViewById(R.id.username)).setText(replyTo.account.getDisplayUsername());
|
((TextView) view.findViewById(R.id.username)).setText(status.account.getDisplayUsername());
|
||||||
view.findViewById(R.id.visibility).setVisibility(View.GONE);
|
view.findViewById(R.id.visibility).setVisibility(View.GONE);
|
||||||
Drawable visibilityIcon = getActivity().getDrawable(switch(replyTo.visibility){
|
Drawable visibilityIcon = getActivity().getDrawable(switch(status.visibility){
|
||||||
case PUBLIC -> R.drawable.ic_fluent_earth_20_regular;
|
case PUBLIC -> R.drawable.ic_fluent_earth_20_regular;
|
||||||
case UNLISTED -> R.drawable.ic_fluent_lock_open_20_regular;
|
case UNLISTED -> R.drawable.ic_fluent_lock_open_20_regular;
|
||||||
case PRIVATE -> R.drawable.ic_fluent_lock_closed_20_filled;
|
case PRIVATE -> R.drawable.ic_fluent_lock_closed_20_filled;
|
||||||
@@ -668,36 +674,37 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
|||||||
moreBtn.setImageDrawable(visibilityIcon);
|
moreBtn.setImageDrawable(visibilityIcon);
|
||||||
moreBtn.setBackground(null);
|
moreBtn.setBackground(null);
|
||||||
TextView timestamp = view.findViewById(R.id.timestamp);
|
TextView timestamp = view.findViewById(R.id.timestamp);
|
||||||
if (replyTo.editedAt==null) timestamp.setText(UiUtils.formatRelativeTimestamp(getContext(), replyTo.createdAt));
|
if (status.editedAt!=null) timestamp.setText(getString(R.string.edited_timestamp, UiUtils.formatRelativeTimestamp(getContext(), status.editedAt)));
|
||||||
else timestamp.setText(getString(R.string.edited_timestamp, UiUtils.formatRelativeTimestamp(getContext(), replyTo.editedAt)));
|
else if (status.createdAt!=null) timestamp.setText(UiUtils.formatRelativeTimestamp(getContext(), status.createdAt));
|
||||||
if (replyTo.spoilerText != null && !replyTo.spoilerText.isBlank()) {
|
else timestamp.setText("");
|
||||||
|
if (status.spoilerText != null && !status.spoilerText.isBlank()) {
|
||||||
view.findViewById(R.id.spoiler_header).setVisibility(View.VISIBLE);
|
view.findViewById(R.id.spoiler_header).setVisibility(View.VISIBLE);
|
||||||
((TextView) view.findViewById(R.id.spoiler_title_inline)).setText(replyTo.spoilerText);
|
((TextView) view.findViewById(R.id.spoiler_title_inline)).setText(status.spoilerText);
|
||||||
}
|
}
|
||||||
|
|
||||||
SpannableStringBuilder content = HtmlParser.parse(replyTo.content, replyTo.emojis, replyTo.mentions, replyTo.tags, accountID);
|
SpannableStringBuilder content = HtmlParser.parse(status.content, status.emojis, status.mentions, status.tags, accountID);
|
||||||
LinkedTextView text = view.findViewById(R.id.text);
|
LinkedTextView text = view.findViewById(R.id.text);
|
||||||
if (content.length() > 0) text.setText(content);
|
if (content.length() > 0) text.setText(content);
|
||||||
else view.findViewById(R.id.display_item_text).setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, V.dp(16)));
|
else view.findViewById(R.id.display_item_text).setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, V.dp(16)));
|
||||||
|
|
||||||
replyText.setText(getString(R.string.in_reply_to, replyTo.account.displayName));
|
replyText.setText(getString(quote!=null? R.string.sk_quoting_user : R.string.in_reply_to, status.account.displayName));
|
||||||
int visibilityNameRes = switch (replyTo.visibility) {
|
int visibilityNameRes = switch (status.visibility) {
|
||||||
case PUBLIC -> R.string.visibility_public;
|
case PUBLIC -> R.string.visibility_public;
|
||||||
case UNLISTED -> R.string.sk_visibility_unlisted;
|
case UNLISTED -> R.string.sk_visibility_unlisted;
|
||||||
case PRIVATE -> R.string.visibility_followers_only;
|
case PRIVATE -> R.string.visibility_followers_only;
|
||||||
case DIRECT -> R.string.visibility_private;
|
case DIRECT -> R.string.visibility_private;
|
||||||
case LOCAL -> R.string.sk_local_only;
|
case LOCAL -> R.string.sk_local_only;
|
||||||
};
|
};
|
||||||
replyText.setContentDescription(getString(R.string.in_reply_to, replyTo.account.displayName) + ". " + getString(R.string.post_visibility) + ": " + getString(visibilityNameRes));
|
replyText.setContentDescription(getString(R.string.in_reply_to, status.account.displayName) + ". " + getString(R.string.post_visibility) + ": " + getString(visibilityNameRes));
|
||||||
replyText.setOnClickListener(v->{
|
replyText.setOnClickListener(v->{
|
||||||
scrollView.smoothScrollTo(0, 0);
|
scrollView.smoothScrollTo(0, 0);
|
||||||
});
|
});
|
||||||
|
|
||||||
ArrayList<String> mentions=new ArrayList<>();
|
ArrayList<String> mentions=new ArrayList<>();
|
||||||
String ownID=AccountSessionManager.getInstance().getAccount(accountID).self.id;
|
String ownID=AccountSessionManager.getInstance().getAccount(accountID).self.id;
|
||||||
if(!replyTo.account.id.equals(ownID))
|
if(!status.account.id.equals(ownID))
|
||||||
mentions.add('@'+replyTo.account.acct);
|
mentions.add('@'+status.account.acct);
|
||||||
for(Mention mention:replyTo.mentions){
|
for(Mention mention:status.mentions){
|
||||||
if(mention.id.equals(ownID))
|
if(mention.id.equals(ownID))
|
||||||
continue;
|
continue;
|
||||||
String m='@'+mention.acct;
|
String m='@'+mention.acct;
|
||||||
@@ -710,17 +717,17 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
|||||||
ignoreSelectionChanges=true;
|
ignoreSelectionChanges=true;
|
||||||
mainEditText.setSelection(mainEditText.length());
|
mainEditText.setSelection(mainEditText.length());
|
||||||
ignoreSelectionChanges=false;
|
ignoreSelectionChanges=false;
|
||||||
if(!TextUtils.isEmpty(replyTo.spoilerText)){
|
if(!TextUtils.isEmpty(status.spoilerText)){
|
||||||
hasSpoiler=true;
|
hasSpoiler=true;
|
||||||
spoilerEdit.setVisibility(View.VISIBLE);
|
spoilerEdit.setVisibility(View.VISIBLE);
|
||||||
if(GlobalUserPreferences.prefixRepliesWithRe && !replyTo.spoilerText.startsWith("re: ")){
|
if(GlobalUserPreferences.prefixRepliesWithRe && !status.spoilerText.startsWith("re: ")){
|
||||||
spoilerEdit.setText("re: " + replyTo.spoilerText);
|
spoilerEdit.setText("re: " + status.spoilerText);
|
||||||
}else{
|
}else{
|
||||||
spoilerEdit.setText(replyTo.spoilerText);
|
spoilerEdit.setText(status.spoilerText);
|
||||||
}
|
}
|
||||||
spoilerBtn.setSelected(true);
|
spoilerBtn.setSelected(true);
|
||||||
}
|
}
|
||||||
if (replyTo.language != null && !replyTo.language.isEmpty()) updateLanguage(replyTo.language);
|
if (status.language != null && !status.language.isEmpty()) updateLanguage(status.language);
|
||||||
}
|
}
|
||||||
}else if (editingStatus==null || editingStatus.inReplyToId==null){
|
}else if (editingStatus==null || editingStatus.inReplyToId==null){
|
||||||
// TODO: remove workaround after https://github.com/mastodon/mastodon-android/issues/341 gets fixed
|
// TODO: remove workaround after https://github.com/mastodon/mastodon-android/issues/341 gets fixed
|
||||||
@@ -1087,6 +1094,9 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
|||||||
if(hasSpoiler && spoilerEdit.length()>0){
|
if(hasSpoiler && spoilerEdit.length()>0){
|
||||||
req.spoilerText=spoilerEdit.getText().toString();
|
req.spoilerText=spoilerEdit.getText().toString();
|
||||||
}
|
}
|
||||||
|
if(quote != null){
|
||||||
|
req.quoteId=quote.id;
|
||||||
|
}
|
||||||
if(uuid==null)
|
if(uuid==null)
|
||||||
uuid=UUID.randomUUID().toString();
|
uuid=UUID.randomUUID().toString();
|
||||||
|
|
||||||
@@ -1119,7 +1129,9 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
|
|||||||
}else{
|
}else{
|
||||||
E.post(new StatusUpdatedEvent(result));
|
E.post(new StatusUpdatedEvent(result));
|
||||||
}
|
}
|
||||||
Nav.finish(ComposeFragment.this);
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O || !isStateSaved()) {
|
||||||
|
Nav.finish(ComposeFragment.this);
|
||||||
|
}
|
||||||
if (getArguments().getBoolean("navigateToStatus", false)) {
|
if (getArguments().getBoolean("navigateToStatus", false)) {
|
||||||
Bundle args=new Bundle();
|
Bundle args=new Bundle();
|
||||||
args.putString("account", accountID);
|
args.putString("account", accountID);
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc
|
|||||||
@Override
|
@Override
|
||||||
public SimpleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
|
public SimpleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
|
||||||
FrameLayout view=tabViews[viewType];
|
FrameLayout view=tabViews[viewType];
|
||||||
((ViewGroup)view.getParent()).removeView(view);
|
if (view.getParent() != null) ((ViewGroup)view.getParent()).removeView(view);
|
||||||
view.setVisibility(View.VISIBLE);
|
view.setVisibility(View.VISIBLE);
|
||||||
view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
|
view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
|
||||||
return new SimpleViewHolder(view);
|
return new SimpleViewHolder(view);
|
||||||
|
|||||||
@@ -550,10 +550,12 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
|||||||
|
|
||||||
fields.clear();
|
fields.clear();
|
||||||
|
|
||||||
AccountField joined=new AccountField();
|
if (account.createdAt != null) {
|
||||||
joined.parsedName=joined.name=getString(R.string.profile_joined);
|
AccountField joined=new AccountField();
|
||||||
joined.parsedValue=joined.value=DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).format(LocalDateTime.ofInstant(account.createdAt, ZoneId.systemDefault()));
|
joined.parsedName=joined.name=getString(R.string.profile_joined);
|
||||||
fields.add(joined);
|
joined.parsedValue=joined.value=DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).format(LocalDateTime.ofInstant(account.createdAt, ZoneId.systemDefault()));
|
||||||
|
fields.add(joined);
|
||||||
|
}
|
||||||
|
|
||||||
for(AccountField field:account.fields){
|
for(AccountField field:account.fields){
|
||||||
field.parsedValue=ssb=HtmlParser.parse(field.value, account.emojis, Collections.emptyList(), Collections.emptyList(), accountID);
|
field.parsedValue=ssb=HtmlParser.parse(field.value, account.emojis, Collections.emptyList(), Collections.emptyList(), accountID);
|
||||||
@@ -798,7 +800,6 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
|||||||
0,
|
0,
|
||||||
fab.getHeight() * 2);
|
fab.getHeight() * 2);
|
||||||
animate.setDuration(300);
|
animate.setDuration(300);
|
||||||
animate.setFillAfter(true);
|
|
||||||
fab.startAnimation(animate);
|
fab.startAnimation(animate);
|
||||||
fab.setVisibility(View.INVISIBLE);
|
fab.setVisibility(View.INVISIBLE);
|
||||||
scrollDiff = 0;
|
scrollDiff = 0;
|
||||||
@@ -811,7 +812,6 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
|||||||
fab.getHeight() * 2,
|
fab.getHeight() * 2,
|
||||||
0);
|
0);
|
||||||
animate.setDuration(300);
|
animate.setDuration(300);
|
||||||
animate.setFillAfter(true);
|
|
||||||
fab.startAnimation(animate);
|
fab.startAnimation(animate);
|
||||||
scrollDiff = 0;
|
scrollDiff = 0;
|
||||||
} else {
|
} else {
|
||||||
@@ -1135,7 +1135,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
|
|||||||
@Override
|
@Override
|
||||||
public SimpleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
|
public SimpleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
|
||||||
FrameLayout view=tabViews[viewType];
|
FrameLayout view=tabViews[viewType];
|
||||||
((ViewGroup)view.getParent()).removeView(view);
|
if (view.getParent() != null) ((ViewGroup)view.getParent()).removeView(view);
|
||||||
view.setVisibility(View.VISIBLE);
|
view.setVisibility(View.VISIBLE);
|
||||||
view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
|
view.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
|
||||||
return new SimpleViewHolder(view);
|
return new SimpleViewHolder(view);
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ public class SettingsFragment extends MastodonToolbarFragment{
|
|||||||
private ArrayList<Item> items=new ArrayList<>();
|
private ArrayList<Item> items=new ArrayList<>();
|
||||||
private ThemeItem themeItem;
|
private ThemeItem themeItem;
|
||||||
private NotificationPolicyItem notificationPolicyItem;
|
private NotificationPolicyItem notificationPolicyItem;
|
||||||
private SwitchItem showNewPostsButtonItem, glitchModeItem;
|
private SwitchItem showNewPostsButtonItem, glitchModeItem, compactReblogReplyLineItem;
|
||||||
private String accountID;
|
private String accountID;
|
||||||
private boolean needUpdateNotificationSettings;
|
private boolean needUpdateNotificationSettings;
|
||||||
private boolean needAppRestart;
|
private boolean needAppRestart;
|
||||||
@@ -213,6 +213,22 @@ public class SettingsFragment extends MastodonToolbarFragment{
|
|||||||
GlobalUserPreferences.showReplies=i.checked;
|
GlobalUserPreferences.showReplies=i.checked;
|
||||||
GlobalUserPreferences.save();
|
GlobalUserPreferences.save();
|
||||||
}));
|
}));
|
||||||
|
if (instance.pleroma != null) {
|
||||||
|
items.add(new ButtonItem(R.string.sk_settings_reply_visibility, R.drawable.ic_fluent_chat_24_regular, b->{
|
||||||
|
PopupMenu popupMenu=new PopupMenu(getActivity(), b, Gravity.CENTER_HORIZONTAL);
|
||||||
|
popupMenu.inflate(R.menu.reply_visibility);
|
||||||
|
popupMenu.setOnMenuItemClickListener(item -> this.onReplyVisibilityChanged(item, b));
|
||||||
|
b.setOnTouchListener(popupMenu.getDragToOpenListener());
|
||||||
|
b.setOnClickListener(v->popupMenu.show());
|
||||||
|
b.setText(GlobalUserPreferences.replyVisibility == null ?
|
||||||
|
R.string.sk_settings_reply_visibility_all :
|
||||||
|
switch(GlobalUserPreferences.replyVisibility){
|
||||||
|
case "following" -> R.string.sk_settings_reply_visibility_following;
|
||||||
|
case "self" -> R.string.sk_settings_reply_visibility_self;
|
||||||
|
default -> R.string.sk_settings_reply_visibility_all;
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
}
|
||||||
items.add(new SwitchItem(R.string.sk_settings_show_boosts, R.drawable.ic_fluent_arrow_repeat_all_24_regular, GlobalUserPreferences.showBoosts, i->{
|
items.add(new SwitchItem(R.string.sk_settings_show_boosts, R.drawable.ic_fluent_arrow_repeat_all_24_regular, GlobalUserPreferences.showBoosts, i->{
|
||||||
GlobalUserPreferences.showBoosts=i.checked;
|
GlobalUserPreferences.showBoosts=i.checked;
|
||||||
GlobalUserPreferences.save();
|
GlobalUserPreferences.save();
|
||||||
@@ -253,6 +269,21 @@ public class SettingsFragment extends MastodonToolbarFragment{
|
|||||||
GlobalUserPreferences.save();
|
GlobalUserPreferences.save();
|
||||||
needAppRestart=true;
|
needAppRestart=true;
|
||||||
}));
|
}));
|
||||||
|
items.add(new SwitchItem(R.string.sk_reply_line_above_avatar, R.drawable.ic_fluent_arrow_reply_24_regular, GlobalUserPreferences.replyLineAboveHeader, i->{
|
||||||
|
GlobalUserPreferences.replyLineAboveHeader=i.checked;
|
||||||
|
GlobalUserPreferences.compactReblogReplyLine=i.checked;
|
||||||
|
compactReblogReplyLineItem.enabled=i.checked;
|
||||||
|
compactReblogReplyLineItem.checked= GlobalUserPreferences.replyLineAboveHeader;
|
||||||
|
if (list.findViewHolderForAdapterPosition(items.indexOf(compactReblogReplyLineItem)) instanceof SwitchViewHolder svh) svh.rebind();
|
||||||
|
GlobalUserPreferences.save();
|
||||||
|
needAppRestart=true;
|
||||||
|
}));
|
||||||
|
items.add(compactReblogReplyLineItem=new SwitchItem(R.string.sk_compact_reblog_reply_line, R.drawable.ic_fluent_re_order_24_regular, GlobalUserPreferences.compactReblogReplyLine, i->{
|
||||||
|
GlobalUserPreferences.compactReblogReplyLine=i.checked;
|
||||||
|
GlobalUserPreferences.save();
|
||||||
|
needAppRestart=true;
|
||||||
|
}));
|
||||||
|
compactReblogReplyLineItem.enabled=GlobalUserPreferences.replyLineAboveHeader;
|
||||||
items.add(new SwitchItem(R.string.sk_settings_translate_only_opened, R.drawable.ic_fluent_translate_24_regular, GlobalUserPreferences.translateButtonOpenedOnly, i->{
|
items.add(new SwitchItem(R.string.sk_settings_translate_only_opened, R.drawable.ic_fluent_translate_24_regular, GlobalUserPreferences.translateButtonOpenedOnly, i->{
|
||||||
GlobalUserPreferences.translateButtonOpenedOnly=i.checked;
|
GlobalUserPreferences.translateButtonOpenedOnly=i.checked;
|
||||||
GlobalUserPreferences.save();
|
GlobalUserPreferences.save();
|
||||||
@@ -465,6 +496,25 @@ public class SettingsFragment extends MastodonToolbarFragment{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean onReplyVisibilityChanged(MenuItem item, Button btn){
|
||||||
|
String pref = null;
|
||||||
|
int id = item.getItemId();
|
||||||
|
|
||||||
|
if (id == R.id.reply_visibility_following) pref = "following";
|
||||||
|
else if (id == R.id.reply_visibility_self) pref = "self";
|
||||||
|
|
||||||
|
GlobalUserPreferences.replyVisibility=pref;
|
||||||
|
GlobalUserPreferences.save();
|
||||||
|
btn.setText(GlobalUserPreferences.replyVisibility == null ?
|
||||||
|
R.string.sk_settings_reply_visibility_all :
|
||||||
|
switch(GlobalUserPreferences.replyVisibility){
|
||||||
|
case "following" -> R.string.sk_settings_reply_visibility_following;
|
||||||
|
case "self" -> R.string.sk_settings_reply_visibility_self;
|
||||||
|
default -> R.string.sk_settings_reply_visibility_all;
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private void restartActivityToApplyNewTheme(){
|
private void restartActivityToApplyNewTheme(){
|
||||||
// Calling activity.recreate() causes a black screen for like half a second.
|
// Calling activity.recreate() causes a black screen for like half a second.
|
||||||
// So, let's take a screenshot and overlay it on top to create the illusion of a smoother transition.
|
// So, let's take a screenshot and overlay it on top to create the illusion of a smoother transition.
|
||||||
|
|||||||
@@ -5,9 +5,12 @@ import android.view.View;
|
|||||||
|
|
||||||
import org.joinmastodon.android.R;
|
import org.joinmastodon.android.R;
|
||||||
import org.joinmastodon.android.api.requests.statuses.GetStatusContext;
|
import org.joinmastodon.android.api.requests.statuses.GetStatusContext;
|
||||||
|
import org.joinmastodon.android.api.session.AccountSession;
|
||||||
|
import org.joinmastodon.android.api.session.AccountSessionManager;
|
||||||
import org.joinmastodon.android.events.StatusCreatedEvent;
|
import org.joinmastodon.android.events.StatusCreatedEvent;
|
||||||
import org.joinmastodon.android.model.Account;
|
import org.joinmastodon.android.model.Account;
|
||||||
import org.joinmastodon.android.model.Filter;
|
import org.joinmastodon.android.model.Filter;
|
||||||
|
import org.joinmastodon.android.model.Instance;
|
||||||
import org.joinmastodon.android.model.Status;
|
import org.joinmastodon.android.model.Status;
|
||||||
import org.joinmastodon.android.model.StatusContext;
|
import org.joinmastodon.android.model.StatusContext;
|
||||||
import org.joinmastodon.android.ui.displayitems.ExtendedFooterStatusDisplayItem;
|
import org.joinmastodon.android.ui.displayitems.ExtendedFooterStatusDisplayItem;
|
||||||
@@ -19,6 +22,7 @@ import org.joinmastodon.android.ui.utils.UiUtils;
|
|||||||
import org.joinmastodon.android.utils.StatusFilterPredicate;
|
import org.joinmastodon.android.utils.StatusFilterPredicate;
|
||||||
import org.parceler.Parcels;
|
import org.parceler.Parcels;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -68,6 +72,30 @@ public class ThreadFragment extends StatusListFragment{
|
|||||||
data.add(mainStatus);
|
data.add(mainStatus);
|
||||||
onAppendItems(Collections.singletonList(mainStatus));
|
onAppendItems(Collections.singletonList(mainStatus));
|
||||||
}
|
}
|
||||||
|
AccountSession account=AccountSessionManager.getInstance().getAccount(accountID);
|
||||||
|
Instance instance=AccountSessionManager.getInstance().getInstanceInfo(account.domain);
|
||||||
|
if(instance.pleroma != null){
|
||||||
|
List<String> threadIds=new ArrayList<>();
|
||||||
|
threadIds.add(mainStatus.id);
|
||||||
|
for(Status s:result.descendants){
|
||||||
|
if(threadIds.contains(s.inReplyToId)){
|
||||||
|
threadIds.add(s.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
threadIds.add(mainStatus.inReplyToId);
|
||||||
|
for(int i=result.ancestors.size()-1; i >= 0; i--){
|
||||||
|
Status s=result.ancestors.get(i);
|
||||||
|
if(s.inReplyToId != null && threadIds.contains(s.id)){
|
||||||
|
threadIds.add(s.inReplyToId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result.ancestors=result.ancestors.stream().filter(s -> threadIds.contains(s.id)).collect(Collectors.toList());
|
||||||
|
result.descendants=getDescendantsOrdered(mainStatus.id,
|
||||||
|
result.descendants.stream()
|
||||||
|
.filter(s -> threadIds.contains(s.id))
|
||||||
|
.collect(Collectors.toList()));
|
||||||
|
}
|
||||||
result.descendants=filterStatuses(result.descendants);
|
result.descendants=filterStatuses(result.descendants);
|
||||||
result.ancestors=filterStatuses(result.ancestors);
|
result.ancestors=filterStatuses(result.ancestors);
|
||||||
if(footerProgress!=null)
|
if(footerProgress!=null)
|
||||||
@@ -90,6 +118,24 @@ public class ThreadFragment extends StatusListFragment{
|
|||||||
.exec(accountID);
|
.exec(accountID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<Status> getDescendantsOrdered(String id, List<Status> statuses){
|
||||||
|
List<Status> out=new ArrayList<>();
|
||||||
|
for(Status s:getDirectDescendants(id, statuses)){
|
||||||
|
out.add(s);
|
||||||
|
getDirectDescendants(s.id, statuses).forEach(d ->{
|
||||||
|
out.add(d);
|
||||||
|
out.addAll(getDescendantsOrdered(d.id, statuses));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Status> getDirectDescendants(String id, List<Status> statuses){
|
||||||
|
return statuses.stream()
|
||||||
|
.filter(s -> s.inReplyToId.equals(id))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
private List<Status> filterStatuses(List<Status> statuses){
|
private List<Status> filterStatuses(List<Status> statuses){
|
||||||
StatusFilterPredicate statusFilterPredicate=new StatusFilterPredicate(accountID,Filter.FilterContext.THREAD);
|
StatusFilterPredicate statusFilterPredicate=new StatusFilterPredicate(accountID,Filter.FilterContext.THREAD);
|
||||||
return statuses.stream()
|
return statuses.stream()
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class Account extends BaseModel implements Searchable{
|
|||||||
/**
|
/**
|
||||||
* The profile's display name.
|
* The profile's display name.
|
||||||
*/
|
*/
|
||||||
@RequiredField
|
// @RequiredField
|
||||||
public String displayName;
|
public String displayName;
|
||||||
/**
|
/**
|
||||||
* The profile's bio / description.
|
* The profile's bio / description.
|
||||||
@@ -86,7 +86,7 @@ public class Account extends BaseModel implements Searchable{
|
|||||||
/**
|
/**
|
||||||
* When the account was created.
|
* When the account was created.
|
||||||
*/
|
*/
|
||||||
@RequiredField
|
// @RequiredField
|
||||||
public Instant createdAt;
|
public Instant createdAt;
|
||||||
/**
|
/**
|
||||||
* When the most recent status was posted.
|
* When the most recent status was posted.
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package org.joinmastodon.android.model;
|
||||||
|
|
||||||
|
public enum NotificationAction {
|
||||||
|
FAVORITE,
|
||||||
|
REBLOG,
|
||||||
|
UNDO_REBLOG,
|
||||||
|
BOOKMARK,
|
||||||
|
REPLY,
|
||||||
|
}
|
||||||
@@ -18,11 +18,11 @@ public class Poll extends BaseModel{
|
|||||||
public int votersCount;
|
public int votersCount;
|
||||||
public int votesCount;
|
public int votesCount;
|
||||||
public boolean voted;
|
public boolean voted;
|
||||||
@RequiredField
|
// @RequiredField
|
||||||
public List<Integer> ownVotes;
|
public List<Integer> ownVotes;
|
||||||
@RequiredField
|
@RequiredField
|
||||||
public List<Option> options;
|
public List<Option> options;
|
||||||
@RequiredField
|
// @RequiredField
|
||||||
public List<Emoji> emojis;
|
public List<Emoji> emojis;
|
||||||
|
|
||||||
public transient ArrayList<Option> selectedOptions;
|
public transient ArrayList<Option> selectedOptions;
|
||||||
@@ -30,6 +30,8 @@ public class Poll extends BaseModel{
|
|||||||
@Override
|
@Override
|
||||||
public void postprocess() throws ObjectValidationException{
|
public void postprocess() throws ObjectValidationException{
|
||||||
super.postprocess();
|
super.postprocess();
|
||||||
|
if (emojis == null) emojis = List.of();
|
||||||
|
if (ownVotes == null) ownVotes = List.of();
|
||||||
for(Emoji e:emojis)
|
for(Emoji e:emojis)
|
||||||
e.postprocess();
|
e.postprocess();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
package org.joinmastodon.android.model;
|
package org.joinmastodon.android.model;
|
||||||
|
|
||||||
|
import static org.joinmastodon.android.api.MastodonAPIController.gson;
|
||||||
|
import static org.joinmastodon.android.api.MastodonAPIController.gsonWithoutDeserializer;
|
||||||
|
|
||||||
|
import com.google.gson.JsonDeserializationContext;
|
||||||
|
import com.google.gson.JsonDeserializer;
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonParseException;
|
||||||
|
|
||||||
import org.joinmastodon.android.GlobalUserPreferences;
|
import org.joinmastodon.android.GlobalUserPreferences;
|
||||||
import org.joinmastodon.android.api.ObjectValidationException;
|
import org.joinmastodon.android.api.ObjectValidationException;
|
||||||
import org.joinmastodon.android.api.RequiredField;
|
import org.joinmastodon.android.api.RequiredField;
|
||||||
@@ -7,6 +16,7 @@ import org.joinmastodon.android.events.StatusCountersUpdatedEvent;
|
|||||||
import org.joinmastodon.android.ui.text.HtmlParser;
|
import org.joinmastodon.android.ui.text.HtmlParser;
|
||||||
import org.parceler.Parcel;
|
import org.parceler.Parcel;
|
||||||
|
|
||||||
|
import java.lang.reflect.Type;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -16,7 +26,7 @@ public class Status extends BaseModel implements DisplayItemsParent, Searchable{
|
|||||||
public String id;
|
public String id;
|
||||||
@RequiredField
|
@RequiredField
|
||||||
public String uri;
|
public String uri;
|
||||||
@RequiredField
|
// @RequiredField // sometimes null on calckey
|
||||||
public Instant createdAt;
|
public Instant createdAt;
|
||||||
@RequiredField
|
@RequiredField
|
||||||
public Account account;
|
public Account account;
|
||||||
@@ -58,6 +68,8 @@ public class Status extends BaseModel implements DisplayItemsParent, Searchable{
|
|||||||
public boolean bookmarked;
|
public boolean bookmarked;
|
||||||
public boolean pinned;
|
public boolean pinned;
|
||||||
|
|
||||||
|
public Status quote; // can be boolean in calckey
|
||||||
|
|
||||||
public transient boolean filterRevealed;
|
public transient boolean filterRevealed;
|
||||||
public transient boolean spoilerRevealed;
|
public transient boolean spoilerRevealed;
|
||||||
public transient boolean textExpanded, textExpandable;
|
public transient boolean textExpanded, textExpandable;
|
||||||
@@ -66,6 +78,9 @@ public class Status extends BaseModel implements DisplayItemsParent, Searchable{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void postprocess() throws ObjectValidationException{
|
public void postprocess() throws ObjectValidationException{
|
||||||
|
if(spoilerText!=null && !spoilerText.isEmpty() && !sensitive)
|
||||||
|
sensitive=true;
|
||||||
|
|
||||||
super.postprocess();
|
super.postprocess();
|
||||||
if(application!=null)
|
if(application!=null)
|
||||||
application.postprocess();
|
application.postprocess();
|
||||||
@@ -168,4 +183,28 @@ public class Status extends BaseModel implements DisplayItemsParent, Searchable{
|
|||||||
public String getQuery() {
|
public String getQuery() {
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class StatusDeserializer implements JsonDeserializer<Status> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Status deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||||
|
JsonObject obj = json.getAsJsonObject();
|
||||||
|
|
||||||
|
Status quote = null;
|
||||||
|
if (obj.has("quote") && obj.get("quote").isJsonObject())
|
||||||
|
quote = gson.fromJson(obj.get("quote"), Status.class);
|
||||||
|
obj.remove("quote");
|
||||||
|
|
||||||
|
Status reblog = null;
|
||||||
|
if (obj.has("reblog"))
|
||||||
|
reblog = gson.fromJson(obj.get("reblog"), Status.class);
|
||||||
|
obj.remove("reblog");
|
||||||
|
|
||||||
|
Status status = gsonWithoutDeserializer.fromJson(json, Status.class);
|
||||||
|
status.quote = quote;
|
||||||
|
status.reblog = reblog;
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,10 +79,10 @@ public class ExtendedFooterStatusDisplayItem extends StatusDisplayItem{
|
|||||||
}else{
|
}else{
|
||||||
editHistory.setVisibility(View.GONE);
|
editHistory.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
String timeStr=TIME_FORMATTER.format(item.status.createdAt.atZone(ZoneId.systemDefault()));
|
String timeStr=item.status.createdAt != null ? TIME_FORMATTER.format(item.status.createdAt.atZone(ZoneId.systemDefault())) : null;
|
||||||
|
|
||||||
if (item.status.application!=null && !TextUtils.isEmpty(item.status.application.name)) {
|
if (item.status.application!=null && !TextUtils.isEmpty(item.status.application.name)) {
|
||||||
time.setText(item.parentFragment.getString(R.string.timestamp_via_app, timeStr, ""));
|
time.setText(timeStr != null ? item.parentFragment.getString(R.string.timestamp_via_app, timeStr, "") : "");
|
||||||
applicationName.setText(item.status.application.name);
|
applicationName.setText(item.status.application.name);
|
||||||
if (item.status.application.website != null && item.status.application.website.toLowerCase().startsWith("https://")) {
|
if (item.status.application.website != null && item.status.application.website.toLowerCase().startsWith("https://")) {
|
||||||
applicationName.setOnClickListener(e -> UiUtils.openURL(context, null, item.status.application.website));
|
applicationName.setOnClickListener(e -> UiUtils.openURL(context, null, item.status.application.website));
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import org.joinmastodon.android.api.session.AccountSession;
|
|||||||
import org.joinmastodon.android.api.session.AccountSessionManager;
|
import org.joinmastodon.android.api.session.AccountSessionManager;
|
||||||
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
||||||
import org.joinmastodon.android.fragments.ComposeFragment;
|
import org.joinmastodon.android.fragments.ComposeFragment;
|
||||||
|
import org.joinmastodon.android.model.Instance;
|
||||||
import org.joinmastodon.android.model.Status;
|
import org.joinmastodon.android.model.Status;
|
||||||
import org.joinmastodon.android.model.StatusPrivacy;
|
import org.joinmastodon.android.model.StatusPrivacy;
|
||||||
import org.joinmastodon.android.ui.M3AlertDialogBuilder;
|
import org.joinmastodon.android.ui.M3AlertDialogBuilder;
|
||||||
@@ -281,12 +282,18 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
|
|||||||
v.startAnimation(opacityIn);
|
v.startAnimation(opacityIn);
|
||||||
Bundle args=new Bundle();
|
Bundle args=new Bundle();
|
||||||
args.putString("account", item.accountID);
|
args.putString("account", item.accountID);
|
||||||
StringBuilder prefilledText = new StringBuilder().append("\n\n");
|
AccountSession accountSession=AccountSessionManager.getInstance().getAccount(item.accountID);
|
||||||
String ownID = AccountSessionManager.getInstance().getAccount(item.accountID).self.id;
|
Instance instance=AccountSessionManager.getInstance().getInstanceInfo(accountSession.domain);
|
||||||
if (!item.status.account.id.equals(ownID)) prefilledText.append('@').append(item.status.account.acct).append(' ');
|
if(instance.pleroma == null){
|
||||||
prefilledText.append(item.status.url);
|
StringBuilder prefilledText = new StringBuilder().append("\n\n");
|
||||||
args.putString("prefilledText", prefilledText.toString());
|
String ownID = AccountSessionManager.getInstance().getAccount(item.accountID).self.id;
|
||||||
args.putInt("selectionStart", 0);
|
if (!item.status.account.id.equals(ownID)) prefilledText.append('@').append(item.status.account.acct).append(' ');
|
||||||
|
prefilledText.append(item.status.url);
|
||||||
|
args.putString("prefilledText", prefilledText.toString());
|
||||||
|
args.putInt("selectionStart", 0);
|
||||||
|
}else{
|
||||||
|
args.putParcelable("quote", Parcels.wrap(item.status));
|
||||||
|
}
|
||||||
Nav.go(item.parentFragment.getActivity(), ComposeFragment.class, args);
|
Nav.go(item.parentFragment.getActivity(), ComposeFragment.class, args);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,10 @@ import android.text.SpannableStringBuilder;
|
|||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import org.joinmastodon.android.GlobalUserPreferences;
|
||||||
import org.joinmastodon.android.R;
|
import org.joinmastodon.android.R;
|
||||||
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
||||||
import org.joinmastodon.android.model.Emoji;
|
import org.joinmastodon.android.model.Emoji;
|
||||||
@@ -30,7 +32,7 @@ import me.grishka.appkit.imageloader.requests.ImageLoaderRequest;
|
|||||||
import me.grishka.appkit.utils.V;
|
import me.grishka.appkit.utils.V;
|
||||||
|
|
||||||
public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
||||||
private CharSequence text;
|
private CharSequence text, compactText;
|
||||||
@DrawableRes
|
@DrawableRes
|
||||||
private int icon;
|
private int icon;
|
||||||
private StatusPrivacy visibility;
|
private StatusPrivacy visibility;
|
||||||
@@ -38,10 +40,15 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
|||||||
private int iconEnd;
|
private int iconEnd;
|
||||||
private CustomEmojiHelper emojiHelper=new CustomEmojiHelper();
|
private CustomEmojiHelper emojiHelper=new CustomEmojiHelper();
|
||||||
private View.OnClickListener handleClick;
|
private View.OnClickListener handleClick;
|
||||||
private boolean isLastLine = true;
|
boolean belowHeader, needBottomPadding;
|
||||||
private int lineNo = 0;
|
ReblogOrReplyLineStatusDisplayItem extra;
|
||||||
|
String contentDescription;
|
||||||
|
|
||||||
public ReblogOrReplyLineStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, CharSequence text, List<Emoji> emojis, @DrawableRes int icon, StatusPrivacy visibility, @Nullable View.OnClickListener handleClick){
|
public ReblogOrReplyLineStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, CharSequence text, List<Emoji> emojis, @DrawableRes int icon, StatusPrivacy visibility, @Nullable View.OnClickListener handleClick) {
|
||||||
|
this(parentID, parentFragment, text, emojis, icon, visibility, handleClick, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ReblogOrReplyLineStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, CharSequence text, List<Emoji> emojis, @DrawableRes int icon, StatusPrivacy visibility, @Nullable View.OnClickListener handleClick, String contentDescription) {
|
||||||
super(parentID, parentFragment);
|
super(parentID, parentFragment);
|
||||||
SpannableStringBuilder ssb=new SpannableStringBuilder(text);
|
SpannableStringBuilder ssb=new SpannableStringBuilder(text);
|
||||||
HtmlParser.parseCustomEmoji(ssb, emojis);
|
HtmlParser.parseCustomEmoji(ssb, emojis);
|
||||||
@@ -52,14 +59,7 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
|||||||
TypedValue outValue = new TypedValue();
|
TypedValue outValue = new TypedValue();
|
||||||
context.getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true);
|
context.getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true);
|
||||||
updateVisibility(visibility);
|
updateVisibility(visibility);
|
||||||
}
|
this.contentDescription = contentDescription;
|
||||||
|
|
||||||
public void setIsLastLine(boolean isLastLine) {
|
|
||||||
this.isLastLine = isLastLine;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLineNo(int lineNo) {
|
|
||||||
this.lineNo = lineNo;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateVisibility(StatusPrivacy visibility) {
|
public void updateVisibility(StatusPrivacy visibility) {
|
||||||
@@ -88,17 +88,33 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class Holder extends StatusDisplayItem.Holder<ReblogOrReplyLineStatusDisplayItem> implements ImageLoaderViewHolder{
|
public static class Holder extends StatusDisplayItem.Holder<ReblogOrReplyLineStatusDisplayItem> implements ImageLoaderViewHolder{
|
||||||
private final TextView text;
|
private final TextView text, extraText;
|
||||||
private final View frame;
|
private final View separator;
|
||||||
|
private int currentOrientation = -1;
|
||||||
|
|
||||||
public Holder(Activity activity, ViewGroup parent){
|
public Holder(Activity activity, ViewGroup parent){
|
||||||
super(activity, R.layout.display_item_reblog_or_reply_line, parent);
|
super(activity, R.layout.display_item_reblog_or_reply_line, parent);
|
||||||
text=findViewById(R.id.text);
|
text=findViewById(R.id.text);
|
||||||
frame=findViewById(R.id.frame);
|
extraText=findViewById(R.id.extra_text);
|
||||||
|
separator=findViewById(R.id.separator);
|
||||||
|
if (GlobalUserPreferences.replyLineAboveHeader && GlobalUserPreferences.compactReblogReplyLine) {
|
||||||
|
itemView.getViewTreeObserver().addOnPreDrawListener(() -> {
|
||||||
|
if (item == null) return true;
|
||||||
|
int orientation = ((LinearLayout) itemView).getOrientation();
|
||||||
|
if (orientation == currentOrientation) return true; // only run once
|
||||||
|
currentOrientation = orientation;
|
||||||
|
extraText.setPaddingRelative(extraText.getPaddingStart(), item.extra != null && orientation == LinearLayout.VERTICAL ? 0 : V.dp(16), extraText.getPaddingEnd(), extraText.getPaddingBottom());
|
||||||
|
separator.setVisibility(item.extra != null && orientation == LinearLayout.HORIZONTAL ? View.VISIBLE : View.GONE);
|
||||||
|
((LinearLayout) itemView).removeView(extraText);
|
||||||
|
if (orientation == LinearLayout.VERTICAL) ((LinearLayout) itemView).addView(extraText);
|
||||||
|
else ((LinearLayout) itemView).addView(extraText, 0);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void bindLine(ReblogOrReplyLineStatusDisplayItem item, TextView text) {
|
||||||
public void onBind(ReblogOrReplyLineStatusDisplayItem item){
|
if (item.contentDescription != null) text.setContentDescription(item.contentDescription);
|
||||||
text.setText(item.text);
|
text.setText(item.text);
|
||||||
text.setCompoundDrawablesRelativeWithIntrinsicBounds(item.icon, 0, item.iconEnd, 0);
|
text.setCompoundDrawablesRelativeWithIntrinsicBounds(item.icon, 0, item.iconEnd, 0);
|
||||||
text.setOnClickListener(item.handleClick);
|
text.setOnClickListener(item.handleClick);
|
||||||
@@ -109,15 +125,27 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
|||||||
case PUBLIC -> R.string.visibility_public;
|
case PUBLIC -> R.string.visibility_public;
|
||||||
case UNLISTED -> R.string.sk_visibility_unlisted;
|
case UNLISTED -> R.string.sk_visibility_unlisted;
|
||||||
case PRIVATE -> R.string.visibility_followers_only;
|
case PRIVATE -> R.string.visibility_followers_only;
|
||||||
|
case LOCAL -> R.string.sk_local_only;
|
||||||
default -> 0;
|
default -> 0;
|
||||||
} : 0;
|
} : 0;
|
||||||
if (visibilityText != 0) text.setContentDescription(item.text + " (" + ctx.getString(visibilityText) + ")");
|
if (visibilityText != 0) text.setContentDescription(item.text + " (" + ctx.getString(visibilityText) + ")");
|
||||||
if(Build.VERSION.SDK_INT<Build.VERSION_CODES.N)
|
if(Build.VERSION.SDK_INT<Build.VERSION_CODES.N)
|
||||||
UiUtils.fixCompoundDrawableTintOnAndroid6(text);
|
UiUtils.fixCompoundDrawableTintOnAndroid6(text);
|
||||||
|
text.setTextAppearance(item.belowHeader ? R.style.m3_label_large : R.style.m3_title_small);
|
||||||
|
text.setCompoundDrawableTintList(text.getTextColors());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBind(ReblogOrReplyLineStatusDisplayItem item){
|
||||||
|
bindLine(item, text);
|
||||||
|
if (item.extra != null) bindLine(item.extra, extraText);
|
||||||
|
extraText.setVisibility(item.extra == null ? View.GONE : View.VISIBLE);
|
||||||
|
separator.setVisibility(item.extra == null ? View.GONE : View.VISIBLE);
|
||||||
ViewGroup.MarginLayoutParams params = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
ViewGroup.MarginLayoutParams params = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
params.bottomMargin = V.dp(item.isLastLine ? -12 : -18);
|
params.bottomMargin = item.belowHeader ? V.dp(-6) : V.dp(-12);
|
||||||
params.leftMargin = V.dp(13) * item.lineNo;
|
params.topMargin = item.belowHeader ? V.dp(-6) : 0;
|
||||||
frame.setLayoutParams(params);
|
itemView.setLayoutParams(params);
|
||||||
|
itemView.setPadding(itemView.getPaddingLeft(), itemView.getPaddingTop(), itemView.getPaddingRight(), item.needBottomPadding ? V.dp(16) : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import android.text.TextUtils;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import org.joinmastodon.android.GlobalUserPreferences;
|
||||||
import org.joinmastodon.android.R;
|
import org.joinmastodon.android.R;
|
||||||
import org.joinmastodon.android.api.session.AccountSessionManager;
|
import org.joinmastodon.android.api.session.AccountSessionManager;
|
||||||
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
||||||
@@ -31,6 +32,7 @@ import org.parceler.Parcels;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import me.grishka.appkit.Nav;
|
import me.grishka.appkit.Nav;
|
||||||
@@ -108,12 +110,33 @@ public abstract class StatusDisplayItem{
|
|||||||
statusForContent.filterRevealed = filterPredicate.testWithWarning(status);
|
statusForContent.filterRevealed = filterPredicate.testWithWarning(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReblogOrReplyLineStatusDisplayItem replyLine = null;
|
||||||
|
boolean threadReply = statusForContent.inReplyToAccountId != null &&
|
||||||
|
statusForContent.inReplyToAccountId.equals(statusForContent.account.id);
|
||||||
|
|
||||||
|
if(statusForContent.inReplyToAccountId!=null && !(threadReply && fragment instanceof ThreadFragment)){
|
||||||
|
Account account = knownAccounts.get(statusForContent.inReplyToAccountId);
|
||||||
|
String text = threadReply ? fragment.getString(R.string.sk_show_thread)
|
||||||
|
: account == null ? fragment.getString(R.string.sk_in_reply)
|
||||||
|
: GlobalUserPreferences.compactReblogReplyLine && status.reblog != null ? account.displayName
|
||||||
|
: fragment.getString(R.string.in_reply_to, account.displayName);
|
||||||
|
String fullText = threadReply ? fragment.getString(R.string.sk_show_thread)
|
||||||
|
: account == null ? fragment.getString(R.string.sk_in_reply)
|
||||||
|
: fragment.getString(R.string.in_reply_to, account.displayName);
|
||||||
|
replyLine = new ReblogOrReplyLineStatusDisplayItem(
|
||||||
|
parentID, fragment, text, account == null ? List.of() : account.emojis,
|
||||||
|
R.drawable.ic_fluent_arrow_reply_20_filled, null, null, fullText
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if(status.reblog!=null){
|
if(status.reblog!=null){
|
||||||
boolean isOwnPost = AccountSessionManager.getInstance().isSelf(fragment.getAccountID(), status.account);
|
boolean isOwnPost = AccountSessionManager.getInstance().isSelf(fragment.getAccountID(), status.account);
|
||||||
items.add(new ReblogOrReplyLineStatusDisplayItem(parentID, fragment, fragment.getString(R.string.user_boosted, status.account.displayName), status.account.emojis, R.drawable.ic_fluent_arrow_repeat_all_20_filled, isOwnPost ? status.visibility : null, i->{
|
String fullText = fragment.getString(R.string.user_boosted, status.account.displayName);
|
||||||
|
String text = GlobalUserPreferences.compactReblogReplyLine && replyLine != null ? status.account.displayName : fullText;
|
||||||
|
items.add(new ReblogOrReplyLineStatusDisplayItem(parentID, fragment, text, status.account.emojis, R.drawable.ic_fluent_arrow_repeat_all_20_filled, isOwnPost ? status.visibility : null, i->{
|
||||||
args.putParcelable("profileAccount", Parcels.wrap(status.account));
|
args.putParcelable("profileAccount", Parcels.wrap(status.account));
|
||||||
Nav.go(fragment.getActivity(), ProfileFragment.class, args);
|
Nav.go(fragment.getActivity(), ProfileFragment.class, args);
|
||||||
}));
|
}, fullText));
|
||||||
} else if (!(status.tags.isEmpty() ||
|
} else if (!(status.tags.isEmpty() ||
|
||||||
fragment instanceof HashtagTimelineFragment ||
|
fragment instanceof HashtagTimelineFragment ||
|
||||||
fragment instanceof ListTimelineFragment
|
fragment instanceof ListTimelineFragment
|
||||||
@@ -133,35 +156,31 @@ public abstract class StatusDisplayItem{
|
|||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(statusForContent.inReplyToAccountId!=null){
|
if (replyLine != null && GlobalUserPreferences.replyLineAboveHeader) {
|
||||||
Account account = knownAccounts.get(statusForContent.inReplyToAccountId);
|
Optional<ReblogOrReplyLineStatusDisplayItem> primaryLine = items.stream()
|
||||||
View.OnClickListener handleClick = account == null ? null : i -> {
|
.filter(i -> i instanceof ReblogOrReplyLineStatusDisplayItem)
|
||||||
args.putParcelable("profileAccount", Parcels.wrap(account));
|
.map(ReblogOrReplyLineStatusDisplayItem.class::cast)
|
||||||
Nav.go(fragment.getActivity(), ProfileFragment.class, args);
|
.findFirst();
|
||||||
};
|
|
||||||
String text = account != null ? fragment.getString(R.string.in_reply_to, account.displayName) : fragment.getString(R.string.sk_in_reply);
|
|
||||||
items.add(new ReblogOrReplyLineStatusDisplayItem(
|
|
||||||
parentID, fragment, text, account == null ? List.of() : account.emojis,
|
|
||||||
R.drawable.ic_fluent_arrow_reply_20_filled, null, handleClick
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
int l = 0;
|
if (primaryLine.isPresent() && GlobalUserPreferences.compactReblogReplyLine) {
|
||||||
ReblogOrReplyLineStatusDisplayItem lastLine = null;
|
primaryLine.get().extra = replyLine;
|
||||||
for (StatusDisplayItem item : items) {
|
} else {
|
||||||
if (item instanceof ReblogOrReplyLineStatusDisplayItem line) {
|
items.add(replyLine);
|
||||||
line.setLineNo(l);
|
|
||||||
line.setIsLastLine(false);
|
|
||||||
lastLine = line;
|
|
||||||
l++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (lastLine != null) lastLine.setIsLastLine(true);
|
|
||||||
|
|
||||||
HeaderStatusDisplayItem header;
|
HeaderStatusDisplayItem header;
|
||||||
items.add(header=new HeaderStatusDisplayItem(parentID, statusForContent.account, statusForContent.createdAt, fragment, accountID, statusForContent, null, notification, scheduledStatus));
|
items.add(header=new HeaderStatusDisplayItem(parentID, statusForContent.account, statusForContent.createdAt, fragment, accountID, statusForContent, null, notification, scheduledStatus));
|
||||||
|
|
||||||
|
if (replyLine != null && !GlobalUserPreferences.replyLineAboveHeader) {
|
||||||
|
replyLine.belowHeader = true;
|
||||||
|
items.add(replyLine);
|
||||||
|
}
|
||||||
|
|
||||||
if(!TextUtils.isEmpty(statusForContent.content))
|
if(!TextUtils.isEmpty(statusForContent.content))
|
||||||
items.add(new TextStatusDisplayItem(parentID, HtmlParser.parse(statusForContent.content, statusForContent.emojis, statusForContent.mentions, statusForContent.tags, accountID), fragment, statusForContent, disableTranslate));
|
items.add(new TextStatusDisplayItem(parentID, HtmlParser.parse(statusForContent.content, statusForContent.emojis, statusForContent.mentions, statusForContent.tags, accountID), fragment, statusForContent, disableTranslate));
|
||||||
|
else if (!GlobalUserPreferences.replyLineAboveHeader && replyLine != null)
|
||||||
|
replyLine.needBottomPadding=true;
|
||||||
else
|
else
|
||||||
header.needBottomPadding=true;
|
header.needBottomPadding=true;
|
||||||
List<Attachment> imageAttachments=statusForContent.mediaAttachments.stream().filter(att->att.type.isImage()).collect(Collectors.toList());
|
List<Attachment> imageAttachments=statusForContent.mediaAttachments.stream().filter(att->att.type.isImage()).collect(Collectors.toList());
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import android.graphics.drawable.Drawable;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.view.ViewTreeObserver;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.ScrollView;
|
import android.widget.ScrollView;
|
||||||
@@ -31,6 +32,7 @@ import org.joinmastodon.android.ui.utils.UiUtils;
|
|||||||
import org.joinmastodon.android.ui.views.LinkedTextView;
|
import org.joinmastodon.android.ui.views.LinkedTextView;
|
||||||
import org.joinmastodon.android.utils.StatusTextEncoder;
|
import org.joinmastodon.android.utils.StatusTextEncoder;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import me.grishka.appkit.api.Callback;
|
import me.grishka.appkit.api.Callback;
|
||||||
@@ -97,9 +99,11 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
|
|||||||
|
|
||||||
private final float textMaxHeight, textCollapsedHeight;
|
private final float textMaxHeight, textCollapsedHeight;
|
||||||
private final LinearLayout.LayoutParams collapseParams, wrapParams;
|
private final LinearLayout.LayoutParams collapseParams, wrapParams;
|
||||||
|
private final ViewGroup parent;
|
||||||
|
|
||||||
public Holder(Activity activity, ViewGroup parent){
|
public Holder(Activity activity, ViewGroup parent){
|
||||||
super(activity, R.layout.display_item_text, parent);
|
super(activity, R.layout.display_item_text, parent);
|
||||||
|
this.parent=parent;
|
||||||
text=findViewById(R.id.text);
|
text=findViewById(R.id.text);
|
||||||
spoilerTitle=findViewById(R.id.spoiler_title);
|
spoilerTitle=findViewById(R.id.spoiler_title);
|
||||||
spoilerTitleInline=findViewById(R.id.spoiler_title_inline);
|
spoilerTitleInline=findViewById(R.id.spoiler_title_inline);
|
||||||
@@ -165,13 +169,13 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
|
|||||||
boolean translateEnabled = !item.disableTranslate && instanceInfo != null &&
|
boolean translateEnabled = !item.disableTranslate && instanceInfo != null &&
|
||||||
instanceInfo.v2 != null && instanceInfo.v2.configuration.translation != null &&
|
instanceInfo.v2 != null && instanceInfo.v2.configuration.translation != null &&
|
||||||
instanceInfo.v2.configuration.translation.enabled;
|
instanceInfo.v2.configuration.translation.enabled;
|
||||||
|
|
||||||
boolean isBottomText = BOTTOM_TEXT_PATTERN.matcher(item.status.getStrippedText()).find();
|
boolean isBottomText = BOTTOM_TEXT_PATTERN.matcher(item.status.getStrippedText()).find();
|
||||||
boolean translateVisible = (isBottomText || (
|
boolean translateVisible = (isBottomText || (
|
||||||
translateEnabled &&
|
translateEnabled &&
|
||||||
!item.status.visibility.isLessVisibleThan(StatusPrivacy.UNLISTED) &&
|
!item.status.visibility.isLessVisibleThan(StatusPrivacy.UNLISTED) &&
|
||||||
item.status.language != null &&
|
item.status.language != null &&
|
||||||
(item.session.preferences == null || !item.status.language.equalsIgnoreCase(item.session.preferences.postingDefaultLanguage))))
|
// todo: compare to mastodon locale instead (how do i query that?!)
|
||||||
|
!item.status.language.equalsIgnoreCase(Locale.getDefault().getLanguage())))
|
||||||
&& (!GlobalUserPreferences.translateButtonOpenedOnly || item.textSelectable);
|
&& (!GlobalUserPreferences.translateButtonOpenedOnly || item.textSelectable);
|
||||||
translateWrap.setVisibility(translateVisible ? View.VISIBLE : View.GONE);
|
translateWrap.setVisibility(translateVisible ? View.VISIBLE : View.GONE);
|
||||||
translateButton.setText(item.translated ? R.string.sk_translate_show_original : R.string.sk_translate_post);
|
translateButton.setText(item.translated ? R.string.sk_translate_show_original : R.string.sk_translate_post);
|
||||||
@@ -227,13 +231,17 @@ public class TextStatusDisplayItem extends StatusDisplayItem{
|
|||||||
readMore.setVisibility(View.GONE);
|
readMore.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GlobalUserPreferences.collapseLongPosts) text.post(() -> {
|
text.measure(
|
||||||
|
View.MeasureSpec.makeMeasureSpec(parent.getWidth(), View.MeasureSpec.EXACTLY),
|
||||||
|
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
|
||||||
|
|
||||||
|
if (GlobalUserPreferences.collapseLongPosts && !item.status.textExpandable) {
|
||||||
boolean tooBig = text.getMeasuredHeight() > textMaxHeight;
|
boolean tooBig = text.getMeasuredHeight() > textMaxHeight;
|
||||||
boolean inTimeline = !item.textSelectable;
|
boolean inTimeline = !item.textSelectable;
|
||||||
boolean hasSpoiler = !TextUtils.isEmpty(item.status.spoilerText);
|
boolean hasSpoiler = !TextUtils.isEmpty(item.status.spoilerText);
|
||||||
boolean expandable = inTimeline && tooBig && !hasSpoiler;
|
boolean expandable = inTimeline && tooBig && !hasSpoiler;
|
||||||
item.parentFragment.onEnableExpandable(this, expandable);
|
item.parentFragment.onEnableExpandable(Holder.this, expandable);
|
||||||
});
|
}
|
||||||
|
|
||||||
readMore.setVisibility(item.status.textExpandable && !item.status.textExpanded ? View.VISIBLE : View.GONE);
|
readMore.setVisibility(item.status.textExpandable && !item.status.textExpanded ? View.VISIBLE : View.GONE);
|
||||||
textScrollView.setLayoutParams(item.status.textExpandable && !item.status.textExpanded ? collapseParams : wrapParams);
|
textScrollView.setLayoutParams(item.status.textExpandable && !item.status.textExpanded ? collapseParams : wrapParams);
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
|
||||||
|
<path android:pathData="M2.75 13.25h18.5c0.414 0 0.75 0.336 0.75 0.75 0 0.38-0.282 0.694-0.648 0.743L21.25 14.75H2.75C2.336 14.75 2 14.414 2 14c0-0.38 0.282-0.694 0.648-0.743L2.75 13.25h18.5-18.5zm0-4h18.5C21.664 9.25 22 9.586 22 10c0 0.38-0.282 0.694-0.648 0.743L21.25 10.75H2.75C2.336 10.75 2 10.414 2 10c0-0.38 0.282-0.694 0.648-0.743L2.75 9.25h18.5-18.5z" android:fillColor="@color/fluent_default_icon_tint"/>
|
||||||
|
</vector>
|
||||||
@@ -1,15 +1,42 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<org.joinmastodon.android.ui.views.AutoOrientationLinearLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="horizontal"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:id="@+id/frame"
|
android:paddingHorizontal="16dp"
|
||||||
android:layout_marginBottom="-12dp">
|
android:layout_marginBottom="-12dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/extra_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingTop="16dp"
|
||||||
|
android:paddingBottom="6dp"
|
||||||
|
android:textAppearance="@style/m3_title_small"
|
||||||
|
android:drawableStart="@drawable/ic_fluent_arrow_reply_20_filled"
|
||||||
|
android:drawableTint="?android:textColorSecondary"
|
||||||
|
android:drawablePadding="6dp"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:ellipsize="end"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/separator"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="6dp"
|
||||||
|
android:paddingTop="16dp"
|
||||||
|
android:paddingHorizontal="1dp"
|
||||||
|
android:textAppearance="@style/m3_title_small"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:importantForAccessibility="no"
|
||||||
|
android:includeFontPadding="false"
|
||||||
|
android:text="@string/sk_separator" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/text"
|
android:id="@+id/text"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingHorizontal="16dp"
|
|
||||||
android:paddingTop="16dp"
|
android:paddingTop="16dp"
|
||||||
android:paddingBottom="6dp"
|
android:paddingBottom="6dp"
|
||||||
android:textAppearance="@style/m3_title_small"
|
android:textAppearance="@style/m3_title_small"
|
||||||
@@ -19,4 +46,4 @@
|
|||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:ellipsize="end"/>
|
android:ellipsize="end"/>
|
||||||
|
|
||||||
</FrameLayout>
|
</org.joinmastodon.android.ui.views.AutoOrientationLinearLayout>
|
||||||
@@ -64,10 +64,10 @@
|
|||||||
android:paddingBottom="6dp"
|
android:paddingBottom="6dp"
|
||||||
android:textAppearance="@style/m3_title_small"
|
android:textAppearance="@style/m3_title_small"
|
||||||
android:drawableStart="@drawable/ic_fluent_arrow_reply_20_filled"
|
android:drawableStart="@drawable/ic_fluent_arrow_reply_20_filled"
|
||||||
tools:drawableEnd="@drawable/ic_fluent_earth_20_regular"
|
|
||||||
android:drawableTint="?android:textColorSecondary"
|
android:drawableTint="?android:textColorSecondary"
|
||||||
android:drawablePadding="6dp"
|
android:drawablePadding="6dp"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
|
android:text="@string/sk_in_reply"
|
||||||
android:ellipsize="end"/>
|
android:ellipsize="end"/>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
@@ -125,6 +125,23 @@
|
|||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/reply_text_below"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="-6dp"
|
||||||
|
android:layout_marginBottom="-6dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:paddingTop="16dp"
|
||||||
|
android:paddingBottom="6dp"
|
||||||
|
android:textAppearance="@style/m3_title_small"
|
||||||
|
android:drawableStart="@drawable/ic_fluent_arrow_reply_20_filled"
|
||||||
|
android:drawableTint="?android:textColorSecondary"
|
||||||
|
android:drawablePadding="6dp"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="@string/sk_in_reply"
|
||||||
|
android:ellipsize="end"/>
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/toot_text_wrap"
|
android:id="@+id/toot_text_wrap"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|||||||
6
mastodon/src/main/res/menu/reply_visibility.xml
Normal file
6
mastodon/src/main/res/menu/reply_visibility.xml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:id="@+id/reply_visibility_all" android:title="@string/sk_settings_reply_visibility_all"/>
|
||||||
|
<item android:id="@+id/reply_visibility_following" android:title="@string/sk_settings_reply_visibility_following"/>
|
||||||
|
<item android:id="@+id/reply_visibility_self" android:title="@string/sk_settings_reply_visibility_self"/>
|
||||||
|
</menu>
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
<string name="user_followed_you">بَدَأ بِمُتابَعَتِك</string>
|
<string name="user_followed_you">بَدَأ بِمُتابَعَتِك</string>
|
||||||
<string name="user_sent_follow_request">أرسَلَ طَلَبًا لِمُتابَعَتِك</string>
|
<string name="user_sent_follow_request">أرسَلَ طَلَبًا لِمُتابَعَتِك</string>
|
||||||
<string name="user_favorited">فَضَّلَ مَنشُورَك</string>
|
<string name="user_favorited">فَضَّلَ مَنشُورَك</string>
|
||||||
<string name="notification_boosted">أعادَ تَدوينَ مَنشُورَك</string>
|
<string name="notification_boosted">أعادَ تَدوينَ مَنشُورِك</string>
|
||||||
<string name="poll_ended">انتهى استطلاعُ الرأي</string>
|
<string name="poll_ended">انتهى استطلاعُ الرأي</string>
|
||||||
<string name="time_seconds">%d ثا</string>
|
<string name="time_seconds">%d ثا</string>
|
||||||
<string name="time_minutes">%d د</string>
|
<string name="time_minutes">%d د</string>
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
<string name="media">وسائط</string>
|
<string name="media">وسائط</string>
|
||||||
<string name="profile_about">حَول</string>
|
<string name="profile_about">حَول</string>
|
||||||
<string name="button_follow">تابِع</string>
|
<string name="button_follow">تابِع</string>
|
||||||
<string name="button_following">يُتابِع</string>
|
<string name="button_following">مُتابَع</string>
|
||||||
<string name="edit_profile">حرّر الملف الشخصي</string>
|
<string name="edit_profile">حرّر الملف الشخصي</string>
|
||||||
<string name="mention_user">ذِكر @%s</string>
|
<string name="mention_user">ذِكر @%s</string>
|
||||||
<string name="share_user">مُشارَكَةُ %s</string>
|
<string name="share_user">مُشارَكَةُ %s</string>
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
<string name="field_label">التسمية</string>
|
<string name="field_label">التسمية</string>
|
||||||
<string name="field_content">المحتوى</string>
|
<string name="field_content">المحتوى</string>
|
||||||
<string name="saving">يحفظ…</string>
|
<string name="saving">يحفظ…</string>
|
||||||
<string name="post_from_user">نُشر من %s</string>
|
<string name="post_from_user">مَنشور مِن %s</string>
|
||||||
<string name="poll_option_hint">الخيار %d</string>
|
<string name="poll_option_hint">الخيار %d</string>
|
||||||
<plurals name="x_minutes">
|
<plurals name="x_minutes">
|
||||||
<item quantity="zero">أقل من دقيقة</item>
|
<item quantity="zero">أقل من دقيقة</item>
|
||||||
@@ -249,7 +249,7 @@
|
|||||||
<string name="category_games">ألعاب</string>
|
<string name="category_games">ألعاب</string>
|
||||||
<string name="category_general">عام</string>
|
<string name="category_general">عام</string>
|
||||||
<string name="category_journalism">صحافة</string>
|
<string name="category_journalism">صحافة</string>
|
||||||
<string name="category_lgbt">LGBT</string>
|
<string name="category_lgbt">مجتمع الميم</string>
|
||||||
<string name="category_music">موسيقى</string>
|
<string name="category_music">موسيقى</string>
|
||||||
<string name="category_regional">إقليمي</string>
|
<string name="category_regional">إقليمي</string>
|
||||||
<string name="category_tech">تقني</string>
|
<string name="category_tech">تقني</string>
|
||||||
@@ -311,7 +311,7 @@
|
|||||||
<string name="notify_favorites">بِالإعْجاب بِمَنشوري</string>
|
<string name="notify_favorites">بِالإعْجاب بِمَنشوري</string>
|
||||||
<string name="notify_follow">بمتابعتي</string>
|
<string name="notify_follow">بمتابعتي</string>
|
||||||
<string name="notify_reblog">بإعادة تدوين مَنشوري</string>
|
<string name="notify_reblog">بإعادة تدوين مَنشوري</string>
|
||||||
<string name="notify_mention">ذكرني</string>
|
<string name="notify_mention">بِالإشارَةِ إليّ</string>
|
||||||
<string name="settings_boring">المنطِقَةُ المُملَّة</string>
|
<string name="settings_boring">المنطِقَةُ المُملَّة</string>
|
||||||
<string name="settings_account">إعدادات الحساب</string>
|
<string name="settings_account">إعدادات الحساب</string>
|
||||||
<string name="settings_contribute">ساهم في ماستدون</string>
|
<string name="settings_contribute">ساهم في ماستدون</string>
|
||||||
@@ -432,7 +432,7 @@
|
|||||||
<item quantity="many">منذ %d دقائق</item>
|
<item quantity="many">منذ %d دقائق</item>
|
||||||
<item quantity="other">منذ %d دقائق</item>
|
<item quantity="other">منذ %d دقائق</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="edited_timestamp">عُدّل في %s</string>
|
<string name="edited_timestamp">عُدّل منذ %s</string>
|
||||||
<string name="edit_original_post">المنشور الأصلي</string>
|
<string name="edit_original_post">المنشور الأصلي</string>
|
||||||
<string name="edit_text_edited">تم تعديل النص</string>
|
<string name="edit_text_edited">تم تعديل النص</string>
|
||||||
<string name="edit_spoiler_added">تم إضافة تحذير المحتوى</string>
|
<string name="edit_spoiler_added">تم إضافة تحذير المحتوى</string>
|
||||||
@@ -508,7 +508,7 @@
|
|||||||
<string name="server_rules_disagree">لا أوافق</string>
|
<string name="server_rules_disagree">لا أوافق</string>
|
||||||
<string name="privacy_policy_explanation">بالمختصر: نحن لا نجمع أو نعالج أي شيء.</string>
|
<string name="privacy_policy_explanation">بالمختصر: نحن لا نجمع أو نعالج أي شيء.</string>
|
||||||
<!-- %s is server domain -->
|
<!-- %s is server domain -->
|
||||||
<string name="server_policy_disagree">لايتفق مع %s</string>
|
<string name="server_policy_disagree">لا أوافق %s</string>
|
||||||
<string name="profile_bio">نبذة عنك</string>
|
<string name="profile_bio">نبذة عنك</string>
|
||||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
<string name="sending_follows">متابعة المستخدمين…</string>
|
<string name="sending_follows">متابعة المستخدمين…</string>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
<string name="settings">Налады</string>
|
<string name="settings">Налады</string>
|
||||||
<string name="publish">Апублікаваць</string>
|
<string name="publish">Апублікаваць</string>
|
||||||
<string name="discard_draft">Скасаваць чарнавік?</string>
|
<string name="discard_draft">Скасаваць чарнавік?</string>
|
||||||
<string name="discard">Скасаваць</string>
|
<string name="discard">Выйсці</string>
|
||||||
<string name="cancel">Скасаваць</string>
|
<string name="cancel">Скасаваць</string>
|
||||||
<plurals name="followers">
|
<plurals name="followers">
|
||||||
<item quantity="one">падпісчык</item>
|
<item quantity="one">падпісчык</item>
|
||||||
@@ -201,7 +201,15 @@
|
|||||||
<string name="back">Назад</string>
|
<string name="back">Назад</string>
|
||||||
<string name="instance_catalog_title">Mastodon складаецца з карыстальнікаў на розных серверах.</string>
|
<string name="instance_catalog_title">Mastodon складаецца з карыстальнікаў на розных серверах.</string>
|
||||||
<string name="instance_catalog_subtitle">Выбірайце сервер у залежнасці ад вашых інтарэсаў, рэгіёна або выберыце сервер агульнага прызначэння. Вы па-ранейшаму можаце ўзаемадзейнічаць з усімі, незалежна ад сервера.</string>
|
<string name="instance_catalog_subtitle">Выбірайце сервер у залежнасці ад вашых інтарэсаў, рэгіёна або выберыце сервер агульнага прызначэння. Вы па-ранейшаму можаце ўзаемадзейнічаць з усімі, незалежна ад сервера.</string>
|
||||||
|
<string name="search_communities">Назва сервера або URL</string>
|
||||||
|
<string name="instance_rules_title">Правілы сервера</string>
|
||||||
|
<string name="signup_title">Стварыць уліковы запіс</string>
|
||||||
<string name="edit_photo">рэдагаваць</string>
|
<string name="edit_photo">рэдагаваць</string>
|
||||||
|
<string name="display_name">Імя</string>
|
||||||
|
<string name="username">Імя карыстальніка</string>
|
||||||
|
<string name="email">Электронная пошта</string>
|
||||||
|
<string name="password">Пароль</string>
|
||||||
|
<string name="confirm_password">Пацвердзіць пароль</string>
|
||||||
<string name="password_note">Выкарыстоўвайце вялікія літары, спецыяльныя сімвалы і лічбы, каб павялічыць надзейнасць пароля.</string>
|
<string name="password_note">Выкарыстоўвайце вялікія літары, спецыяльныя сімвалы і лічбы, каб павялічыць надзейнасць пароля.</string>
|
||||||
<string name="category_academia">Акадэмія</string>
|
<string name="category_academia">Акадэмія</string>
|
||||||
<string name="category_activism">Актывізм</string>
|
<string name="category_activism">Актывізм</string>
|
||||||
@@ -216,6 +224,7 @@
|
|||||||
<string name="category_music">Музыка</string>
|
<string name="category_music">Музыка</string>
|
||||||
<string name="category_regional">Рэгіянальныя</string>
|
<string name="category_regional">Рэгіянальныя</string>
|
||||||
<string name="category_tech">Тэхналогіі</string>
|
<string name="category_tech">Тэхналогіі</string>
|
||||||
|
<string name="confirm_email_title">Праверце паштовую скрыню</string>
|
||||||
<!-- %s is the email address -->
|
<!-- %s is the email address -->
|
||||||
<string name="resend">Адправіць паўторна</string>
|
<string name="resend">Адправіць паўторна</string>
|
||||||
<string name="open_email_app">Адкрыць праграму для пошты</string>
|
<string name="open_email_app">Адкрыць праграму для пошты</string>
|
||||||
@@ -426,7 +435,15 @@
|
|||||||
<string name="welcome_page2_text">Ваш ідэнтыфікатар можа быць @gothgirl654@example.social, але вы ўсё яшчэ можаце падпісвацца, пашыраць і перапісвацца з @fallout5ever@example.online.</string>
|
<string name="welcome_page2_text">Ваш ідэнтыфікатар можа быць @gothgirl654@example.social, але вы ўсё яшчэ можаце падпісвацца, пашыраць і перапісвацца з @fallout5ever@example.online.</string>
|
||||||
<string name="welcome_page3_title">Як выбраць сервер?</string>
|
<string name="welcome_page3_title">Як выбраць сервер?</string>
|
||||||
<string name="welcome_page3_text">Розныя людзі выбіраюць розныя серверы па розных прычынах. art.example з\'яўляецца выдатным месцам для мастакоў, у той час як glasgow.example можа быць добрым выбарам для шатландцаў.\n\nВы не памыліцеся ні з адным з нашых рэкамендаваных сервераў, так што незалежна ад таго, які вы выбераце (або калі ўведзяце ваш уласны ў радку пошуку сервера), вы нідзе нічога не прапусціце.</string>
|
<string name="welcome_page3_text">Розныя людзі выбіраюць розныя серверы па розных прычынах. art.example з\'яўляецца выдатным месцам для мастакоў, у той час як glasgow.example можа быць добрым выбарам для шатландцаў.\n\nВы не памыліцеся ні з адным з нашых рэкамендаваных сервераў, так што незалежна ад таго, які вы выбераце (або калі ўведзяце ваш уласны ў радку пошуку сервера), вы нідзе нічога не прапусціце.</string>
|
||||||
|
<string name="server_filter_any_language">Любая мова</string>
|
||||||
|
<string name="server_filter_region_europe">Еўропа</string>
|
||||||
|
<string name="server_filter_region_north_america">Паўночная Амерыка</string>
|
||||||
|
<string name="server_filter_region_south_america">Паўднёвая Амерыка</string>
|
||||||
|
<string name="server_filter_region_africa">Афрыка</string>
|
||||||
|
<string name="server_filter_region_asia">Азія</string>
|
||||||
|
<string name="server_filter_region_oceania">Акіянія</string>
|
||||||
<!-- %s is server domain -->
|
<!-- %s is server domain -->
|
||||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||||
|
<string name="signup_username_taken">Гэта імя карыстальніка занята.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1,42 +1,94 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
<string name="get_started">অ্যাকাউন্ট তৈরি করুন</string>
|
||||||
|
<string name="already_have_account">আমার আগে থেকেই একটি অ্যাকাউন্ট আছে</string>
|
||||||
<string name="log_in">লগ ইন করুন</string>
|
<string name="log_in">লগ ইন করুন</string>
|
||||||
<string name="next">পরবর্তী</string>
|
<string name="next">এরপর</string>
|
||||||
|
<string name="error">কোনো ত্রুটি ঘটেছে</string>
|
||||||
<string name="ok">ঠিক আছে</string>
|
<string name="ok">ঠিক আছে</string>
|
||||||
<string name="preparing_auth">প্রমাণীকরণের জন্য প্রস্তুত হচ্ছে...</string>
|
<string name="preparing_auth">প্রমাণীকরণের জন্য প্রস্তুত হচ্ছে...</string>
|
||||||
<string name="notifications">বিজ্ঞপ্তি</string>
|
<string name="in_reply_to">%s কে উত্তর দিন</string>
|
||||||
<string name="user_followed_you">অনুসরণ করে</string>
|
<string name="notifications">নোটিফিকেশন</string>
|
||||||
<string name="user_sent_follow_request">অনুসরণের জন্য অনুরোধ পাঠানো হয়েছে</string>
|
<string name="user_followed_you">আপনাকে ফলো করেছেন</string>
|
||||||
<string name="user_favorited">পোস্টটি পছন্দ করা হয়েছে</string>
|
<string name="user_sent_follow_request">ফলো করার জন্য অনুরোধ পাঠানো হয়েছে</string>
|
||||||
|
<string name="user_favorited">আপনার পোস্টটি পছন্দ করেছেন</string>
|
||||||
<string name="notification_boosted">আপনার পোস্টের প্রচার করা হয়েছে</string>
|
<string name="notification_boosted">আপনার পোস্টের প্রচার করা হয়েছে</string>
|
||||||
<string name="poll_ended">ভোট শেষ</string>
|
<string name="poll_ended">ভোট শেষ</string>
|
||||||
|
<string name="time_seconds">%d সে.</string>
|
||||||
|
<string name="time_minutes">%d মি.</string>
|
||||||
|
<string name="time_hours">%d ঘ.</string>
|
||||||
|
<string name="time_days">%d দি.</string>
|
||||||
|
<string name="share_toot_title">শেয়ার করুন</string>
|
||||||
|
<string name="settings">সেটিংস</string>
|
||||||
|
<string name="cancel">বাতিল করুন</string>
|
||||||
|
<plurals name="posts">
|
||||||
|
<item quantity="one">পোস্ট</item>
|
||||||
|
<item quantity="other">পোস্টগুলো</item>
|
||||||
|
</plurals>
|
||||||
|
<string name="posts">পোস্টগুলো</string>
|
||||||
|
<string name="share_user">%s -কে শেয়ার করুন</string>
|
||||||
|
<string name="mute_user">%s -কে মিউট করুন</string>
|
||||||
|
<string name="unmute_user">%s -কে আনমিউট করুন</string>
|
||||||
|
<string name="block_user">%s -কে ব্লক করুন</string>
|
||||||
|
<string name="unblock_user">%s -কে আনব্লক করুন</string>
|
||||||
|
<string name="report_user">%s -এর নামে রিপোর্ট করুন</string>
|
||||||
|
<string name="block_domain">%s -কে ব্লক করুন</string>
|
||||||
|
<string name="unblock_domain">%s -কে আনব্লক করুন</string>
|
||||||
|
<plurals name="x_posts">
|
||||||
|
<item quantity="one">%,d টি পোস্ট</item>
|
||||||
|
<item quantity="other">%,d টি পোস্ট</item>
|
||||||
|
</plurals>
|
||||||
|
<string name="profile_joined">যুক্ত হয়েছেন</string>
|
||||||
|
<string name="done">হয়ে গেছে</string>
|
||||||
|
<string name="loading">লোড হচ্ছে…</string>
|
||||||
|
<string name="saving">সেভ হচ্ছে…</string>
|
||||||
|
<plurals name="x_minutes">
|
||||||
|
<item quantity="one">%d মিনিট</item>
|
||||||
|
<item quantity="other">%d মিনিট</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="x_hours">
|
||||||
|
<item quantity="one">%d ঘণ্টা</item>
|
||||||
|
<item quantity="other">%d ঘণ্টা</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="x_days">
|
||||||
|
<item quantity="one">%d দিন</item>
|
||||||
|
<item quantity="other">%d দিন</item>
|
||||||
|
</plurals>
|
||||||
<string name="poll_closed">বন্ধ</string>
|
<string name="poll_closed">বন্ধ</string>
|
||||||
<string name="confirm_mute_title">অ্যাকাউন্ট টি মিউট করুন</string>
|
<string name="confirm_mute_title">অ্যাকাউন্টটি মিউট করুন</string>
|
||||||
<string name="do_mute">মিউট করুন</string>
|
<string name="do_mute">মিউট করুন</string>
|
||||||
<string name="confirm_unmute_title">অ্যাকাউন্ট টি আনমিউট করুন</string>
|
<string name="confirm_unmute_title">অ্যাকাউন্ট টি আনমিউট করুন</string>
|
||||||
<string name="confirm_unmute">%s আনমিউট নিশ্চিত করুন</string>
|
<string name="confirm_unmute">%s আনমিউট নিশ্চিত করুন</string>
|
||||||
<string name="do_unmute">মিউট</string>
|
<string name="do_unmute">মিউট</string>
|
||||||
<string name="confirm_block_title">অ্যাকাউন্ট টি ব্লক করুন</string>
|
<string name="confirm_block_title">অ্যাকাউন্টটি ব্লক করুন</string>
|
||||||
|
<string name="confirm_block_domain_title">ওয়েবসাইটটি ব্লক করুন</string>
|
||||||
<string name="do_block">ব্লক করুন</string>
|
<string name="do_block">ব্লক করুন</string>
|
||||||
|
<string name="confirm_unblock_title">অ্যাকাউন্ট আনব্লক করুন</string>
|
||||||
<string name="confirm_unblock">%s আনব্লক নিশ্চিত করুন</string>
|
<string name="confirm_unblock">%s আনব্লক নিশ্চিত করুন</string>
|
||||||
<string name="do_unblock">আনব্লক করুন</string>
|
<string name="do_unblock">আনব্লক করুন</string>
|
||||||
<string name="button_muted">মিউট করা হয়েছে</string>
|
<string name="button_muted">মিউট করা হয়েছে</string>
|
||||||
<string name="tap_to_reveal">ট্যাপ করে দেখুন</string>
|
<string name="button_blocked">ব্লক করা আছে</string>
|
||||||
|
<string name="action_vote">ভোট</string>
|
||||||
|
<string name="tap_to_reveal">দেখার জন্য টিপুন</string>
|
||||||
<string name="delete">মুছে ফেলুন</string>
|
<string name="delete">মুছে ফেলুন</string>
|
||||||
<string name="confirm_delete_title">পোস্ট মুছে ফেলুন</string>
|
<string name="confirm_delete_title">পোস্ট মুছে ফেলুন</string>
|
||||||
<string name="confirm_delete">আপনি কি এই পোস্টটি মুছে ফেলতে চান?</string>
|
<string name="confirm_delete">আপনি কি এই পোস্টটি মুছে ফেলতে চান?</string>
|
||||||
<string name="deleting">মুছে ফেলা হচ্ছে</string>
|
<string name="deleting">মুছে ফেলা হচ্ছে…</string>
|
||||||
<string name="notification_channel_audio_player">অডিও প্লেব্যাক</string>
|
<string name="notification_channel_audio_player">অডিও প্লেব্যাক</string>
|
||||||
<string name="play">চালান</string>
|
<string name="play">চালান</string>
|
||||||
<string name="pause">বিরতি</string>
|
<string name="pause">থামান</string>
|
||||||
<string name="log_out">সাইন আউট</string>
|
<string name="log_out">সাইন-আউট করুন</string>
|
||||||
<string name="add_account">অ্যাকাউন্ট খুলুন</string>
|
<string name="add_account">অ্যাকাউন্ট যোগ করুন</string>
|
||||||
<string name="search_hint">সন্ধান</string>
|
<string name="search_hint">খুঁজুন</string>
|
||||||
<string name="hashtags">হ্যাশট্যাগ</string>
|
<string name="hashtags">হ্যাশট্যাগগুলো</string>
|
||||||
<string name="news">সংবাদ</string>
|
<string name="news">খবর</string>
|
||||||
<string name="for_you">আপনার জন্য</string>
|
<string name="for_you">আপনার জন্য</string>
|
||||||
<string name="all_notifications">সকল</string>
|
<string name="all_notifications">সকল</string>
|
||||||
<string name="mentions">উল্লেখ</string>
|
<string name="mentions">উল্লেখ</string>
|
||||||
|
<plurals name="x_people_talking">
|
||||||
|
<item quantity="one">%d জন ব্যক্তি বলছেন</item>
|
||||||
|
<item quantity="other">%d jon ব্যক্তিরা বলছেন</item>
|
||||||
|
</plurals>
|
||||||
<!-- %s is the email address -->
|
<!-- %s is the email address -->
|
||||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||||
<!-- %s is version like 1.2.3 -->
|
<!-- %s is version like 1.2.3 -->
|
||||||
|
|||||||
@@ -261,4 +261,10 @@
|
|||||||
<string name="sk_followed_as">Mit %s gefolgt</string>
|
<string name="sk_followed_as">Mit %s gefolgt</string>
|
||||||
<string name="sk_settings_hide_fab">Verfassen-Button automatisch ausblenden</string>
|
<string name="sk_settings_hide_fab">Verfassen-Button automatisch ausblenden</string>
|
||||||
<string name="sk_follow_as">Mit anderem Account folgen</string>
|
<string name="sk_follow_as">Mit anderem Account folgen</string>
|
||||||
|
<string name="sk_in_reply">Als Antwort</string>
|
||||||
|
<string name="sk_settings_reply_visibility">Antwort-Sichtbarkeit</string>
|
||||||
|
<string name="sk_settings_reply_visibility_all">Alle Antworten</string>
|
||||||
|
<string name="sk_settings_reply_visibility_following">Antworten auf Follows</string>
|
||||||
|
<string name="sk_settings_reply_visibility_self">Antworten an mich</string>
|
||||||
|
<string name="sk_quoting_user">Zitiere %s</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -173,7 +173,16 @@
|
|||||||
<string name="back">Atrás</string>
|
<string name="back">Atrás</string>
|
||||||
<string name="instance_catalog_title">Mastodon está hecho por usuarios den diferentes servidores.</string>
|
<string name="instance_catalog_title">Mastodon está hecho por usuarios den diferentes servidores.</string>
|
||||||
<string name="instance_catalog_subtitle">Selecciona un servidor basado en tus intereses, región o un propósito general. Aun así puedes conectarte con todo el mundo, sin importar el servidor.</string>
|
<string name="instance_catalog_subtitle">Selecciona un servidor basado en tus intereses, región o un propósito general. Aun así puedes conectarte con todo el mundo, sin importar el servidor.</string>
|
||||||
|
<string name="search_communities">Nombre del servidor o URL</string>
|
||||||
|
<string name="instance_rules_title">Reglas del servidor</string>
|
||||||
|
<string name="instance_rules_subtitle">Al continuar, aceptas seguir las siguientes reglas establecidas y aplicadas por los %s moderadores.</string>
|
||||||
|
<string name="signup_title">Crear cuenta</string>
|
||||||
<string name="edit_photo">editar</string>
|
<string name="edit_photo">editar</string>
|
||||||
|
<string name="display_name">Nombre</string>
|
||||||
|
<string name="username">Nombre de usuario</string>
|
||||||
|
<string name="email">Correo electrónico</string>
|
||||||
|
<string name="password">Contraseña</string>
|
||||||
|
<string name="confirm_password">Confirmar contraseña</string>
|
||||||
<string name="password_note">Incluye letras mayúsculas, caracteres especiales y números para aumentar la fuerza de tu contraseña.</string>
|
<string name="password_note">Incluye letras mayúsculas, caracteres especiales y números para aumentar la fuerza de tu contraseña.</string>
|
||||||
<string name="category_academia">Académico</string>
|
<string name="category_academia">Académico</string>
|
||||||
<string name="category_activism">Activismo</string>
|
<string name="category_activism">Activismo</string>
|
||||||
@@ -188,7 +197,10 @@
|
|||||||
<string name="category_music">Música</string>
|
<string name="category_music">Música</string>
|
||||||
<string name="category_regional">Regional</string>
|
<string name="category_regional">Regional</string>
|
||||||
<string name="category_tech">Tecnología</string>
|
<string name="category_tech">Tecnología</string>
|
||||||
|
<string name="confirm_email_title">Revisa tu bandeja de entrada</string>
|
||||||
<!-- %s is the email address -->
|
<!-- %s is the email address -->
|
||||||
|
<string name="confirm_email_subtitle">Pulsa el enlace que te hemos enviado para verificar %s. Esperaremos aquí mismo.</string>
|
||||||
|
<string name="confirm_email_didnt_get">¿No recibiste un enlace?</string>
|
||||||
<string name="resend">Reenviar</string>
|
<string name="resend">Reenviar</string>
|
||||||
<string name="open_email_app">Abrir aplicación de email</string>
|
<string name="open_email_app">Abrir aplicación de email</string>
|
||||||
<string name="resent_email">Correo de confirmación enviado</string>
|
<string name="resent_email">Correo de confirmación enviado</string>
|
||||||
@@ -276,6 +288,7 @@
|
|||||||
<string name="open_in_browser">Abrir en el navegador</string>
|
<string name="open_in_browser">Abrir en el navegador</string>
|
||||||
<string name="hide_boosts_from_user">Ocultar reblogueos de %s</string>
|
<string name="hide_boosts_from_user">Ocultar reblogueos de %s</string>
|
||||||
<string name="show_boosts_from_user">Mostrar reblogueos de %s</string>
|
<string name="show_boosts_from_user">Mostrar reblogueos de %s</string>
|
||||||
|
<string name="signup_reason">¿Por qué quieres unirte?</string>
|
||||||
<string name="signup_reason_note">Esto nos ayudará a revisar su solicitud.</string>
|
<string name="signup_reason_note">Esto nos ayudará a revisar su solicitud.</string>
|
||||||
<string name="clear">Borrar</string>
|
<string name="clear">Borrar</string>
|
||||||
<string name="profile_header">Imagen de cabecera</string>
|
<string name="profile_header">Imagen de cabecera</string>
|
||||||
@@ -368,6 +381,8 @@
|
|||||||
<!-- %s is file size -->
|
<!-- %s is file size -->
|
||||||
<string name="download_update">Descargar (%s)</string>
|
<string name="download_update">Descargar (%s)</string>
|
||||||
<string name="install_update">Instalar</string>
|
<string name="install_update">Instalar</string>
|
||||||
|
<string name="privacy_policy_title">Tu privacidad</string>
|
||||||
|
<string name="privacy_policy_subtitle">Aunque la aplicación Mastodon no recoge ningún dato, el servidor al que se registra puede tener una política diferente.\n\nSi no está de acuerdo con la política para %s, puede volver atrás y elegir un servidor diferente.</string>
|
||||||
<string name="i_agree">Acepto</string>
|
<string name="i_agree">Acepto</string>
|
||||||
<string name="empty_list">Esta lista está vacía</string>
|
<string name="empty_list">Esta lista está vacía</string>
|
||||||
<string name="instance_signup_closed">Este servidor no acepta altas nuevas.</string>
|
<string name="instance_signup_closed">Este servidor no acepta altas nuevas.</string>
|
||||||
@@ -379,12 +394,41 @@
|
|||||||
<string name="login_title">Qué bueno verle de nuevo</string>
|
<string name="login_title">Qué bueno verle de nuevo</string>
|
||||||
<string name="login_subtitle">Inicie sesión con el servidor donde creó su cuenta.</string>
|
<string name="login_subtitle">Inicie sesión con el servidor donde creó su cuenta.</string>
|
||||||
<string name="server_url">URL del servidor</string>
|
<string name="server_url">URL del servidor</string>
|
||||||
|
<string name="welcome_page1_title">¿Qué es Mastodon?</string>
|
||||||
<string name="welcome_page1_text">Imagina que tienes una dirección de correo electrónico que termina con @ejemplo.com.\n\nPuedes enviar y recibir correos electrónicos de cualquier persona, incluso si su correo electrónico termina en @gmail.com o @icloud.com o @ejemplo.com.</string>
|
<string name="welcome_page1_text">Imagina que tienes una dirección de correo electrónico que termina con @ejemplo.com.\n\nPuedes enviar y recibir correos electrónicos de cualquier persona, incluso si su correo electrónico termina en @gmail.com o @icloud.com o @ejemplo.com.</string>
|
||||||
<string name="welcome_page2_title">Mastodon es parecido.</string>
|
<string name="welcome_page2_title">Mastodon es parecido.</string>
|
||||||
<string name="welcome_page2_text">Tu cuenta puede ser @gothgirl654@example.social, pero puedes seguir, rebloguear, y chatear con @fallout5ever@example.online.</string>
|
<string name="welcome_page2_text">Tu cuenta puede ser @gothgirl654@example.social, pero puedes seguir, rebloguear, y chatear con @fallout5ever@example.online.</string>
|
||||||
<string name="welcome_page3_title">¿Cómo elijo un servidor?</string>
|
<string name="welcome_page3_title">¿Cómo elijo un servidor?</string>
|
||||||
<string name="welcome_page3_text">Diferentes personas eligen diferentes servidores por diferentes motivos. Por ejemplo, art.example es un buen lugar para artistas, mientras que madrid.example puede ser una buena elección para los madrileños.\n\nNo te equivocarás con ninguno de nuestros servidores recomendados, por lo que independientemente del que escojas (o si introduces tu propio servidor en la barra de búsqueda), no te perderás ni una en ningún lugar.</string>
|
<string name="welcome_page3_text">Diferentes personas eligen diferentes servidores por diferentes motivos. Por ejemplo, art.example es un buen lugar para artistas, mientras que madrid.example puede ser una buena elección para los madrileños.\n\nNo te equivocarás con ninguno de nuestros servidores recomendados, por lo que independientemente del que escojas (o si introduces tu propio servidor en la barra de búsqueda), no te perderás ni una en ningún lugar.</string>
|
||||||
|
<string name="signup_random_server_explain">Seleccionaremos un servidor basado en tu idioma si continúas sin hacer una selección.</string>
|
||||||
|
<string name="server_filter_any_language">Cualquier idioma</string>
|
||||||
|
<string name="server_filter_instant_signup">Registro instantáneo</string>
|
||||||
|
<string name="server_filter_manual_review">Revisión manual</string>
|
||||||
|
<string name="server_filter_any_signup_speed">Cualquier velocidad de registro</string>
|
||||||
|
<string name="server_filter_region_europe">Europa</string>
|
||||||
|
<string name="server_filter_region_north_america">Norteamérica</string>
|
||||||
|
<string name="server_filter_region_south_america">Suramérica</string>
|
||||||
|
<string name="server_filter_region_africa">África</string>
|
||||||
|
<string name="server_filter_region_asia">Asia</string>
|
||||||
|
<string name="server_filter_region_oceania">Oceanía</string>
|
||||||
|
<string name="not_accepting_new_members">No se aceptan nuevos miembros</string>
|
||||||
|
<string name="category_special_interests">Intereses especiales</string>
|
||||||
|
<string name="signup_passwords_dont_match">Las contraseñas no coinciden</string>
|
||||||
|
<string name="pick_server_for_me">Elegir por mí</string>
|
||||||
|
<string name="profile_add_row">Añadir fila</string>
|
||||||
|
<string name="profile_setup">Configuración del perfil</string>
|
||||||
|
<string name="profile_setup_subtitle">Siempre puedes completar esto más tarde en la pestaña Perfil.</string>
|
||||||
|
<string name="profile_setup_explanation">Puedes añadir hasta cuatro campos de perfil para todo lo que quieras. Ubicación, enlaces, pronombres — el cielo es el límite.</string>
|
||||||
|
<string name="popular_on_mastodon">Popular en Mastodon</string>
|
||||||
|
<string name="follow_all">Seguir a todos</string>
|
||||||
|
<string name="server_rules_disagree">En desacuerdo</string>
|
||||||
|
<string name="privacy_policy_explanation">TL;DR: No recogemos o procesamos nada.</string>
|
||||||
<!-- %s is server domain -->
|
<!-- %s is server domain -->
|
||||||
|
<string name="server_policy_disagree">En desacuerdo con %s</string>
|
||||||
|
<string name="profile_bio">Biografía</string>
|
||||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
|
<string name="sending_follows">Siguiendo usuarios…</string>
|
||||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||||
|
<string name="signup_email_domain_blocked">%1$s no permite registros desde %2$s. Prueba uno diferente o <a>elige un servidor diferente</a>.</string>
|
||||||
|
<string name="signup_username_taken">Este nombre de usuario ya existe.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -252,11 +252,15 @@
|
|||||||
<string name="sk_notify_poll_results">Resultado de encuestas</string>
|
<string name="sk_notify_poll_results">Resultado de encuestas</string>
|
||||||
<string name="sk_filtered">Filtrado: %s</string>
|
<string name="sk_filtered">Filtrado: %s</string>
|
||||||
<string name="sk_expand">Ampliar</string>
|
<string name="sk_expand">Ampliar</string>
|
||||||
<string name="sk_collapse">Reducir</string>
|
<string name="sk_collapse">Minimizar</string>
|
||||||
<string name="sk_settings_collapse_long_posts">Acortar publicaciones largas</string>
|
<string name="sk_settings_collapse_long_posts">Minimizar publicaciones largas</string>
|
||||||
<string name="sk_unfinished_attachments">¿Corregir adjuntos\?</string>
|
<string name="sk_unfinished_attachments">¿Corregir adjuntos\?</string>
|
||||||
<string name="sk_unfinished_attachments_message">Algunos adjuntos no han terminado de subirse.</string>
|
<string name="sk_unfinished_attachments_message">Algunos adjuntos no han terminado de subirse.</string>
|
||||||
<string name="sk_settings_prefix_reply_cw_with_re">Añadir \"re:\" a respuestas a Advertencias de Contenido</string>
|
<string name="sk_settings_prefix_reply_cw_with_re">Añadir \"re:\" a respuestas a Advertencias de Contenido</string>
|
||||||
<string name="sk_spectator_mode">Modo espectador</string>
|
<string name="sk_spectator_mode">Modo espectador</string>
|
||||||
<string name="sk_settings_hide_interaction">Ocultar los botones interactivos</string>
|
<string name="sk_settings_hide_interaction">Ocultar los botones de interacción</string>
|
||||||
|
<string name="sk_follow_as">Seguir desde otra cuenta</string>
|
||||||
|
<string name="sk_followed_as">Seguido desde %s</string>
|
||||||
|
<string name="sk_settings_hide_fab">Ocultar automáticamente el botón Redactar</string>
|
||||||
|
<string name="sk_in_reply">Respondiendo a</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
<string name="sk_settings_translation_availability_note_available">%s-k itzulpena onartzen du!</string>
|
<string name="sk_settings_translation_availability_note_available">%s-k itzulpena onartzen du!</string>
|
||||||
<string name="sk_settings_translation_availability_note_unavailable">%s ez da itzulpena onartzen duten instantzien artean ageri.</string>
|
<string name="sk_settings_translation_availability_note_unavailable">%s ez da itzulpena onartzen duten instantzien artean ageri.</string>
|
||||||
<string name="sk_clear_all_notifications">Ezabatu jakinarazpen guztiak</string>
|
<string name="sk_clear_all_notifications">Ezabatu jakinarazpen guztiak</string>
|
||||||
<string name="sk_clear_all_notifications_confirm_action">Ezabatu dena</string>
|
<string name="sk_clear_all_notifications_confirm_action">Ezabatu denak</string>
|
||||||
<string name="sk_clear_all_notifications_confirm">Ziur al zaude jakinarazpen guztiak ezabatu nahi dituzula\?</string>
|
<string name="sk_clear_all_notifications_confirm">Ziur al zaude jakinarazpen guztiak ezabatu nahi dituzula\?</string>
|
||||||
<string name="sk_loading_fediverse_resource_title">Fedibertsoan bilatzen</string>
|
<string name="sk_loading_fediverse_resource_title">Fedibertsoan bilatzen</string>
|
||||||
<string name="sk_undo_reblog">Bultzada desegin</string>
|
<string name="sk_undo_reblog">Bultzada desegin</string>
|
||||||
@@ -146,7 +146,7 @@
|
|||||||
<string name="sk_changelog">Aldaketen zerrenda</string>
|
<string name="sk_changelog">Aldaketen zerrenda</string>
|
||||||
<string name="sk_alt_text_missing">Eranskin batek gutxienez ez du deskribapenik.</string>
|
<string name="sk_alt_text_missing">Eranskin batek gutxienez ez du deskribapenik.</string>
|
||||||
<string name="sk_publish_anyway">Argitaratu hala ere</string>
|
<string name="sk_publish_anyway">Argitaratu hala ere</string>
|
||||||
<string name="sk_settings_disable_alt_text_reminder">Desgaitu testu alternatiboaren jakinarazpena</string>
|
<string name="sk_settings_disable_alt_text_reminder">Desgaitu gogorarazlea testu alternatiboa gehitzeko</string>
|
||||||
<string name="sk_timelines">Denbora-lerroak</string>
|
<string name="sk_timelines">Denbora-lerroak</string>
|
||||||
<string name="sk_timeline_posts">Bidalketak</string>
|
<string name="sk_timeline_posts">Bidalketak</string>
|
||||||
<string name="sk_timelines_add">Gehitu</string>
|
<string name="sk_timelines_add">Gehitu</string>
|
||||||
@@ -218,7 +218,7 @@
|
|||||||
<string name="sk_edit_timelines">Denbora-lerroak editatu</string>
|
<string name="sk_edit_timelines">Denbora-lerroak editatu</string>
|
||||||
<string name="sk_alt_button">ALT</string>
|
<string name="sk_alt_button">ALT</string>
|
||||||
<string name="sk_post_edited">Editatua</string>
|
<string name="sk_post_edited">Editatua</string>
|
||||||
<string name="sk_notification_type_update">Bidalketa editatua</string>
|
<string name="sk_notification_type_update">Editatutako argitalpenak</string>
|
||||||
<string name="sk_notify_update">Bultzatutako bidalketa editatu</string>
|
<string name="sk_notify_update">Bultzatutako bidalketa editatu</string>
|
||||||
<string name="sk_no_results">Emaitzarik ez</string>
|
<string name="sk_no_results">Emaitzarik ez</string>
|
||||||
<string name="sk_save_draft">Zirriborroa gorde\?</string>
|
<string name="sk_save_draft">Zirriborroa gorde\?</string>
|
||||||
@@ -232,4 +232,33 @@
|
|||||||
<string name="sk_alt_text_missing_title">Testu alternatiboa falta da</string>
|
<string name="sk_alt_text_missing_title">Testu alternatiboa falta da</string>
|
||||||
<string name="sk_searching">Bilatzen…</string>
|
<string name="sk_searching">Bilatzen…</string>
|
||||||
<string name="sk_save_draft_message">Zirriborro honetako aldaketak gorde edo argitaratu nahi dituzu\?</string>
|
<string name="sk_save_draft_message">Zirriborro honetako aldaketak gorde edo argitaratu nahi dituzu\?</string>
|
||||||
|
<string name="sk_settings_prefix_reply_cw_with_re">Gehitu \"re:\" hasieran edukiaren abisuen erantzunetan</string>
|
||||||
|
<string name="sk_filtered">Iragazita: %s</string>
|
||||||
|
<string name="sk_expand">Zabaldu</string>
|
||||||
|
<string name="sk_collapse">Itxi</string>
|
||||||
|
<string name="sk_settings_collapse_long_posts">Itxi argitalpen oso luzeak</string>
|
||||||
|
<string name="sk_unfinished_attachments">Finkatu eranskinak\?</string>
|
||||||
|
<string name="sk_unfinished_attachments_message">Eranskin batzuk ez dira igo oraindik.</string>
|
||||||
|
<string name="sk_notify_posts_info_banner">Pertsona batzuen argitalpenen jakinarazpenak gaitzen badituzu, beraien argitalpen berriak hemen ageriko dira.</string>
|
||||||
|
<string name="sk_updater_enable_pre_releases">Gaitu beta bertsioak</string>
|
||||||
|
<string name="sk_inline_direct">aipamenak soilik</string>
|
||||||
|
<string name="sk_separator">·</string>
|
||||||
|
<string name="sk_instance_features">Instantziaren ezaugarriak</string>
|
||||||
|
<string name="sk_settings_local_only_explanation">Zure jatorriko instantziak bertan soilik argitaratzea baimendu behar du hau ibili dadin. Aldatutako Mastodon bertsio askok darabilte, baina Mastodonek ez.</string>
|
||||||
|
<string name="sk_inline_local_only">bertan soilik</string>
|
||||||
|
<string name="sk_settings_support_local_only">Zerbitzariak bertan soilik argitaratzea baimentzen du</string>
|
||||||
|
<string name="sk_settings_glitch_instance">Glitch bertan soilik modua</string>
|
||||||
|
<string name="sk_settings_glitch_mode_explanation">Gaitu hau zure jatorrizko instantziak Glitch badarabil. Ez da beharrezkoa Hometown edo Akkomarako.</string>
|
||||||
|
<string name="sk_signed_up">izena emanda</string>
|
||||||
|
<string name="sk_reported">salatuta</string>
|
||||||
|
<string name="sk_sign_ups">Erabiltzaileen izen-ematea</string>
|
||||||
|
<string name="sk_new_reports">Salaketa berriak</string>
|
||||||
|
<string name="sk_local_only">Bertako instantzia soilik</string>
|
||||||
|
<string name="sk_settings_see_new_posts_button">\"Ikusi argitalpen berriak\" botoia</string>
|
||||||
|
<string name="sk_settings_server_version">Zerbitzariaren bertsioa: %s</string>
|
||||||
|
<string name="sk_notify_poll_results">Bozketaren emaitzak</string>
|
||||||
|
<string name="sk_settings_hide_interaction">Ezkutatu interakzio-botoiak</string>
|
||||||
|
<string name="sk_follow_as">Jarraitu beste kontu batetik</string>
|
||||||
|
<string name="sk_followed_as">%s-(d/t)ik jarraitua</string>
|
||||||
|
<string name="sk_settings_hide_fab">Automatikoki ezkutatu Idatzi botoia</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -175,6 +175,7 @@
|
|||||||
<string name="instance_catalog_subtitle">Choisissez un serveur en fonction de vos intérêts, de votre région ou alors rejoignez un serveur général. Vous pouvez toujours vous connecter avec tout le monde, quel que soit le serveur.</string>
|
<string name="instance_catalog_subtitle">Choisissez un serveur en fonction de vos intérêts, de votre région ou alors rejoignez un serveur général. Vous pouvez toujours vous connecter avec tout le monde, quel que soit le serveur.</string>
|
||||||
<string name="search_communities">Nom ou URL du serveur</string>
|
<string name="search_communities">Nom ou URL du serveur</string>
|
||||||
<string name="instance_rules_title">Règles du serveur</string>
|
<string name="instance_rules_title">Règles du serveur</string>
|
||||||
|
<string name="instance_rules_subtitle">En continuant, vous acceptez de respecter les règles suivantes définies et appliquées par les modérateurs de %s.</string>
|
||||||
<string name="signup_title">Créer un compte</string>
|
<string name="signup_title">Créer un compte</string>
|
||||||
<string name="edit_photo">modifier</string>
|
<string name="edit_photo">modifier</string>
|
||||||
<string name="display_name">Nom</string>
|
<string name="display_name">Nom</string>
|
||||||
@@ -198,6 +199,7 @@
|
|||||||
<string name="category_tech">Technologie</string>
|
<string name="category_tech">Technologie</string>
|
||||||
<string name="confirm_email_title">Consultez votre boîte de réception</string>
|
<string name="confirm_email_title">Consultez votre boîte de réception</string>
|
||||||
<!-- %s is the email address -->
|
<!-- %s is the email address -->
|
||||||
|
<string name="confirm_email_subtitle">Cliquez sur le lien que nous vous avons envoyé pour vérifier %s. Nous vous attendons ici.</string>
|
||||||
<string name="confirm_email_didnt_get">Vous n\'avez pas reçu de lien ?</string>
|
<string name="confirm_email_didnt_get">Vous n\'avez pas reçu de lien ?</string>
|
||||||
<string name="resend">Renvoyer</string>
|
<string name="resend">Renvoyer</string>
|
||||||
<string name="open_email_app">Ouvrir l’application courriel</string>
|
<string name="open_email_app">Ouvrir l’application courriel</string>
|
||||||
@@ -380,6 +382,7 @@
|
|||||||
<string name="download_update">Téléchargement (%s)</string>
|
<string name="download_update">Téléchargement (%s)</string>
|
||||||
<string name="install_update">Installer</string>
|
<string name="install_update">Installer</string>
|
||||||
<string name="privacy_policy_title">Votre Confidentialité</string>
|
<string name="privacy_policy_title">Votre Confidentialité</string>
|
||||||
|
<string name="privacy_policy_subtitle">Bien que l\'application Mastodon ne collecte aucune donnée, le serveur auquel vous vous inscrivez peut avoir une politique différente.\n\nSi vous n\'êtes pas d\'accord avec la politique de %s, vous pouvez revenir en arrière et choisir un serveur différent.</string>
|
||||||
<string name="i_agree">J’accepte</string>
|
<string name="i_agree">J’accepte</string>
|
||||||
<string name="empty_list">Cette liste est vide</string>
|
<string name="empty_list">Cette liste est vide</string>
|
||||||
<string name="instance_signup_closed">Ce serveur n\'accepte pas les nouvelles inscriptions.</string>
|
<string name="instance_signup_closed">Ce serveur n\'accepte pas les nouvelles inscriptions.</string>
|
||||||
@@ -397,9 +400,11 @@
|
|||||||
<string name="welcome_page2_text">Votre identifiant devrait être @gothgirl654@example.social, mais vous pouvez toujours suivre, rebloguer et discuter avec @fallout5ever@example.online.</string>
|
<string name="welcome_page2_text">Votre identifiant devrait être @gothgirl654@example.social, mais vous pouvez toujours suivre, rebloguer et discuter avec @fallout5ever@example.online.</string>
|
||||||
<string name="welcome_page3_title">Comment choisir un serveur?</string>
|
<string name="welcome_page3_title">Comment choisir un serveur?</string>
|
||||||
<string name="welcome_page3_text">Différentes personnes choisissent différents serveurs pour un certain nombre de raisons. art.example est un lieu idéal pour les artistes, tandis que glasgow.example pourrait être un bon choix pour les Écossais.\n\nVous ne pouvez pas vous tromper avec l\'un de nos serveurs recommandés et ainsi, quel que soit celui que vous choisissez (ou si vous entrez le vôtre dans la barre de recherche du serveur), vous ne manquerez jamais une info quelque part.</string>
|
<string name="welcome_page3_text">Différentes personnes choisissent différents serveurs pour un certain nombre de raisons. art.example est un lieu idéal pour les artistes, tandis que glasgow.example pourrait être un bon choix pour les Écossais.\n\nVous ne pouvez pas vous tromper avec l\'un de nos serveurs recommandés et ainsi, quel que soit celui que vous choisissez (ou si vous entrez le vôtre dans la barre de recherche du serveur), vous ne manquerez jamais une info quelque part.</string>
|
||||||
|
<string name="signup_random_server_explain">Nous choisirons un serveur basé sur votre langue si vous continuez sans faire de sélection.</string>
|
||||||
<string name="server_filter_any_language">N\'importe quelle langue</string>
|
<string name="server_filter_any_language">N\'importe quelle langue</string>
|
||||||
<string name="server_filter_instant_signup">Inscription instantanée</string>
|
<string name="server_filter_instant_signup">Inscription instantanée</string>
|
||||||
<string name="server_filter_manual_review">Approbation manuelle</string>
|
<string name="server_filter_manual_review">Approbation manuelle</string>
|
||||||
|
<string name="server_filter_any_signup_speed">Toute vitesse d\'inscription</string>
|
||||||
<string name="server_filter_region_europe">Europe</string>
|
<string name="server_filter_region_europe">Europe</string>
|
||||||
<string name="server_filter_region_north_america">Amérique du Nord</string>
|
<string name="server_filter_region_north_america">Amérique du Nord</string>
|
||||||
<string name="server_filter_region_south_america">Amérique du Sud</string>
|
<string name="server_filter_region_south_america">Amérique du Sud</string>
|
||||||
@@ -412,6 +417,9 @@
|
|||||||
<string name="pick_server_for_me">Choisir pour moi</string>
|
<string name="pick_server_for_me">Choisir pour moi</string>
|
||||||
<string name="profile_add_row">Ajouter une ligne</string>
|
<string name="profile_add_row">Ajouter une ligne</string>
|
||||||
<string name="profile_setup">Configuration du profil</string>
|
<string name="profile_setup">Configuration du profil</string>
|
||||||
|
<string name="profile_setup_subtitle">Vous pourrez toujours compléter cela plus tard dans l\'onglet Profil.</string>
|
||||||
|
<string name="profile_setup_explanation">Vous pouvez ajouter jusqu\'à quatre champs de profil pour tout ce que vous souhaitez. Localisation, liens, surnoms — le ciel est la limite.</string>
|
||||||
|
<string name="popular_on_mastodon">Populaire sur Mastodon</string>
|
||||||
<string name="follow_all">Tout suivre</string>
|
<string name="follow_all">Tout suivre</string>
|
||||||
<string name="server_rules_disagree">Refuser</string>
|
<string name="server_rules_disagree">Refuser</string>
|
||||||
<string name="privacy_policy_explanation">TL;DR : Nous ne collectons ni ne traitons rien.</string>
|
<string name="privacy_policy_explanation">TL;DR : Nous ne collectons ni ne traitons rien.</string>
|
||||||
@@ -419,5 +427,8 @@
|
|||||||
<string name="server_policy_disagree">En désaccord avec %s</string>
|
<string name="server_policy_disagree">En désaccord avec %s</string>
|
||||||
<string name="profile_bio">Biographie</string>
|
<string name="profile_bio">Biographie</string>
|
||||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
|
<string name="sending_follows">Utilisateurs suivants…</string>
|
||||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||||
|
<string name="signup_email_domain_blocked">%1$s n\'autorise pas les inscriptions de %2$s. Essayez-en un autre ou <a>choisissez un autre serveur</a>.</string>
|
||||||
|
<string name="signup_username_taken">Ce nom d\'utilisateur est déjà pris.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -260,4 +260,8 @@
|
|||||||
<string name="sk_unfinished_attachments_message">Certaines pièces jointes n\'ont pas fini de se télécharger.</string>
|
<string name="sk_unfinished_attachments_message">Certaines pièces jointes n\'ont pas fini de se télécharger.</string>
|
||||||
<string name="sk_spectator_mode">Mode spectateur</string>
|
<string name="sk_spectator_mode">Mode spectateur</string>
|
||||||
<string name="sk_settings_hide_interaction">Masquer les boutons d\'interaction</string>
|
<string name="sk_settings_hide_interaction">Masquer les boutons d\'interaction</string>
|
||||||
|
<string name="sk_follow_as">Suivre depuis un autre compte</string>
|
||||||
|
<string name="sk_followed_as">Suivi depuis %s</string>
|
||||||
|
<string name="sk_settings_hide_fab">Masquer automatiquement le bouton Composer</string>
|
||||||
|
<string name="sk_in_reply">En réponse</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -173,7 +173,16 @@
|
|||||||
<string name="back">Volver</string>
|
<string name="back">Volver</string>
|
||||||
<string name="instance_catalog_title">Mastodon fórmano as persoas das diferentes comunidades.</string>
|
<string name="instance_catalog_title">Mastodon fórmano as persoas das diferentes comunidades.</string>
|
||||||
<string name="instance_catalog_subtitle">Elixe unha comunidade en función dos teus intereses, rexión ou de propósito xeral. Poderás conectar con calquera outra usuaria igualmente, independentemente da comunidade que elixas.</string>
|
<string name="instance_catalog_subtitle">Elixe unha comunidade en función dos teus intereses, rexión ou de propósito xeral. Poderás conectar con calquera outra usuaria igualmente, independentemente da comunidade que elixas.</string>
|
||||||
|
<string name="search_communities">Nome do servidor ou URL</string>
|
||||||
|
<string name="instance_rules_title">Regras do servidor</string>
|
||||||
|
<string name="instance_rules_subtitle">Se continúas, aceptas seguir as regras fixadas polas moderadoras de %s.</string>
|
||||||
|
<string name="signup_title">Crear conta</string>
|
||||||
<string name="edit_photo">editar</string>
|
<string name="edit_photo">editar</string>
|
||||||
|
<string name="display_name">Nome</string>
|
||||||
|
<string name="username">Nome de usuaria</string>
|
||||||
|
<string name="email">Email</string>
|
||||||
|
<string name="password">Contrasinal</string>
|
||||||
|
<string name="confirm_password">Confirmar contrasinal</string>
|
||||||
<string name="password_note">Inclúe letras maiúsculas, caracteres especiais e números para aumentar a calidade do contrasinal.</string>
|
<string name="password_note">Inclúe letras maiúsculas, caracteres especiais e números para aumentar a calidade do contrasinal.</string>
|
||||||
<string name="category_academia">Academia</string>
|
<string name="category_academia">Academia</string>
|
||||||
<string name="category_activism">Activismo</string>
|
<string name="category_activism">Activismo</string>
|
||||||
@@ -188,7 +197,10 @@
|
|||||||
<string name="category_music">Música</string>
|
<string name="category_music">Música</string>
|
||||||
<string name="category_regional">Rexional</string>
|
<string name="category_regional">Rexional</string>
|
||||||
<string name="category_tech">Tecnoloxía</string>
|
<string name="category_tech">Tecnoloxía</string>
|
||||||
|
<string name="confirm_email_title">Mira na caixa de correo</string>
|
||||||
<!-- %s is the email address -->
|
<!-- %s is the email address -->
|
||||||
|
<string name="confirm_email_subtitle">Pulsa na ligazón que enviamos para verificar %s. Agardaremos aquí mesmo.</string>
|
||||||
|
<string name="confirm_email_didnt_get">Non recibiches unha ligazón?</string>
|
||||||
<string name="resend">Reenviar</string>
|
<string name="resend">Reenviar</string>
|
||||||
<string name="open_email_app">Abrir app de email</string>
|
<string name="open_email_app">Abrir app de email</string>
|
||||||
<string name="resent_email">Enviado o email de confirmación</string>
|
<string name="resent_email">Enviado o email de confirmación</string>
|
||||||
@@ -276,6 +288,7 @@
|
|||||||
<string name="open_in_browser">Abrir nun navegador</string>
|
<string name="open_in_browser">Abrir nun navegador</string>
|
||||||
<string name="hide_boosts_from_user">Agochar promocións de @%s</string>
|
<string name="hide_boosts_from_user">Agochar promocións de @%s</string>
|
||||||
<string name="show_boosts_from_user">Mostrar promocións de %s</string>
|
<string name="show_boosts_from_user">Mostrar promocións de %s</string>
|
||||||
|
<string name="signup_reason">Por qué queres unirte?</string>
|
||||||
<string name="signup_reason_note">Esto axudaranos a revisar a tua solicitude.</string>
|
<string name="signup_reason_note">Esto axudaranos a revisar a tua solicitude.</string>
|
||||||
<string name="clear">Limpar</string>
|
<string name="clear">Limpar</string>
|
||||||
<string name="profile_header">Imaxe de cabeceira</string>
|
<string name="profile_header">Imaxe de cabeceira</string>
|
||||||
@@ -368,6 +381,8 @@
|
|||||||
<!-- %s is file size -->
|
<!-- %s is file size -->
|
||||||
<string name="download_update">Descargar (%s)</string>
|
<string name="download_update">Descargar (%s)</string>
|
||||||
<string name="install_update">Instalar</string>
|
<string name="install_update">Instalar</string>
|
||||||
|
<string name="privacy_policy_title">A túa privacidade</string>
|
||||||
|
<string name="privacy_policy_subtitle">Aínda que a aplicación de Mastodon non recolle ningún dato, o servidor no que te rexistres pode ter unha política diferente.\n\nSe non estás de acordo coa política de %s, podes volver atrás e elixir outro servidor.</string>
|
||||||
<string name="i_agree">Acepto</string>
|
<string name="i_agree">Acepto</string>
|
||||||
<string name="empty_list">A lista está baleira</string>
|
<string name="empty_list">A lista está baleira</string>
|
||||||
<string name="instance_signup_closed">O servidor non acepta novos rexistros.</string>
|
<string name="instance_signup_closed">O servidor non acepta novos rexistros.</string>
|
||||||
@@ -379,12 +394,41 @@
|
|||||||
<string name="login_title">Benvida outra vez</string>
|
<string name="login_title">Benvida outra vez</string>
|
||||||
<string name="login_subtitle">Accede co servidor onde creaches a conta.</string>
|
<string name="login_subtitle">Accede co servidor onde creaches a conta.</string>
|
||||||
<string name="server_url">URL do servidor</string>
|
<string name="server_url">URL do servidor</string>
|
||||||
|
<string name="welcome_page1_title">Qué é Mastodon?</string>
|
||||||
<string name="welcome_page1_text">Imaxina que tes un enderezo de email que remata con @exemplo.com.\n\nPodes recibir e enviar mensaxes con calquera persoa, incluso se o seu email remata en @gmail.com ou @icloud.com ou @exemplo.com.</string>
|
<string name="welcome_page1_text">Imaxina que tes un enderezo de email que remata con @exemplo.com.\n\nPodes recibir e enviar mensaxes con calquera persoa, incluso se o seu email remata en @gmail.com ou @icloud.com ou @exemplo.com.</string>
|
||||||
<string name="welcome_page2_title">Mastodon é o mesmo.</string>
|
<string name="welcome_page2_title">Mastodon é o mesmo.</string>
|
||||||
<string name="welcome_page2_text">O teu identificador pode ser @rula654@exemplo.social, pero podes seguir, promover e conversar con @gz4libre@exemplo.online.</string>
|
<string name="welcome_page2_text">O teu identificador pode ser @rula654@exemplo.social, pero podes seguir, promover e conversar con @gz4libre@exemplo.online.</string>
|
||||||
<string name="welcome_page3_title">Como elexir un servidor?</string>
|
<string name="welcome_page3_title">Como elexir un servidor?</string>
|
||||||
<string name="welcome_page3_text">Pode haber moitas razóns para elexir un servidor. art.exemplo é un bo lugar para artistas, mentras glasgow.exemplo podería ser axeitado para persoas escocesas.\n\nNon terás problemas con calquera dos servidores recomendados, así que independentemente do que elixas (ou se escribes o teu propio na caixa de busca) non botarás nada en falta.</string>
|
<string name="welcome_page3_text">Pode haber moitas razóns para elexir un servidor. art.exemplo é un bo lugar para artistas, mentras glasgow.exemplo podería ser axeitado para persoas escocesas.\n\nNon terás problemas con calquera dos servidores recomendados, así que independentemente do que elixas (ou se escribes o teu propio na caixa de busca) non botarás nada en falta.</string>
|
||||||
|
<string name="signup_random_server_explain">Elixiremos un servidor no teu idioma se segues sen seleccionar nada.</string>
|
||||||
|
<string name="server_filter_any_language">Calquer idioma</string>
|
||||||
|
<string name="server_filter_instant_signup">Rexistro Instantáneo</string>
|
||||||
|
<string name="server_filter_manual_review">Revisión manual</string>
|
||||||
|
<string name="server_filter_any_signup_speed">Rapidez no rexistro</string>
|
||||||
|
<string name="server_filter_region_europe">Europa</string>
|
||||||
|
<string name="server_filter_region_north_america">América do Norte</string>
|
||||||
|
<string name="server_filter_region_south_america">América do Sur</string>
|
||||||
|
<string name="server_filter_region_africa">África</string>
|
||||||
|
<string name="server_filter_region_asia">Asia</string>
|
||||||
|
<string name="server_filter_region_oceania">Oceanía</string>
|
||||||
|
<string name="not_accepting_new_members">Non se aceptan novas usuarias</string>
|
||||||
|
<string name="category_special_interests">Intereses Especiais</string>
|
||||||
|
<string name="signup_passwords_dont_match">Os contrasinais non coinciden</string>
|
||||||
|
<string name="pick_server_for_me">Elixe por min</string>
|
||||||
|
<string name="profile_add_row">Engadir fila</string>
|
||||||
|
<string name="profile_setup">Configuración do perfil</string>
|
||||||
|
<string name="profile_setup_subtitle">Sempre podes completar isto máis tarde na lapela de Perfil.</string>
|
||||||
|
<string name="profile_setup_explanation">Podes engadir ata catro campos de perfil para calquera cousa que queras. Ubicación, ligazóns, pronomes — o límite é a túa imaxinación.</string>
|
||||||
|
<string name="popular_on_mastodon">Popular en Mastodon</string>
|
||||||
|
<string name="follow_all">Seguir a todas</string>
|
||||||
|
<string name="server_rules_disagree">Non aceptar</string>
|
||||||
|
<string name="privacy_policy_explanation">Resumo: non recollemos nin procesamos nada.</string>
|
||||||
<!-- %s is server domain -->
|
<!-- %s is server domain -->
|
||||||
|
<string name="server_policy_disagree">Rexeitar %s</string>
|
||||||
|
<string name="profile_bio">Biografía</string>
|
||||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
|
<string name="sending_follows">Seguindo usuarias…</string>
|
||||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||||
|
<string name="signup_email_domain_blocked">%1$s non acepta rexistros desde %2$s. Proba outro ou <a>elixe outro servidor</a>.</string>
|
||||||
|
<string name="signup_username_taken">Este nome de usuaria xa está en uso.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -259,4 +259,8 @@
|
|||||||
<string name="sk_unfinished_attachments">Arranxar arquivos adxuntos\?</string>
|
<string name="sk_unfinished_attachments">Arranxar arquivos adxuntos\?</string>
|
||||||
<string name="sk_spectator_mode">Modo espectador</string>
|
<string name="sk_spectator_mode">Modo espectador</string>
|
||||||
<string name="sk_settings_hide_interaction">Ocultar botóns de interacción</string>
|
<string name="sk_settings_hide_interaction">Ocultar botóns de interacción</string>
|
||||||
|
<string name="sk_follow_as">Seguir dende outra conta</string>
|
||||||
|
<string name="sk_followed_as">Seguida dende %s</string>
|
||||||
|
<string name="sk_settings_hide_fab">Auto-ocultar botón de redacción</string>
|
||||||
|
<string name="sk_in_reply">Respondendo</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -252,4 +252,16 @@
|
|||||||
<string name="sk_settings_support_local_only">Server hanya mendukung pengiriman hanya lokal</string>
|
<string name="sk_settings_support_local_only">Server hanya mendukung pengiriman hanya lokal</string>
|
||||||
<string name="sk_settings_server_version">Versi server: %s</string>
|
<string name="sk_settings_server_version">Versi server: %s</string>
|
||||||
<string name="sk_notify_poll_results">Hasil japat</string>
|
<string name="sk_notify_poll_results">Hasil japat</string>
|
||||||
|
<string name="sk_filtered">Disaring: %s</string>
|
||||||
|
<string name="sk_expand">Buka</string>
|
||||||
|
<string name="sk_collapse">Tutup</string>
|
||||||
|
<string name="sk_settings_hide_interaction">Sembunyikan tombol interaksi</string>
|
||||||
|
<string name="sk_follow_as">Ikuti dari akun lain</string>
|
||||||
|
<string name="sk_followed_as">Diikuti dari %s</string>
|
||||||
|
<string name="sk_settings_prefix_reply_cw_with_re">Awali peringatan konten balasan dengan “re:”</string>
|
||||||
|
<string name="sk_settings_collapse_long_posts">Tutup kiriman yang sangat panjang</string>
|
||||||
|
<string name="sk_unfinished_attachments">Perbaiki lampiran\?</string>
|
||||||
|
<string name="sk_unfinished_attachments_message">Beberapa lampiran belum selesai diunggah.</string>
|
||||||
|
<string name="sk_settings_hide_fab">Sembunyikan tombol Komposer</string>
|
||||||
|
<string name="sk_in_reply">Dalam balasan</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -53,58 +53,58 @@
|
|||||||
<string name="sk_post_language">Lingua: %s</string>
|
<string name="sk_post_language">Lingua: %s</string>
|
||||||
<string name="sk_language_name">%s (%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_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_clear_recent_languages">Cancella le lingue usate di recente</string>
|
||||||
<string name="sk_welcome_title">Benvenuto!</string>
|
<string name="sk_welcome_title">Benvenuto!</string>
|
||||||
<string name="sk_example_domain">example.social</string>
|
<string name="sk_example_domain">example.social</string>
|
||||||
<string name="sk_poll_allow_multiple">Consenti scelte multiple</string>
|
<string name="sk_poll_allow_multiple">Consenti scelte multiple</string>
|
||||||
<string name="sk_available_languages">Lingue disponibili</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_welcome_text">Lo squalo ti saluta! Per iniziare inserisci qui sotto l\'indirizzo dell\'istanza a cui sei iscritto.</string>
|
||||||
<string name="sk_color_palette_material3">Sistema</string>
|
<string name="sk_color_palette_material3">Sistema</string>
|
||||||
<string name="sk_timeline_local">Locale</string>
|
<string name="sk_timeline_local">Locale</string>
|
||||||
<string name="sk_timeline_federated">Federata</string>
|
<string name="sk_timeline_federated">Federata</string>
|
||||||
<string name="sk_bookmark_as">Salva con un altro account</string>
|
<string name="sk_bookmark_as">Aggiungi ai segnalibri con un altro account</string>
|
||||||
<string name="sk_bookmarked_as">Salvato come %s</string>
|
<string name="sk_bookmarked_as">Salvato come %s</string>
|
||||||
<string name="sk_favorite_as">Inserisci tra i preferiti con un altro account</string>
|
<string name="sk_favorite_as">Aggiungi ai preferiti con un altro account</string>
|
||||||
<string name="sk_favorited_as">Inserito tra i preferiti come %s</string>
|
<string name="sk_favorited_as">Inserito tra i preferiti come %s</string>
|
||||||
<string name="sk_already_favorited">Già tra i preferiti</string>
|
<string name="sk_already_favorited">Già aggiunto ai preferiti</string>
|
||||||
<string name="sk_reblog_as">Condividi con un altro account</string>
|
<string name="sk_reblog_as">Condividi con un altro account</string>
|
||||||
<string name="sk_already_reblogged">Condivisione già eseguita</string>
|
<string name="sk_already_reblogged">Già condiviso</string>
|
||||||
<string name="sk_settings_profile">Imposta il profilo</string>
|
<string name="sk_settings_profile">Impostazioni del profilo</string>
|
||||||
<string name="sk_settings_posting">Preferenze dei post</string>
|
<string name="sk_settings_posting">Preferenze di pubblicazione</string>
|
||||||
<string name="sk_settings_filters">Configura filtri</string>
|
<string name="sk_settings_filters">Configura i filtri</string>
|
||||||
<string name="sk_settings_rules">Regole</string>
|
<string name="sk_settings_rules">Regole</string>
|
||||||
<string name="sk_settings_about">Riguardo all\'app</string>
|
<string name="sk_settings_about">Informazioni sull\'app</string>
|
||||||
<string name="sk_settings_donate">Dona</string>
|
<string name="sk_settings_donate">Dona</string>
|
||||||
<string name="sk_delete_notification_confirm_action">Elimina notifica</string>
|
<string name="sk_delete_notification_confirm_action">Elimina la notifica</string>
|
||||||
<string name="sk_enable_delete_notifications">Abilita l\'eliminazione delle notifiche</string>
|
<string name="sk_enable_delete_notifications">Abilita la cancellazione delle notifiche</string>
|
||||||
<string name="sk_settings_publish_button_text">Testo del pulsante Pubblica</string>
|
<string name="sk_settings_publish_button_text">Testo del pulsante Pubblica</string>
|
||||||
<string name="sk_settings_publish_button_text_title">Personalizza il testo del pulsante Pubblica</string>
|
<string name="sk_settings_publish_button_text_title">Personalizza il testo del pulsante Pubblica</string>
|
||||||
<string name="sk_settings_translation_availability_note_available">%s supporta la traduzione!</string>
|
<string name="sk_settings_translation_availability_note_available">%s supporta la traduzione!</string>
|
||||||
<string name="sk_settings_translation_availability_note_unavailable">Sembra che %s non supporti la traduzione.</string>
|
<string name="sk_settings_translation_availability_note_unavailable">%s non sembra supportare la traduzione.</string>
|
||||||
<string name="sk_clear_all_notifications">Elimina tutte le notifiche</string>
|
<string name="sk_clear_all_notifications">Cancella tutte le notifiche</string>
|
||||||
<string name="sk_clear_all_notifications_confirm_action">Elimina tutto</string>
|
<string name="sk_clear_all_notifications_confirm_action">Cancella tutto</string>
|
||||||
<string name="sk_clear_all_notifications_confirm">Sei sicuro di volere eliminare tutte le notifiche\?</string>
|
<string name="sk_clear_all_notifications_confirm">Sei sicuro di voler eliminare tutte le notifiche\?</string>
|
||||||
<string name="sk_loading_fediverse_resource_title">Cercando nel Fediverso</string>
|
<string name="sk_loading_fediverse_resource_title">Cercando nel Fediverso</string>
|
||||||
<string name="sk_quote_post">Crea un post riguardo a questo</string>
|
<string name="sk_quote_post">Crea un post riguardo a questo</string>
|
||||||
<string name="sk_undo_reblog">Annulla la condivisione</string>
|
<string name="sk_undo_reblog">Annulla la condivisione</string>
|
||||||
<string name="sk_reblog_with_visibility">Condividi con visibilità</string>
|
<string name="sk_reblog_with_visibility">Reblog con visibilità</string>
|
||||||
<string name="sk_copy_link_to_post">Copia il link del post</string>
|
<string name="sk_copy_link_to_post">Copia il link al post</string>
|
||||||
<string name="sk_open_with_account">Apri con un altro account</string>
|
<string name="sk_open_with_account">Apri con un altro account</string>
|
||||||
<string name="sk_resource_not_found">La risorsa non può essere trovata</string>
|
<string name="sk_resource_not_found">Non è stato possibile trovare la risorsa</string>
|
||||||
<string name="sk_draft">Bozza</string>
|
<string name="sk_draft">Bozza</string>
|
||||||
<string name="sk_schedule">Programma</string>
|
<string name="sk_schedule">Programma</string>
|
||||||
<string name="sk_confirm_delete_draft_title">Elimina bozza</string>
|
<string name="sk_confirm_delete_draft_title">Elimina bozza</string>
|
||||||
<string name="sk_draft_or_schedule">Bozza o programma</string>
|
<string name="sk_draft_or_schedule">Salva nelle bozze o programma</string>
|
||||||
<string name="sk_compose_scheduled">Programmato per</string>
|
<string name="sk_compose_scheduled">Programmato per</string>
|
||||||
<string name="sk_draft_saved">Bozza salvata</string>
|
<string name="sk_draft_saved">Bozza salvata</string>
|
||||||
<string name="sk_forward_report_to">Inoltra a %s</string>
|
<string name="sk_forward_report_to">Inoltra a %s</string>
|
||||||
<string name="sk_confirm_delete_scheduled_post_title">Elimina post programmato</string>
|
<string name="sk_confirm_delete_scheduled_post_title">Elimina post programmato</string>
|
||||||
<string name="sk_confirm_delete_scheduled_post">Sei sicuro di volere eliminare questo post programmato\?</string>
|
<string name="sk_confirm_delete_scheduled_post">Sei sicuro di voler eliminare questo post programmato\?</string>
|
||||||
<string name="sk_compose_draft">Il post verrà salvato come bozza.</string>
|
<string name="sk_compose_draft">Il post verrà salvato come bozza.</string>
|
||||||
<string name="sk_post_scheduled">Post programmato</string>
|
<string name="sk_post_scheduled">Post programmato</string>
|
||||||
<string name="sk_scheduled_too_soon_title">L\'orario programmato è troppo presto</string>
|
<string name="sk_scheduled_too_soon_title">L\'orario programmato è troppo presto</string>
|
||||||
<string name="sk_mark_as_draft">Segna come bozza</string>
|
<string name="sk_mark_as_draft">Segna come bozza</string>
|
||||||
<string name="sk_schedule_post">Programma post</string>
|
<string name="sk_schedule_post">Programma il post</string>
|
||||||
<string name="sk_compose_no_schedule">Non programmare</string>
|
<string name="sk_compose_no_schedule">Non programmare</string>
|
||||||
<string name="sk_compose_no_draft">Non tenere in bozza</string>
|
<string name="sk_compose_no_draft">Non tenere in bozza</string>
|
||||||
<string name="sk_announcements">Annunci</string>
|
<string name="sk_announcements">Annunci</string>
|
||||||
@@ -123,25 +123,25 @@
|
|||||||
<string name="sk_reply_as">Rispondi con un altro account</string>
|
<string name="sk_reply_as">Rispondi con un altro account</string>
|
||||||
<string name="sk_settings_uniform_icon_for_notifications">Icona uniforme per tutte le notifiche</string>
|
<string name="sk_settings_uniform_icon_for_notifications">Icona uniforme per tutte le notifiche</string>
|
||||||
<string name="sk_color_palette_red">Rosso</string>
|
<string name="sk_color_palette_red">Rosso</string>
|
||||||
<string name="sk_tabs_disable_swipe">Disabilita lo scorrimento tra schede</string>
|
<string name="sk_tabs_disable_swipe">Disabilita lo scorrimento tra le schede</string>
|
||||||
<string name="sk_settings_auth">Impostazioni della sicurezza</string>
|
<string name="sk_settings_auth">Impostazioni di sicurezza</string>
|
||||||
<string name="sk_delete_notification">Elimina notifica</string>
|
<string name="sk_delete_notification">Elimina la notifica</string>
|
||||||
<string name="sk_delete_notification_confirm">Sei sicuro di volere eliminare questa notifica\?</string>
|
<string name="sk_delete_notification_confirm">Sei sicuro di voler eliminare questa notifica\?</string>
|
||||||
<string name="sk_settings_translate_only_opened">Traduci solamente i post aperti</string>
|
<string name="sk_settings_translate_only_opened">Traduci solo i post aperti</string>
|
||||||
<string name="sk_loading_resource_on_instance_title">Cercando in %s</string>
|
<string name="sk_loading_resource_on_instance_title">Cercando su %s</string>
|
||||||
<string name="sk_hashtags_you_follow">Hashtags che segui</string>
|
<string name="sk_hashtags_you_follow">Hashtag che segui</string>
|
||||||
<string name="sk_already_bookmarked">Già salvato</string>
|
<string name="sk_already_bookmarked">Già aggiunto ai segnalibri</string>
|
||||||
<string name="sk_reblogged_as">Condivisione eseguita come %s</string>
|
<string name="sk_reblogged_as">Condivisione eseguita come %s</string>
|
||||||
<string name="sk_unsent_posts">Post annullati</string>
|
<string name="sk_unsent_posts">Post non pubblicati</string>
|
||||||
<string name="sk_confirm_save_draft">Salva bozza\?</string>
|
<string name="sk_confirm_save_draft">Salvare la bozza\?</string>
|
||||||
<string name="sk_confirm_save_changes">Salva le modifiche\?</string>
|
<string name="sk_confirm_save_changes">Salvare le modifiche\?</string>
|
||||||
<string name="sk_schedule_or_draft">Programma o bozza</string>
|
<string name="sk_schedule_or_draft">Programma o bozza</string>
|
||||||
<string name="sk_settings_reduce_motion">Riduci il movimento delle animazioni</string>
|
<string name="sk_settings_reduce_motion">Riduci il movimento delle animazioni</string>
|
||||||
<string name="sk_settings_about_instance">Riguardo all\'istanza</string>
|
<string name="sk_settings_about_instance">Riguardo all\'istanza</string>
|
||||||
<string name="sk_delete_list_confirm">Sei sicuro di volere eliminare la lista \"%s\"\?</string>
|
<string name="sk_delete_list_confirm">Sei sicuro di volere eliminare la lista \"%s\"\?</string>
|
||||||
<string name="sk_timeline_home">Home</string>
|
<string name="sk_timeline_home">Home</string>
|
||||||
<string name="sk_confirm_delete_draft">Sei sicuro di volere eliminare questo post in bozza\?</string>
|
<string name="sk_confirm_delete_draft">Sei sicuro di voler cancellare questa bozza\?</string>
|
||||||
<string name="sk_scheduled_too_soon">I post devono essere programmati almeno tra 10 minuti.</string>
|
<string name="sk_scheduled_too_soon">Il post deve essere programmato almeno 10 minuti prima.</string>
|
||||||
<string name="sk_recent_searches_placeholder">Scrivi per iniziare a cercare</string>
|
<string name="sk_recent_searches_placeholder">Scrivi per iniziare a cercare</string>
|
||||||
<string name="sk_remove_follower">Rimuovi come follower</string>
|
<string name="sk_remove_follower">Rimuovi come follower</string>
|
||||||
<string name="sk_remove_follower_confirm">Rimuovi %s come follower bloccandolo e sboccandolo immediatamente\?</string>
|
<string name="sk_remove_follower_confirm">Rimuovi %s come follower bloccandolo e sboccandolo immediatamente\?</string>
|
||||||
@@ -250,4 +250,15 @@
|
|||||||
<string name="sk_settings_see_new_posts_button">Pulsante \"Mostra nuovi post\"</string>
|
<string name="sk_settings_see_new_posts_button">Pulsante \"Mostra nuovi post\"</string>
|
||||||
<string name="sk_settings_server_version">Versione server:%s</string>
|
<string name="sk_settings_server_version">Versione server:%s</string>
|
||||||
<string name="sk_notify_poll_results">Risultati del sondaggio</string>
|
<string name="sk_notify_poll_results">Risultati del sondaggio</string>
|
||||||
|
<string name="sk_settings_prefix_reply_cw_with_re">Aggiungi \"re:\" prima dei CW</string>
|
||||||
|
<string name="sk_filtered">Filtrato: %s</string>
|
||||||
|
<string name="sk_expand">Espandi</string>
|
||||||
|
<string name="sk_collapse">Chiudi</string>
|
||||||
|
<string name="sk_settings_collapse_long_posts">Comprimi post molto lunghi</string>
|
||||||
|
<string name="sk_unfinished_attachments">Correggi gli allegati\?</string>
|
||||||
|
<string name="sk_unfinished_attachments_message">Alcuni allegati non hanno finito l\'upload.</string>
|
||||||
|
<string name="sk_settings_hide_interaction">Nascondi i pulsanti di interazione</string>
|
||||||
|
<string name="sk_follow_as">Segui con un altro account</string>
|
||||||
|
<string name="sk_followed_as">Seguito con %s</string>
|
||||||
|
<string name="sk_settings_hide_fab">Nascondi automaticamente il pulsante Pubblica</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -1,8 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
<string name="get_started">アカウントを作成</string>
|
||||||
|
<string name="already_have_account">ログイン</string>
|
||||||
<string name="log_in">ログイン</string>
|
<string name="log_in">ログイン</string>
|
||||||
<string name="next">次へ</string>
|
<string name="next">次へ</string>
|
||||||
|
<string name="loading_instance">サーバー情報を取得しています…</string>
|
||||||
<string name="error">エラー</string>
|
<string name="error">エラー</string>
|
||||||
|
<string name="not_a_mastodon_instance">%s はMastodonサーバーではありません。</string>
|
||||||
<string name="ok">OK</string>
|
<string name="ok">OK</string>
|
||||||
<string name="preparing_auth">認証を開始中…</string>
|
<string name="preparing_auth">認証を開始中…</string>
|
||||||
<string name="finishing_auth">認証を完了中…</string>
|
<string name="finishing_auth">認証を完了中…</string>
|
||||||
@@ -155,7 +159,16 @@
|
|||||||
<string name="back">戻る</string>
|
<string name="back">戻る</string>
|
||||||
<string name="instance_catalog_title">Mastodonはさまざまなコミュニティによって作られています</string>
|
<string name="instance_catalog_title">Mastodonはさまざまなコミュニティによって作られています</string>
|
||||||
<string name="instance_catalog_subtitle">あなたの趣味</string>
|
<string name="instance_catalog_subtitle">あなたの趣味</string>
|
||||||
|
<string name="search_communities">サーバー名またはURL</string>
|
||||||
|
<string name="instance_rules_title">サーバーのルール</string>
|
||||||
|
<string name="instance_rules_subtitle">%s のモデレーターは次のルールを定めています。これに従うことに同意する場合は続行してください。</string>
|
||||||
|
<string name="signup_title">アカウントを作成</string>
|
||||||
<string name="edit_photo">編集</string>
|
<string name="edit_photo">編集</string>
|
||||||
|
<string name="display_name">名前</string>
|
||||||
|
<string name="username">ユーザー名</string>
|
||||||
|
<string name="email">メールアドレス</string>
|
||||||
|
<string name="password">パスワード</string>
|
||||||
|
<string name="confirm_password">パスワード(確認用)</string>
|
||||||
<string name="password_note">パスワードの強度を高めるため、英大文字・数字・特殊文字を含めてください。</string>
|
<string name="password_note">パスワードの強度を高めるため、英大文字・数字・特殊文字を含めてください。</string>
|
||||||
<string name="category_academia">アカデミア</string>
|
<string name="category_academia">アカデミア</string>
|
||||||
<string name="category_activism">アクティビズム</string>
|
<string name="category_activism">アクティビズム</string>
|
||||||
@@ -170,7 +183,10 @@
|
|||||||
<string name="category_music">ミュージック</string>
|
<string name="category_music">ミュージック</string>
|
||||||
<string name="category_regional">地域</string>
|
<string name="category_regional">地域</string>
|
||||||
<string name="category_tech">技術</string>
|
<string name="category_tech">技術</string>
|
||||||
|
<string name="confirm_email_title">確認のメールを送信しました</string>
|
||||||
<!-- %s is the email address -->
|
<!-- %s is the email address -->
|
||||||
|
<string name="confirm_email_subtitle">%s を認証するためのリンクをメールで送信しました。リンクをタップしてメールアドレスを認証してください。</string>
|
||||||
|
<string name="confirm_email_didnt_get">メールが届かない場合</string>
|
||||||
<string name="resend">再送信</string>
|
<string name="resend">再送信</string>
|
||||||
<string name="open_email_app">メールアプリを開く</string>
|
<string name="open_email_app">メールアプリを開く</string>
|
||||||
<string name="resent_email">確認メールを再送信しました</string>
|
<string name="resent_email">確認メールを再送信しました</string>
|
||||||
@@ -257,6 +273,7 @@
|
|||||||
<string name="open_in_browser">ブラウザで開く</string>
|
<string name="open_in_browser">ブラウザで開く</string>
|
||||||
<string name="hide_boosts_from_user">%sさんのブーストを非表示</string>
|
<string name="hide_boosts_from_user">%sさんのブーストを非表示</string>
|
||||||
<string name="show_boosts_from_user">%sさんのブーストを表示</string>
|
<string name="show_boosts_from_user">%sさんのブーストを表示</string>
|
||||||
|
<string name="signup_reason">参加したい理由を入力してください</string>
|
||||||
<string name="signup_reason_note">申請を承認する際に役立つメッセージを添えてください.</string>
|
<string name="signup_reason_note">申請を承認する際に役立つメッセージを添えてください.</string>
|
||||||
<string name="clear">クリア</string>
|
<string name="clear">クリア</string>
|
||||||
<string name="profile_header">ヘッダー画像</string>
|
<string name="profile_header">ヘッダー画像</string>
|
||||||
@@ -343,6 +360,8 @@
|
|||||||
<!-- %s is file size -->
|
<!-- %s is file size -->
|
||||||
<string name="download_update">ダウンロード (%s)</string>
|
<string name="download_update">ダウンロード (%s)</string>
|
||||||
<string name="install_update">インストール</string>
|
<string name="install_update">インストール</string>
|
||||||
|
<string name="privacy_policy_title">プライバシーポリシー</string>
|
||||||
|
<string name="privacy_policy_subtitle">Mastodonアプリはデータを収集しません。一方で、登録するサーバーはそれぞれが異なるポリシーを掲げていることがあります。\n\n %s のポリシーに同意できない場合は、戻って別のサーバーを選択できます。</string>
|
||||||
<string name="i_agree">同意する</string>
|
<string name="i_agree">同意する</string>
|
||||||
<string name="empty_list">このリストは空です。</string>
|
<string name="empty_list">このリストは空です。</string>
|
||||||
<string name="instance_signup_closed">このサーバーは新規登録を受け付けていません。</string>
|
<string name="instance_signup_closed">このサーバーは新規登録を受け付けていません。</string>
|
||||||
@@ -351,7 +370,44 @@
|
|||||||
<string name="remove_bookmark">ブックマークから削除</string>
|
<string name="remove_bookmark">ブックマークから削除</string>
|
||||||
<string name="bookmarks">ブックマーク</string>
|
<string name="bookmarks">ブックマーク</string>
|
||||||
<string name="your_favorites">お気に入り</string>
|
<string name="your_favorites">お気に入り</string>
|
||||||
|
<string name="login_title">アカウントでログイン</string>
|
||||||
|
<string name="login_subtitle">アカウントのあるサーバーのURLを入力してください。</string>
|
||||||
|
<string name="server_url">サーバーのURL</string>
|
||||||
|
<string name="welcome_page1_title">Mastodonとは</string>
|
||||||
|
<string name="welcome_page1_text">Mastodonのしくみは電子メールとよく似ています。\n\n電子メールは ○○@example.com のようなメールアドレスを持っていれば、 □□@gmail.com や △△@icloud.com はもちろん、同じプロバイダの ◇◇@example.com など、どんな相手にもメールを送れます。</string>
|
||||||
|
<string name="welcome_page2_title">サーバーからサーバーへ</string>
|
||||||
|
<string name="welcome_page2_text">電子メールと同様に、@gothgirl654@example.social というMastodonアカウントがあれば、ほかのサーバーの @fallout5ever@example.online をフォローして投稿をブーストしたり、メンションを送ることができます。</string>
|
||||||
|
<string name="welcome_page3_title">サーバーをさがしてみよう</string>
|
||||||
|
<string name="welcome_page3_text">サーバーの選びかたは十人十色です。アーティスト同士が集まるサーバーもあれば、とある鉄道の沿線住民が集うサーバーもあります。\n\nアカウント作成に進むと、検索バーとおすすめのサーバーが表示されます。参加したいサーバーが決まっていない場合は、おすすめから選んでみましょう。どのサーバーを選んでも、どこの誰とでもつながれます。</string>
|
||||||
|
<string name="signup_random_server_explain">利用中の言語に基づいてサーバーを自動選択することもできます。</string>
|
||||||
|
<string name="server_filter_any_language">すべての言語</string>
|
||||||
|
<string name="server_filter_instant_signup">開放</string>
|
||||||
|
<string name="server_filter_manual_review">承認制</string>
|
||||||
|
<string name="server_filter_any_signup_speed">登録方法(指定しない)</string>
|
||||||
|
<string name="server_filter_region_europe">ヨーロッパ</string>
|
||||||
|
<string name="server_filter_region_north_america">北アメリカ</string>
|
||||||
|
<string name="server_filter_region_south_america">南アメリカ</string>
|
||||||
|
<string name="server_filter_region_africa">アフリカ</string>
|
||||||
|
<string name="server_filter_region_asia">アジア</string>
|
||||||
|
<string name="server_filter_region_oceania">オセアニア</string>
|
||||||
|
<string name="not_accepting_new_members">新規登録を受け付けていません</string>
|
||||||
|
<string name="category_special_interests">テーマ別</string>
|
||||||
|
<string name="signup_passwords_dont_match">パスワードが一致していません</string>
|
||||||
|
<string name="pick_server_for_me">おまかせ</string>
|
||||||
|
<string name="profile_add_row">フィールドを追加</string>
|
||||||
|
<string name="profile_setup">プロフィールの設定</string>
|
||||||
|
<string name="profile_setup_subtitle">プロフィール画面であとから設定することもできます。</string>
|
||||||
|
<string name="profile_setup_explanation">プロフィールには4つまでフィールドを追加できます。現在地やwebサイト、座右の銘など、なんでも自由に書いてみましょう。</string>
|
||||||
|
<string name="popular_on_mastodon">人気のアカウント</string>
|
||||||
|
<string name="follow_all">すべてフォローする</string>
|
||||||
|
<string name="server_rules_disagree">同意しない</string>
|
||||||
|
<string name="privacy_policy_explanation">※: 私たちはいかなる個人情報も収集しません。</string>
|
||||||
<!-- %s is server domain -->
|
<!-- %s is server domain -->
|
||||||
|
<string name="server_policy_disagree">%s のポリシーに同意しない</string>
|
||||||
|
<string name="profile_bio">自己紹介</string>
|
||||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
|
<string name="sending_follows">フォロー中…</string>
|
||||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||||
|
<string name="signup_email_domain_blocked">%1$s では %2$s のメールアドレスでの登録が許可されていません。別のメールアドレスを使うか、<a>ほかのサーバーを選択</a>してください。</string>
|
||||||
|
<string name="signup_username_taken">このユーザー名はすでに使用されています。</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -167,6 +167,11 @@
|
|||||||
<string name="report_personal_subtitle">Mi ara twaliḍ kra ur ak•am-neɛǧib ara ɣef Mastodon, tzemreḍ ad tekkseḍ amdan-nni seg tirmit-ik•im.</string>
|
<string name="report_personal_subtitle">Mi ara twaliḍ kra ur ak•am-neɛǧib ara ɣef Mastodon, tzemreḍ ad tekkseḍ amdan-nni seg tirmit-ik•im.</string>
|
||||||
<string name="back">Tuɣalin</string>
|
<string name="back">Tuɣalin</string>
|
||||||
<string name="edit_photo">ẓreg</string>
|
<string name="edit_photo">ẓreg</string>
|
||||||
|
<string name="display_name">Isem</string>
|
||||||
|
<string name="username">Isem n useqdac</string>
|
||||||
|
<string name="email">Imayl</string>
|
||||||
|
<string name="password">Awal uffir</string>
|
||||||
|
<string name="confirm_password">Sentem awal uffir</string>
|
||||||
<string name="password_note">Seddu isekkilen imeqqranen, isekkilen imaẓlayen d wuṭṭunen i useǧhed ugar n wawal-ik•im uffir.</string>
|
<string name="password_note">Seddu isekkilen imeqqranen, isekkilen imaẓlayen d wuṭṭunen i useǧhed ugar n wawal-ik•im uffir.</string>
|
||||||
<string name="category_academia">Akadimi</string>
|
<string name="category_academia">Akadimi</string>
|
||||||
<string name="category_activism">Tinuɣmest</string>
|
<string name="category_activism">Tinuɣmest</string>
|
||||||
@@ -309,6 +314,13 @@
|
|||||||
<string name="install_update">Sbedd</string>
|
<string name="install_update">Sbedd</string>
|
||||||
<string name="add_bookmark">Creḍ</string>
|
<string name="add_bookmark">Creḍ</string>
|
||||||
<string name="your_favorites">Imenyifen-ik·im</string>
|
<string name="your_favorites">Imenyifen-ik·im</string>
|
||||||
|
<string name="login_title">Ansuf yess·ek·em</string>
|
||||||
|
<string name="welcome_page1_title">D acu-t Maṣṭudun?</string>
|
||||||
|
<string name="server_filter_any_language">Yal tutlayt</string>
|
||||||
|
<string name="server_filter_region_europe">Turuft</string>
|
||||||
|
<string name="server_filter_region_africa">Tafriqt</string>
|
||||||
|
<string name="server_filter_region_asia">Asya</string>
|
||||||
|
<string name="server_filter_region_oceania">Usyani</string>
|
||||||
<!-- %s is server domain -->
|
<!-- %s is server domain -->
|
||||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||||
|
|||||||
@@ -259,4 +259,7 @@
|
|||||||
<string name="sk_settings_collapse_long_posts">아주 긴 게시물 접기</string>
|
<string name="sk_settings_collapse_long_posts">아주 긴 게시물 접기</string>
|
||||||
<string name="sk_spectator_mode">관객 모드</string>
|
<string name="sk_spectator_mode">관객 모드</string>
|
||||||
<string name="sk_settings_hide_interaction">상호작용 버튼 가리기</string>
|
<string name="sk_settings_hide_interaction">상호작용 버튼 가리기</string>
|
||||||
|
<string name="sk_follow_as">다른 계정으로 팔로우</string>
|
||||||
|
<string name="sk_followed_as">%s 계정으로 팔로우함</string>
|
||||||
|
<string name="sk_settings_hide_fab">게시 버튼 자동으로 가리기</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -58,8 +58,168 @@
|
|||||||
<string name="profile_joined">အကောင့်ဖွင့်ခဲ့သည့် ရက်စွဲ</string>
|
<string name="profile_joined">အကောင့်ဖွင့်ခဲ့သည့် ရက်စွဲ</string>
|
||||||
<string name="done">ပြီးပြီ</string>
|
<string name="done">ပြီးပြီ</string>
|
||||||
<string name="loading">လုပ်ဆောင်နေသည်…</string>
|
<string name="loading">လုပ်ဆောင်နေသည်…</string>
|
||||||
|
<string name="post_from_user">%s ၏ ပို့စ်</string>
|
||||||
|
<plurals name="x_minutes">
|
||||||
|
<item quantity="other">%d မိနစ်</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="x_hours">
|
||||||
|
<item quantity="other">%d နာရီ</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="x_days">
|
||||||
|
<item quantity="other">%d ရက်</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="x_seconds_left">
|
||||||
|
<item quantity="other">%d စက္ကန့် ကျန်ရှိ</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="x_minutes_left">
|
||||||
|
<item quantity="other">%d မိနစ် ကျန်ရှိ</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="x_hours_left">
|
||||||
|
<item quantity="other">%d နာရီ ကျန်ရှိ</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="x_days_left">
|
||||||
|
<item quantity="other">%d ရက် ကျန်ရှိ</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="x_voters">
|
||||||
|
<item quantity="other">မဲပေးသူ %,d ဦး</item>
|
||||||
|
</plurals>
|
||||||
|
<string name="poll_closed">မဲပေးခွင့်ပိတ်သွားပါပြီ</string>
|
||||||
|
<string name="confirm_block_title">အကောင့်ဘလော့ခြင်း</string>
|
||||||
|
<string name="confirm_block_domain_title">ဒိုမိန်းကို ဘလော့လုပ်ခြင်း</string>
|
||||||
|
<string name="confirm_block">%s ကို ဘလော့မှာသေချာပြီလား</string>
|
||||||
|
<string name="do_block">ဘလော့မည်</string>
|
||||||
|
<string name="confirm_unblock_title">အကောင့်ဘလော့ဖြုတ်ခြင်း</string>
|
||||||
|
<string name="confirm_unblock_domain_title">ဒိုမိန်းကို ဘလော့ဖြုတ်ခြင်း</string>
|
||||||
|
<string name="confirm_unblock">%s ကို ဘလော့ဖြုတ်မှာသေချာပြီလား</string>
|
||||||
|
<string name="do_unblock">ဘလော့ဖြုတ်မည်</string>
|
||||||
|
<string name="button_blocked">ဘလော့ထား</string>
|
||||||
|
<string name="action_vote">မဲပေးမည်</string>
|
||||||
|
<string name="tap_to_reveal">ကြည့်ရန် နှိပ်ပါ</string>
|
||||||
|
<string name="delete">ဖျက်မည်</string>
|
||||||
|
<string name="confirm_delete_title">ပို့စ်ဖျက်ခြင်း</string>
|
||||||
|
<string name="confirm_delete">ဒီပို့စ်ကိုဖျက်မှာ သေချာပြီလား?</string>
|
||||||
|
<string name="deleting">ပို့စ်ဖျက်နေသည်…</string>
|
||||||
|
<string name="play">ဖွင့်မည်</string>
|
||||||
|
<string name="pause">ခဏရပ်မည်</string>
|
||||||
|
<string name="log_out">အကောင့်ထွက်မည်</string>
|
||||||
|
<string name="add_account">အကောင့်ထည့်မည်</string>
|
||||||
|
<string name="search_hint">ရှာဖွေရန်</string>
|
||||||
|
<string name="hashtags">ဟက်ရှ်တက်များ</string>
|
||||||
|
<string name="news">သတင်းများ</string>
|
||||||
|
<string name="for_you">သင့်အတွက်</string>
|
||||||
|
<string name="all_notifications">အားလုံး</string>
|
||||||
|
<string name="mentions">မန်းရှင်းထားသည်များ</string>
|
||||||
|
<plurals name="x_people_talking">
|
||||||
|
<item quantity="other">လူ %d ဦး ပြောနေသည်</item>
|
||||||
|
</plurals>
|
||||||
|
<string name="report_title">%s ကို တိုင်ကြားခြင်း</string>
|
||||||
|
<string name="report_choose_reason">ဒီပိုစ့်က ဘာဖြစ်လို့ပါလဲ?</string>
|
||||||
|
<string name="report_choose_reason_account">%s က ဘာဖြစ်လို့ပါလဲ?</string>
|
||||||
|
<string name="report_choose_reason_subtitle">အကိုက်ညီဆုံးအဖြေကို ရွေးချယ်ပါ</string>
|
||||||
|
<string name="report_reason_personal">မကြိုက်လို့</string>
|
||||||
|
<string name="report_reason_personal_subtitle">သင်ကြည့်ချင်တာ မဟုတ်လို့</string>
|
||||||
|
<string name="report_reason_spam">Spam မို့လို့</string>
|
||||||
|
<string name="report_reason_spam_subtitle">အန္တရာယ်ရှိတဲ့ လင့်ခ်မို့လို့ (သို့) engagement အတုမို့လို့ (သို့) ထပ်ခါထပ်ခါရီပလိုင်းပြန်ထားလို့</string>
|
||||||
|
<string name="report_reason_violation">ဆာဗာစည်းမျဉ်းတွေကို ချိုးဖောက်ထားလို့</string>
|
||||||
|
<string name="report_reason_violation_subtitle">စည်းမျဉ်းစည်းကမ်းတစ်ခုခုကို ချိုးဖောက်ထားတယ်ဆိုတာ သင်သိနေလို့</string>
|
||||||
|
<string name="report_reason_other">တခြားဟာ</string>
|
||||||
|
<string name="report_reason_other_subtitle">အပေါ်က အမျိုးအစားတွေထဲက မဟုတ်လို့</string>
|
||||||
|
<string name="report_choose_rule">ဘယ်စည်းမျဉ်းတွေကို ချိုးဖောက်ထားပါသလဲ?</string>
|
||||||
|
<string name="report_choose_rule_subtitle">သက်ဆိုင်သမျှကို ရွေးချယ်ပါ</string>
|
||||||
|
<string name="report_choose_posts">ဤတိုင်ကြားမှုကို အထောက်အကူပေးနိုင်မယ့် နောက်ထပ်ပို့စ်တွေ ရှိပါသေးလား?</string>
|
||||||
|
<string name="report_choose_posts_subtitle">သက်ဆိုင်သမျှကို ရွေးချယ်ပါ</string>
|
||||||
|
<string name="report_comment_title">တခြား ကျွန်တော်တို့ကိုသိစေချင်တာ ရှိပါသလား?</string>
|
||||||
|
<string name="report_comment_hint">ထပ်ပေါင်းမှတ်ချက်ပေးရန်</string>
|
||||||
|
<string name="sending_report">တိုင်ကြားစာ ပေးပို့နေသည်…</string>
|
||||||
|
<string name="report_sent_title">တိုင်ကြားမှုအတွက် ကျေးဇူးတင်ပါတယ်။ ကျွန်တော်တို့ စစ်ဆေးပေးပါ့မယ်။</string>
|
||||||
|
<string name="unfollow_user">%s ကို ဖောလိုးမလုပ်တော့</string>
|
||||||
|
<string name="unfollow">ဖောလိုးမလုပ်တော့</string>
|
||||||
|
<string name="block_user_explain">သူက သင့်ကိုဖောလိုးလုပ်နိုင်မှာမဟုတ်တော့သလို သင့်ပိုစ့်တွေကိုလည်း မမြင်ရတော့ပါဘူး။ ဒါပေမယ့် သူဘလော့ခံလိုက်ရတာကိုတော့ တွေ့မြင်နိုင်ပါတယ်။</string>
|
||||||
|
<string name="report_personal_title">ဒါကို မမြင်ချင်ဘူးလား?</string>
|
||||||
|
<string name="report_personal_subtitle">Mastodon ပေါ်မှာ သင်မမြင်ချင်တာတစ်ခုခုတွေ့ခဲ့ရင် သူ့ကို သင့်ကွန်ရက်ကနေ ဖယ်ထုတ်နိုင်ပါတယ်။</string>
|
||||||
|
<string name="instance_catalog_title">Mastodon ကို မတူညီတဲ့ဆာဗာပေါင်းစုံက အသုံးပြုများနဲ့ ဖွဲ့စည်းထားပါတယ်။</string>
|
||||||
|
<string name="instance_catalog_subtitle">သင့်စိတ်ဝင်စားမှု သို့မဟုတ် သင့်ဒေသပေါ်လိုက်ပြီး ဆာဗာရွေးချယ်နိုင်သလို အထွေထွေသုံးဆာဗာကိုလည်း ရွေးချယ်နိုင်ပါသည်။ အခြားသူတွေနဲ့ ဆက်သွယ်ရာမှာတော့ မည်သည့်ဆာဗာပဲဖြစ်နေပါစေ အချင်းချင်း ပုံမှန်အတိုင်း ဆက်သွယ်ချိတ်ဆက်နိုင်မှာပါ။</string>
|
||||||
|
<string name="search_communities">ဆာဗာအမည် သို့မဟုတ် URL</string>
|
||||||
|
<string name="instance_rules_title">ဆာဗာစည်းမျဉ်းများ</string>
|
||||||
|
<string name="instance_rules_subtitle">ရှေ့ဆက်ခြင်းအားဖြင့် သင်သည် %s ၏ စီမံကွပ်ကဲသူများမှ ချမှတ်ထားသော အောက်ပါစည်းမျဉ်းများကို သဘောတူပြီးဖြစ်ပါသည်။</string>
|
||||||
|
<string name="signup_title">အကောင့်ဖန်တီးမည်</string>
|
||||||
|
<string name="display_name">အမည်</string>
|
||||||
|
<string name="username">အသုံးပြုသူအမည်</string>
|
||||||
|
<string name="email">အီးမေးလ်</string>
|
||||||
|
<string name="password">စကားဝှက်</string>
|
||||||
|
<string name="confirm_password">စကားဝှက်ကို အတည်ပြုပါ</string>
|
||||||
|
<string name="password_note">သင့်စကားဝှက်ခိုင်မာမှုကို မြှင့်တင်ရန် စာလုံးအကြီးများ၊ special character များနှင့် နံပါတ်များထည့်သွင်းပါ။</string>
|
||||||
|
<string name="category_academia">ပညာရေး</string>
|
||||||
|
<string name="category_activism">တက်ကြွလှုပ်ရှားမှု</string>
|
||||||
|
<string name="category_all">အားလုံး</string>
|
||||||
|
<string name="category_art">အနုပညာ</string>
|
||||||
|
<string name="category_food">အစားအသောက်</string>
|
||||||
|
<string name="category_games">ဂိမ်း</string>
|
||||||
|
<string name="category_general">အထွေထွေ</string>
|
||||||
|
<string name="category_journalism">သတင်းစာပညာ</string>
|
||||||
|
<string name="category_lgbt">LGBT</string>
|
||||||
|
<string name="category_music">ဂီတ</string>
|
||||||
|
<string name="category_regional">ဒေသဆိုင်ရာ</string>
|
||||||
|
<string name="category_tech">နည်းပညာ</string>
|
||||||
|
<string name="confirm_email_title">သင့်အီးမေးလ် စာဝင်ပုံးကို စစ်ဆေးပါ</string>
|
||||||
<!-- %s is the email address -->
|
<!-- %s is the email address -->
|
||||||
|
<string name="media_attachment_unsupported_type">ဖိုင် %s သည် ထောက်ပံ့မပေးထားသည့်အမျိုးအစားဖြစ်သည်</string>
|
||||||
|
<string name="media_attachment_too_big">ဖိုင် %1$s သည် အရွယ်အစားကန့်သတ်ချက်ဖြစ်သော %2$s MB ထက် ကျော်လွန်နေသည်</string>
|
||||||
|
<string name="theme_auto">အလိုလျောက်</string>
|
||||||
|
<string name="theme_light">အလင်း</string>
|
||||||
|
<string name="theme_dark">အမှောင်</string>
|
||||||
|
<string name="theme_true_black">အနက်စစ်စစ်မုဒ်</string>
|
||||||
|
<string name="settings_behavior">အပြုအမူဆိုင်ရာ</string>
|
||||||
|
<string name="settings_gif">ရွေ့လျားနေသော Avatar များနှင့် အီမိုဂျီများ</string>
|
||||||
|
<string name="settings_custom_tabs">အက်ပ်တွင်း ဘရောက်ဇာကို သုံးမည်</string>
|
||||||
|
<string name="settings_notifications">နိုတီများ</string>
|
||||||
|
<string name="notify_me_when">အသိပေးပါ</string>
|
||||||
|
<string name="notify_anyone">တစ်ယောက်ယောက်က</string>
|
||||||
|
<string name="notify_follower">ဖောလိုးဝါတစ်ယောက်က</string>
|
||||||
|
<string name="notify_followed">ကျွန်ုပ်ဖောလိုးလုပ်ထားသူက</string>
|
||||||
|
<string name="notify_none">မည်သူကမျှ</string>
|
||||||
|
<string name="notify_favorites">ကျွန်ုပ်ပို့စ်ကို နှစ်သက်လျှင်</string>
|
||||||
|
<string name="notify_follow">ကျွန်ုပ်ကို ဖောလိုးလုပ်လျှင်</string>
|
||||||
|
<string name="notify_reblog">ကျွန်ုပ်ပို့စ်ကို reblog လုပ်လျှင်</string>
|
||||||
|
<string name="notify_mention">ကျွန်ုပ်ကို မန်းရှင်းခေါ်လျှင်</string>
|
||||||
|
<string name="settings_boring">ပျင်းစရာကောင်းသည်များ</string>
|
||||||
|
<string name="settings_account">အကောင့်ဆက်တင်များ</string>
|
||||||
|
<string name="settings_tos">ဝန်ဆောင်မှုဆိုင်ရာ စည်းကမ်းချက်များ</string>
|
||||||
|
<string name="settings_privacy_policy">ကိုယ်ရေးအချက်အလက်မူဝါဒ</string>
|
||||||
|
<string name="settings_spicy">ပူပူစပ်စပ်ဇုန်</string>
|
||||||
|
<string name="settings_clear_cache">မီဒီယာကက်ရှ်ကို ရှင်းလင်းမည်</string>
|
||||||
|
<string name="settings_app_version">အန်းဒရိုက်အတွက် မက်စ်စတိုဒွန် - ဗားရှင်း %1$s (%2$d)</string>
|
||||||
|
<string name="media_cache_cleared">မီဒီယာကက်ရှ်ကို ရှင်းလင်းလိုက်ပါပြီ</string>
|
||||||
|
<string name="confirm_log_out">အကောင့်ထွက်မှာ သေချာပြီလား?</string>
|
||||||
|
<string name="sensitive_content">ထိလွယ်ရှလွယ် အကြောင်းအရာ</string>
|
||||||
|
<string name="sensitive_content_explain">စာရေးသူက ဤဓာတ်ပုံ/ဗီဒီယိုကို ထိရှလွယ်သည်အဖြစ် မှတ်သားထားသည်၊ ကြည့်ရန် ထိပါ။</string>
|
||||||
|
<string name="media_hidden">ကြည့်ရန် ထိပါ</string>
|
||||||
|
<string name="avatar_description">%s ရဲ့ ပရိုဖိုင်းကို သွားမည်</string>
|
||||||
|
<string name="new_post">ပို့စ်အသစ်</string>
|
||||||
|
<string name="add_media">ဓာတ်ပုံ/ဗီဒီယိုထည့်ရန်</string>
|
||||||
|
<string name="add_poll">စစ်တမ်းကောက်ရန်</string>
|
||||||
|
<string name="emoji">အီမိုဂျီ</string>
|
||||||
|
<string name="post_visibility">ပို့စ်အား တွေ့မြင်နိုင်မှု</string>
|
||||||
|
<string name="home_timeline">မူလ တိုင်းမ်လိုင်း</string>
|
||||||
|
<string name="my_profile">ကျွန်ုပ်၏ပရိုဖိုင်း</string>
|
||||||
|
<string name="media_viewer">မီဒီယာကြည့်ရှုခြင်း</string>
|
||||||
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||||
|
<string name="post_info_reblogs">Reblog များ</string>
|
||||||
|
<string name="post_info_favorites">နှစ်သက်မှုများ</string>
|
||||||
|
<string name="edit_history">ပြင်ဆင်မှုမှတ်တမ်း</string>
|
||||||
|
<string name="last_edit_at_x">နောက်ဆုံးပြင်ဆင်ချိန်မှာ %s</string>
|
||||||
|
<string name="time_just_now">အခုလေးတင်</string>
|
||||||
|
<plurals name="x_seconds_ago">
|
||||||
|
<item quantity="other">လွန်ခဲ့သော %d စက္ကန့်က</item>
|
||||||
|
</plurals>
|
||||||
|
<plurals name="x_minutes_ago">
|
||||||
|
<item quantity="other">လွန်ခဲ့သော %d မိနစ်က</item>
|
||||||
|
</plurals>
|
||||||
|
<string name="edited_timestamp">ပြင်ဆင်ထား %s</string>
|
||||||
|
<string name="edit_original_post">မူရင်းပို့စ်</string>
|
||||||
|
<string name="edit_spoiler_added">အကြောင်းအရာသတိပေးချက် ထည့်လိုက်သည်</string>
|
||||||
|
<string name="edit_spoiler_edited">အကြောင်းအရာသတိပေးချက်ကို ပြင်လိုက်သည်</string>
|
||||||
|
<string name="edit_spoiler_removed">အကြောင်းအရာသတိပေးချက်ကို ဖယ်ရှားလိုက်သည်</string>
|
||||||
<!-- %s is version like 1.2.3 -->
|
<!-- %s is version like 1.2.3 -->
|
||||||
<!-- %s is version like 1.2.3 -->
|
<!-- %s is version like 1.2.3 -->
|
||||||
<!-- %s is file size -->
|
<!-- %s is file size -->
|
||||||
|
|||||||
@@ -248,4 +248,7 @@
|
|||||||
<string name="sk_settings_collapse_long_posts">Lange berichten inklappen</string>
|
<string name="sk_settings_collapse_long_posts">Lange berichten inklappen</string>
|
||||||
<string name="sk_unfinished_attachments_message">Enkele bijlagen zijn nog niet klaar met uploaden.</string>
|
<string name="sk_unfinished_attachments_message">Enkele bijlagen zijn nog niet klaar met uploaden.</string>
|
||||||
<string name="sk_compose_no_draft">Niet opslaan als concept</string>
|
<string name="sk_compose_no_draft">Niet opslaan als concept</string>
|
||||||
|
<string name="sk_settings_hide_interaction">Verberg interactie knoppen</string>
|
||||||
|
<string name="sk_follow_as">Volgen met ander account</string>
|
||||||
|
<string name="sk_followed_as">Gevolgd met %s</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
<string name="next">Dalej</string>
|
<string name="next">Dalej</string>
|
||||||
<string name="loading_instance">Pobieranie informacji o serwerze…</string>
|
<string name="loading_instance">Pobieranie informacji o serwerze…</string>
|
||||||
<string name="error">Błąd</string>
|
<string name="error">Błąd</string>
|
||||||
<string name="not_a_mastodon_instance">%s wydaje się nie być instancją Mastodona.</string>
|
<string name="not_a_mastodon_instance">%s nie wydaje się być serwerem Mastodona.</string>
|
||||||
<string name="ok">OK</string>
|
<string name="ok">OK</string>
|
||||||
<string name="preparing_auth">Przygotowywanie do uwierzytelniania…</string>
|
<string name="preparing_auth">Przygotowywanie do uwierzytelniania…</string>
|
||||||
<string name="finishing_auth">Kończenie uwierzytelniania…</string>
|
<string name="finishing_auth">Kończenie uwierzytelniania…</string>
|
||||||
|
|||||||
@@ -258,4 +258,8 @@
|
|||||||
<string name="sk_settings_prefix_reply_cw_with_re">Zaczynaj CW odpowiedzi od “re:”</string>
|
<string name="sk_settings_prefix_reply_cw_with_re">Zaczynaj CW odpowiedzi od “re:”</string>
|
||||||
<string name="sk_settings_collapse_long_posts">Zwijaj bardzo długie posty</string>
|
<string name="sk_settings_collapse_long_posts">Zwijaj bardzo długie posty</string>
|
||||||
<string name="sk_settings_hide_interaction">Ukryj przyciski interakcji</string>
|
<string name="sk_settings_hide_interaction">Ukryj przyciski interakcji</string>
|
||||||
|
<string name="sk_followed_as">Obserwowane z %s</string>
|
||||||
|
<string name="sk_follow_as">Obserwuj z innego konta</string>
|
||||||
|
<string name="sk_settings_hide_fab">Automatycznie ukrywaj przycisk tworzenia nowego wpisu</string>
|
||||||
|
<string name="sk_in_reply">W odpowiedzi</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
<resources>
|
<resources>
|
||||||
<string name="get_started">Criar conta</string>
|
<string name="get_started">Criar conta</string>
|
||||||
<string name="already_have_account">Já tenho uma conta</string>
|
<string name="already_have_account">Já tenho uma conta</string>
|
||||||
<string name="log_in">Iniciar sessão</string>
|
<string name="log_in">Entrar</string>
|
||||||
<string name="next">Próximo</string>
|
<string name="next">Próximo</string>
|
||||||
<string name="loading_instance">Recuperando informações do servidor…</string>
|
<string name="loading_instance">Recuperando informações do servidor…</string>
|
||||||
<string name="error">Erro</string>
|
<string name="error">Erro</string>
|
||||||
@@ -402,7 +402,9 @@
|
|||||||
<string name="welcome_page3_text">Pessoas diferentes escolhem servidores diferentes por vários motivos. O art.example é um ótimo lugar para artistas, enquanto glasgow.example pode ser uma boa escolha para escoceses.\n\nVocê não pode errar com nenhum de nossos servidores recomendados, portanto, independentemente de qual escolher (ou se inserir seu próprio na barra de pesquisa do servidor), você nunca perderá uma batida em lugar nenhum.</string>
|
<string name="welcome_page3_text">Pessoas diferentes escolhem servidores diferentes por vários motivos. O art.example é um ótimo lugar para artistas, enquanto glasgow.example pode ser uma boa escolha para escoceses.\n\nVocê não pode errar com nenhum de nossos servidores recomendados, portanto, independentemente de qual escolher (ou se inserir seu próprio na barra de pesquisa do servidor), você nunca perderá uma batida em lugar nenhum.</string>
|
||||||
<string name="signup_random_server_explain">Nós escolheremos um servidor com base no seu idioma se você continuar sem fazer uma seleção.</string>
|
<string name="signup_random_server_explain">Nós escolheremos um servidor com base no seu idioma se você continuar sem fazer uma seleção.</string>
|
||||||
<string name="server_filter_any_language">Qualquer idioma</string>
|
<string name="server_filter_any_language">Qualquer idioma</string>
|
||||||
|
<string name="server_filter_instant_signup">Cadastro Rápido</string>
|
||||||
<string name="server_filter_manual_review">Revisão manual</string>
|
<string name="server_filter_manual_review">Revisão manual</string>
|
||||||
|
<string name="server_filter_any_signup_speed">Qualquer Velocidade de Cadastro</string>
|
||||||
<string name="server_filter_region_europe">Europa</string>
|
<string name="server_filter_region_europe">Europa</string>
|
||||||
<string name="server_filter_region_north_america">América do Norte</string>
|
<string name="server_filter_region_north_america">América do Norte</string>
|
||||||
<string name="server_filter_region_south_america">América do Sul</string>
|
<string name="server_filter_region_south_america">América do Sul</string>
|
||||||
@@ -425,6 +427,7 @@
|
|||||||
<string name="server_policy_disagree">Discordo de %s</string>
|
<string name="server_policy_disagree">Discordo de %s</string>
|
||||||
<string name="profile_bio">Bio</string>
|
<string name="profile_bio">Bio</string>
|
||||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
|
<string name="sending_follows">Seguindo usuários…</string>
|
||||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||||
<string name="signup_email_domain_blocked">%1$s não permite inscrições de %2$s. Tente um diferente ou <a>escolha um servidor diferente</a>.</string>
|
<string name="signup_email_domain_blocked">%1$s não permite inscrições de %2$s. Tente um diferente ou <a>escolha um servidor diferente</a>.</string>
|
||||||
<string name="signup_username_taken">Esse nome de usuário já está em uso.</string>
|
<string name="signup_username_taken">Esse nome de usuário já está em uso.</string>
|
||||||
|
|||||||
@@ -359,6 +359,12 @@
|
|||||||
<item quantity="many">%,d подписок</item>
|
<item quantity="many">%,d подписок</item>
|
||||||
<item quantity="other">%,d подписок</item>
|
<item quantity="other">%,d подписок</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
<plurals name="x_reblogs">
|
||||||
|
<item quantity="one">%,d продвижение</item>
|
||||||
|
<item quantity="few">%,d продвижения</item>
|
||||||
|
<item quantity="many">%,d продвижений</item>
|
||||||
|
<item quantity="other">Продвижений: %,d</item>
|
||||||
|
</plurals>
|
||||||
<string name="timestamp_via_app">%1$s через %2$s</string>
|
<string name="timestamp_via_app">%1$s через %2$s</string>
|
||||||
<string name="time_now">только что</string>
|
<string name="time_now">только что</string>
|
||||||
<string name="post_info_reblogs">Продвинули</string>
|
<string name="post_info_reblogs">Продвинули</string>
|
||||||
@@ -425,11 +431,15 @@
|
|||||||
<string name="login_subtitle">Войдите на сервер, на котором вы создали свою учётную запись.</string>
|
<string name="login_subtitle">Войдите на сервер, на котором вы создали свою учётную запись.</string>
|
||||||
<string name="server_url">URL-адрес сервера</string>
|
<string name="server_url">URL-адрес сервера</string>
|
||||||
<string name="welcome_page1_title">Что такое Mastodon?</string>
|
<string name="welcome_page1_title">Что такое Mastodon?</string>
|
||||||
|
<string name="welcome_page1_text">Представьте, что у вас есть адрес электронной почты, который заканчивается на @example.com.\n\nВы можете отправлять и получать письма от всех, даже если их адрес заканчивается на @gmail.com или @icloud.com или @example.com.</string>
|
||||||
|
<string name="welcome_page2_title">Mastodon работает так же.</string>
|
||||||
|
<string name="welcome_page2_text">Имя вашей учетной записи может быть @gothgirl654@example.social, но вы все еще можете подписаться, продвигать посты, а также общаться с @fallout5ever@example.online.</string>
|
||||||
<string name="welcome_page3_title">Как выбрать сервер?</string>
|
<string name="welcome_page3_title">Как выбрать сервер?</string>
|
||||||
<string name="welcome_page3_text">Разные люди выбирают разные серверы по разным причинам. art.example — отличное место для художников, а glasgow.example может быть хорошим выбором для шотландцев.\n\nВы не ошибётесь с любым из рекомендованных серверов, поэтому независимо от того, какой из них вы выберете (или если вы введёте свой собственный в строке поиска сервера), вы никогда и нигде не пропустите ни одной детали.</string>
|
<string name="welcome_page3_text">Разные люди выбирают разные серверы по разным причинам. art.example — отличное место для художников, а glasgow.example может быть хорошим выбором для шотландцев.\n\nВы не ошибётесь с любым из рекомендованных серверов, поэтому независимо от того, какой из них вы выберете (или если вы введёте свой собственный в строке поиска сервера), вы никогда и нигде не пропустите ни одной детали.</string>
|
||||||
<string name="signup_random_server_explain">Мы выберем сервер на основе вашего языка, если вы продолжите, не сделав выбор.</string>
|
<string name="signup_random_server_explain">Мы выберем сервер на основе вашего языка, если вы продолжите, не сделав выбор.</string>
|
||||||
<string name="server_filter_any_language">Любой язык</string>
|
<string name="server_filter_any_language">Любой язык</string>
|
||||||
<string name="server_filter_instant_signup">Мгновенная регистрация</string>
|
<string name="server_filter_instant_signup">Мгновенная регистрация</string>
|
||||||
|
<string name="server_filter_manual_review">Ручная проверка</string>
|
||||||
<string name="server_filter_any_signup_speed">Любая скорость регистрации</string>
|
<string name="server_filter_any_signup_speed">Любая скорость регистрации</string>
|
||||||
<string name="server_filter_region_europe">Европа</string>
|
<string name="server_filter_region_europe">Европа</string>
|
||||||
<string name="server_filter_region_north_america">Северная Америка</string>
|
<string name="server_filter_region_north_america">Северная Америка</string>
|
||||||
@@ -438,6 +448,7 @@
|
|||||||
<string name="server_filter_region_asia">Азия</string>
|
<string name="server_filter_region_asia">Азия</string>
|
||||||
<string name="server_filter_region_oceania">Океания</string>
|
<string name="server_filter_region_oceania">Океания</string>
|
||||||
<string name="not_accepting_new_members">Не принимает новых участников</string>
|
<string name="not_accepting_new_members">Не принимает новых участников</string>
|
||||||
|
<string name="category_special_interests">Особые интересы</string>
|
||||||
<string name="signup_passwords_dont_match">Пароли не совпадают</string>
|
<string name="signup_passwords_dont_match">Пароли не совпадают</string>
|
||||||
<string name="pick_server_for_me">Выбрать за меня</string>
|
<string name="pick_server_for_me">Выбрать за меня</string>
|
||||||
<string name="profile_add_row">Добавить строку</string>
|
<string name="profile_add_row">Добавить строку</string>
|
||||||
@@ -445,12 +456,14 @@
|
|||||||
<string name="profile_setup_subtitle">Вы всегда можете завершить это позже на вкладке Профиль.</string>
|
<string name="profile_setup_subtitle">Вы всегда можете завершить это позже на вкладке Профиль.</string>
|
||||||
<string name="profile_setup_explanation">Вы можете добавить до четырех полей профиля для всего, что хотите. Местоположение, ссылки, местоимения — нет предела возможностям.</string>
|
<string name="profile_setup_explanation">Вы можете добавить до четырех полей профиля для всего, что хотите. Местоположение, ссылки, местоимения — нет предела возможностям.</string>
|
||||||
<string name="popular_on_mastodon">Популярно на Mastodon</string>
|
<string name="popular_on_mastodon">Популярно на Mastodon</string>
|
||||||
|
<string name="follow_all">Подписаться на всех</string>
|
||||||
<string name="server_rules_disagree">Отклонить</string>
|
<string name="server_rules_disagree">Отклонить</string>
|
||||||
<string name="privacy_policy_explanation">TL;DR: Мы ничего не собираем и не обрабатываем.</string>
|
<string name="privacy_policy_explanation">TL;DR: Мы ничего не собираем и не обрабатываем.</string>
|
||||||
<!-- %s is server domain -->
|
<!-- %s is server domain -->
|
||||||
<string name="server_policy_disagree">Отклонить %s</string>
|
<string name="server_policy_disagree">Отклонить %s</string>
|
||||||
<string name="profile_bio">О себе</string>
|
<string name="profile_bio">О себе</string>
|
||||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
|
<string name="sending_follows">Подписка на пользователей…</string>
|
||||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||||
<string name="signup_email_domain_blocked">%1$s не позволяет зарегистрироваться от %2$s. Попробуйте другой или <a>выберите другой сервер</a>.</string>
|
<string name="signup_email_domain_blocked">%1$s не позволяет зарегистрироваться от %2$s. Попробуйте другой или <a>выберите другой сервер</a>.</string>
|
||||||
<string name="signup_username_taken">Это имя пользователя занято.</string>
|
<string name="signup_username_taken">Это имя пользователя занято.</string>
|
||||||
|
|||||||
@@ -173,7 +173,16 @@
|
|||||||
<string name="back">Tillbaka</string>
|
<string name="back">Tillbaka</string>
|
||||||
<string name="instance_catalog_title">Mastodon utgörs av användare på olika servrar.</string>
|
<string name="instance_catalog_title">Mastodon utgörs av användare på olika servrar.</string>
|
||||||
<string name="instance_catalog_subtitle">Välj en server baserat på dina intressen, region eller en allmän server. Du kan fortfarande nå alla, oavsett server.</string>
|
<string name="instance_catalog_subtitle">Välj en server baserat på dina intressen, region eller en allmän server. Du kan fortfarande nå alla, oavsett server.</string>
|
||||||
|
<string name="search_communities">Servernamn eller URL</string>
|
||||||
|
<string name="instance_rules_title">Serverregler</string>
|
||||||
|
<string name="instance_rules_subtitle">Genom att fortsätta, samtycker du till att följa följande regler som fastställts och verkställs av %s moderatorer.</string>
|
||||||
|
<string name="signup_title">Skapa konto</string>
|
||||||
<string name="edit_photo">redigera</string>
|
<string name="edit_photo">redigera</string>
|
||||||
|
<string name="display_name">Namn</string>
|
||||||
|
<string name="username">Användarnamn</string>
|
||||||
|
<string name="email">E-post</string>
|
||||||
|
<string name="password">Lösenord</string>
|
||||||
|
<string name="confirm_password">Bekräfta lösenord</string>
|
||||||
<string name="password_note">Inkludera stora bokstäver, specialtecken och siffror för att öka ditt lösenords styrka.</string>
|
<string name="password_note">Inkludera stora bokstäver, specialtecken och siffror för att öka ditt lösenords styrka.</string>
|
||||||
<string name="category_academia">Vetenskap</string>
|
<string name="category_academia">Vetenskap</string>
|
||||||
<string name="category_activism">Aktivism</string>
|
<string name="category_activism">Aktivism</string>
|
||||||
@@ -188,7 +197,10 @@
|
|||||||
<string name="category_music">Musik</string>
|
<string name="category_music">Musik</string>
|
||||||
<string name="category_regional">Regionalt</string>
|
<string name="category_regional">Regionalt</string>
|
||||||
<string name="category_tech">Teknik</string>
|
<string name="category_tech">Teknik</string>
|
||||||
|
<string name="confirm_email_title">Kolla din inkorg</string>
|
||||||
<!-- %s is the email address -->
|
<!-- %s is the email address -->
|
||||||
|
<string name="confirm_email_subtitle">Tryck på länken vi skickade dig för att verifiera %s. Vi väntar här.</string>
|
||||||
|
<string name="confirm_email_didnt_get">Fick du ingen länk?</string>
|
||||||
<string name="resend">Skicka igen</string>
|
<string name="resend">Skicka igen</string>
|
||||||
<string name="open_email_app">Öppna e-postappen</string>
|
<string name="open_email_app">Öppna e-postappen</string>
|
||||||
<string name="resent_email">Bekräftelse via e-post skickad</string>
|
<string name="resent_email">Bekräftelse via e-post skickad</string>
|
||||||
@@ -230,7 +242,7 @@
|
|||||||
<string name="settings_behavior">Beteende</string>
|
<string name="settings_behavior">Beteende</string>
|
||||||
<string name="settings_gif">Spela animerade avatarer och emojis</string>
|
<string name="settings_gif">Spela animerade avatarer och emojis</string>
|
||||||
<string name="settings_custom_tabs">Använd webbläsaren i appen</string>
|
<string name="settings_custom_tabs">Använd webbläsaren i appen</string>
|
||||||
<string name="settings_notifications">Notiser</string>
|
<string name="settings_notifications">Aviseringar</string>
|
||||||
<string name="notify_me_when">Meddela mig när</string>
|
<string name="notify_me_when">Meddela mig när</string>
|
||||||
<string name="notify_anyone">vem som helst</string>
|
<string name="notify_anyone">vem som helst</string>
|
||||||
<string name="notify_follower">en följare</string>
|
<string name="notify_follower">en följare</string>
|
||||||
@@ -276,6 +288,7 @@
|
|||||||
<string name="open_in_browser">Öppna i webbläsare</string>
|
<string name="open_in_browser">Öppna i webbläsare</string>
|
||||||
<string name="hide_boosts_from_user">Dölj boostar från %s</string>
|
<string name="hide_boosts_from_user">Dölj boostar från %s</string>
|
||||||
<string name="show_boosts_from_user">Visa boostar från %s</string>
|
<string name="show_boosts_from_user">Visa boostar från %s</string>
|
||||||
|
<string name="signup_reason">Varför vill du gå med?</string>
|
||||||
<string name="signup_reason_note">Detta kommer hjälpa oss att granska din ansökan.</string>
|
<string name="signup_reason_note">Detta kommer hjälpa oss att granska din ansökan.</string>
|
||||||
<string name="clear">Rensa</string>
|
<string name="clear">Rensa</string>
|
||||||
<string name="profile_header">Bild för sidhuvud</string>
|
<string name="profile_header">Bild för sidhuvud</string>
|
||||||
@@ -368,6 +381,8 @@
|
|||||||
<!-- %s is file size -->
|
<!-- %s is file size -->
|
||||||
<string name="download_update">Ladda ner (%s)</string>
|
<string name="download_update">Ladda ner (%s)</string>
|
||||||
<string name="install_update">Installera</string>
|
<string name="install_update">Installera</string>
|
||||||
|
<string name="privacy_policy_title">Din integritet</string>
|
||||||
|
<string name="privacy_policy_subtitle">Även om Mastodon-appen inte samlar in några data, kan servern du registrerar dig genom ha en annan policy.\n\nOm du inte håller med policyn för %skan du gå tillbaka och välja en annan server.</string>
|
||||||
<string name="i_agree">Jag godkänner</string>
|
<string name="i_agree">Jag godkänner</string>
|
||||||
<string name="empty_list">Den här listan är tom</string>
|
<string name="empty_list">Den här listan är tom</string>
|
||||||
<string name="instance_signup_closed">Denna server accepterar inte nyregistreringar.</string>
|
<string name="instance_signup_closed">Denna server accepterar inte nyregistreringar.</string>
|
||||||
@@ -379,12 +394,41 @@
|
|||||||
<string name="login_title">Välkommen tillbaka</string>
|
<string name="login_title">Välkommen tillbaka</string>
|
||||||
<string name="login_subtitle">Logga in på den server där du skapade ditt konto.</string>
|
<string name="login_subtitle">Logga in på den server där du skapade ditt konto.</string>
|
||||||
<string name="server_url">Server-URL</string>
|
<string name="server_url">Server-URL</string>
|
||||||
|
<string name="welcome_page1_title">Vad är Mastodon?</string>
|
||||||
<string name="welcome_page1_text">Tänk dig att du har en epostadress som slutar med @example.com.\n\nDu kan skicka och ta emot epost från vem som helst, även om deras epostadress slutar med @gmail.com, @icloud.com eller @example.com.</string>
|
<string name="welcome_page1_text">Tänk dig att du har en epostadress som slutar med @example.com.\n\nDu kan skicka och ta emot epost från vem som helst, även om deras epostadress slutar med @gmail.com, @icloud.com eller @example.com.</string>
|
||||||
<string name="welcome_page2_title">Mastodon fungerar så.</string>
|
<string name="welcome_page2_title">Mastodon fungerar så.</string>
|
||||||
<string name="welcome_page2_text">Ditt handtag kan vara @gothgirl654@example.social men du kan fortfarande följa, boosta och chatta med @fallout5ever@example.online.</string>
|
<string name="welcome_page2_text">Ditt handtag kan vara @gothgirl654@example.social men du kan fortfarande följa, boosta och chatta med @fallout5ever@example.online.</string>
|
||||||
<string name="welcome_page3_title">Hur väljer jag en server?</string>
|
<string name="welcome_page3_title">Hur väljer jag en server?</string>
|
||||||
<string name="welcome_page3_text">Olika personer väljer olika servrar av olika anledningar. art.example är en bra plats för konstnärer medan glasgow.exempel kan vara ett bra val för skottar.\n\nMed någon av våra rekommenderar servrar kan du inte hamna fel så oavsett vilken du väljer, eller om du skriver in din egen i serverns sökfältet, kommer du aldrig missa något.</string>
|
<string name="welcome_page3_text">Olika personer väljer olika servrar av olika anledningar. art.example är en bra plats för konstnärer medan glasgow.exempel kan vara ett bra val för skottar.\n\nMed någon av våra rekommenderar servrar kan du inte hamna fel så oavsett vilken du väljer, eller om du skriver in din egen i serverns sökfältet, kommer du aldrig missa något.</string>
|
||||||
|
<string name="signup_random_server_explain">Vi kommer att välja en server baserat på ditt språk om du fortsätter utan att göra ett val.</string>
|
||||||
|
<string name="server_filter_any_language">Vilket språk som helst</string>
|
||||||
|
<string name="server_filter_instant_signup">Omedelbar registrering</string>
|
||||||
|
<string name="server_filter_manual_review">Manuell granskning</string>
|
||||||
|
<string name="server_filter_any_signup_speed">Valfri registreringshastighet</string>
|
||||||
|
<string name="server_filter_region_europe">Europa</string>
|
||||||
|
<string name="server_filter_region_north_america">Nordamerika</string>
|
||||||
|
<string name="server_filter_region_south_america">Sydamerika</string>
|
||||||
|
<string name="server_filter_region_africa">Afrika</string>
|
||||||
|
<string name="server_filter_region_asia">Asien</string>
|
||||||
|
<string name="server_filter_region_oceania">Oceanien</string>
|
||||||
|
<string name="not_accepting_new_members">Accepterar inte nya medlemmar</string>
|
||||||
|
<string name="category_special_interests">Specialintressen</string>
|
||||||
|
<string name="signup_passwords_dont_match">Lösenorden matchar inte</string>
|
||||||
|
<string name="pick_server_for_me">Välj för mig</string>
|
||||||
|
<string name="profile_add_row">Lägg till rad</string>
|
||||||
|
<string name="profile_setup">Konfiguration av profil</string>
|
||||||
|
<string name="profile_setup_subtitle">Du kan alltid fylla i detta senare i fliken Profil.</string>
|
||||||
|
<string name="profile_setup_explanation">Du kan lägga till upp till fyra profilfält för vad du vill. Plats, länkar, pronomen - himlen är gränsen.</string>
|
||||||
|
<string name="popular_on_mastodon">Populärt på Mastodon</string>
|
||||||
|
<string name="follow_all">Följ alla</string>
|
||||||
|
<string name="server_rules_disagree">Instämmer inte alls</string>
|
||||||
|
<string name="privacy_policy_explanation">TL;DR: Vi samlar inte in eller bearbetar något.</string>
|
||||||
<!-- %s is server domain -->
|
<!-- %s is server domain -->
|
||||||
|
<string name="server_policy_disagree">Håller inte med %s</string>
|
||||||
|
<string name="profile_bio">Biografi</string>
|
||||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
|
<string name="sending_follows">Följer användare…</string>
|
||||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||||
|
<string name="signup_email_domain_blocked">%1$s tillåter inte registrering från %2$s. Prova en annan eller <a>välj en annan server</a>.</string>
|
||||||
|
<string name="signup_username_taken">Det här användarnamnet är redan taget.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -173,7 +173,16 @@
|
|||||||
<string name="back">Geri</string>
|
<string name="back">Geri</string>
|
||||||
<string name="instance_catalog_title">Mastodon, farklı sunuculardaki kullanıcılardan oluşur.</string>
|
<string name="instance_catalog_title">Mastodon, farklı sunuculardaki kullanıcılardan oluşur.</string>
|
||||||
<string name="instance_catalog_subtitle">İlgi alanlarına, bölgene hitap eden bir sunucu ya da genel amaçlı bir sunucu seç. Hangi sunucuda olduğun fark etmeksizin herkes ile bağlantı kurabilirsin.</string>
|
<string name="instance_catalog_subtitle">İlgi alanlarına, bölgene hitap eden bir sunucu ya da genel amaçlı bir sunucu seç. Hangi sunucuda olduğun fark etmeksizin herkes ile bağlantı kurabilirsin.</string>
|
||||||
|
<string name="search_communities">Sunucu adı veya linki</string>
|
||||||
|
<string name="instance_rules_title">Sunucu Kuralları</string>
|
||||||
|
<string name="instance_rules_subtitle">Devam ederek %s moderatörleri tarafından yayınlanan kuralları kabul edersiniz.</string>
|
||||||
|
<string name="signup_title">Hesap Oluştur</string>
|
||||||
<string name="edit_photo">düzenle</string>
|
<string name="edit_photo">düzenle</string>
|
||||||
|
<string name="display_name">Ad</string>
|
||||||
|
<string name="username">Kullanıcı adı</string>
|
||||||
|
<string name="email">E-posta</string>
|
||||||
|
<string name="password">Parola</string>
|
||||||
|
<string name="confirm_password">Parolayı doğrula</string>
|
||||||
<string name="password_note">Parolanızın gücünü artırmak için büyük harfler, özel karakterler ve sayılar ekleyin.</string>
|
<string name="password_note">Parolanızın gücünü artırmak için büyük harfler, özel karakterler ve sayılar ekleyin.</string>
|
||||||
<string name="category_academia">Akademi</string>
|
<string name="category_academia">Akademi</string>
|
||||||
<string name="category_activism">aktivizm</string>
|
<string name="category_activism">aktivizm</string>
|
||||||
@@ -188,7 +197,10 @@
|
|||||||
<string name="category_music">Müzik</string>
|
<string name="category_music">Müzik</string>
|
||||||
<string name="category_regional">Bölgesel</string>
|
<string name="category_regional">Bölgesel</string>
|
||||||
<string name="category_tech">Teknoloji</string>
|
<string name="category_tech">Teknoloji</string>
|
||||||
|
<string name="confirm_email_title">E-posta Kutunuzu Kontrol Edin</string>
|
||||||
<!-- %s is the email address -->
|
<!-- %s is the email address -->
|
||||||
|
<string name="confirm_email_subtitle">%s işleminizi doğrulamak için size gönderdiğimiz linke tıklayınız. Biz burada bekleyeceğiz.</string>
|
||||||
|
<string name="confirm_email_didnt_get">Link size ulaşmadı mı?</string>
|
||||||
<string name="resend">Yeniden gönder</string>
|
<string name="resend">Yeniden gönder</string>
|
||||||
<string name="open_email_app">E-posta uygulamasını aç</string>
|
<string name="open_email_app">E-posta uygulamasını aç</string>
|
||||||
<string name="resent_email">Onay e-postası gönderildi</string>
|
<string name="resent_email">Onay e-postası gönderildi</string>
|
||||||
@@ -276,6 +288,7 @@
|
|||||||
<string name="open_in_browser">Tarayıcıda aç</string>
|
<string name="open_in_browser">Tarayıcıda aç</string>
|
||||||
<string name="hide_boosts_from_user">%s kişisinin yeniden paylaşımlarını gizle</string>
|
<string name="hide_boosts_from_user">%s kişisinin yeniden paylaşımlarını gizle</string>
|
||||||
<string name="show_boosts_from_user">%s kişisinin yeniden paylaşımlarını göster</string>
|
<string name="show_boosts_from_user">%s kişisinin yeniden paylaşımlarını göster</string>
|
||||||
|
<string name="signup_reason">Neden katılmak istiyorsunuz?</string>
|
||||||
<string name="signup_reason_note">Bu, başvurunuzu incelememize yardımcı olacaktır.</string>
|
<string name="signup_reason_note">Bu, başvurunuzu incelememize yardımcı olacaktır.</string>
|
||||||
<string name="clear">Temizle</string>
|
<string name="clear">Temizle</string>
|
||||||
<string name="profile_header">Üstbaşlık görseli</string>
|
<string name="profile_header">Üstbaşlık görseli</string>
|
||||||
@@ -368,6 +381,8 @@
|
|||||||
<!-- %s is file size -->
|
<!-- %s is file size -->
|
||||||
<string name="download_update">İndir (%s)</string>
|
<string name="download_update">İndir (%s)</string>
|
||||||
<string name="install_update">Kur</string>
|
<string name="install_update">Kur</string>
|
||||||
|
<string name="privacy_policy_title">Gizliliğiniz</string>
|
||||||
|
<string name="privacy_policy_subtitle">Mastodon uygulaması herhangi bir veri toplama dahi katıldığınız sunucunun farklı bir politikası olabilir. \n\n %s politikası sizi tatmin etmiyorsa geri giderek farklı bir sunucu seçebilirsiniz.</string>
|
||||||
<string name="i_agree">Kabul ediyorum</string>
|
<string name="i_agree">Kabul ediyorum</string>
|
||||||
<string name="empty_list">Bu liste boş</string>
|
<string name="empty_list">Bu liste boş</string>
|
||||||
<string name="instance_signup_closed">Bu sunucu yeni kayıtları kabul etmemektedir.</string>
|
<string name="instance_signup_closed">Bu sunucu yeni kayıtları kabul etmemektedir.</string>
|
||||||
@@ -379,7 +394,40 @@
|
|||||||
<string name="login_title">Hoşgeldin</string>
|
<string name="login_title">Hoşgeldin</string>
|
||||||
<string name="login_subtitle">Hesabınızı oluşturduğunuz sunucu ile giriş yapın.</string>
|
<string name="login_subtitle">Hesabınızı oluşturduğunuz sunucu ile giriş yapın.</string>
|
||||||
<string name="server_url">Sunucu URL\'si</string>
|
<string name="server_url">Sunucu URL\'si</string>
|
||||||
|
<string name="welcome_page1_title">Mastodon nedir?</string>
|
||||||
|
<string name="welcome_page1_text">\@örnek.com ile biten bir e-posta adresiniz olduğunu düşünün. \n\n Kişilerin e-posta adresi @gmail.com, @icloud.com ya da @örnek.com ile bitse de herkese e-posta gönderebilir veya herkesten e-posta alabilirsiniz.</string>
|
||||||
|
<string name="welcome_page2_title">Mastodon da böyledir.</string>
|
||||||
|
<string name="welcome_page2_text">Adresiniz @acemicadi@ornek.social olabilir ama yine de @sessizgemi@ornek.online hesabını takip edebilir, gönderilerini paylaşabilir ve yanıtlayabilirsiniz.</string>
|
||||||
|
<string name="welcome_page3_title">Bir sunucuyu nasıl seçerim?</string>
|
||||||
|
<string name="welcome_page3_text">İnsanlar farklı sebeplerle farklı sunucular seçer. sanat.ornek sanatçılar için, istanbul.ornek İstanbullular için güzel bir seçenek olabilir. \n\n Bizim önerdiğimiz bir sunucuyu seçerek (ya da kendi sunucunuzu arama alanına yazabilirsiniz) yanlış bir şey yapmış olmazsınız, hangisini seçtiğiniz fark etmeksizin hiçbir olayı kaçırmayacaksınız.</string>
|
||||||
|
<string name="signup_random_server_explain">Herhangi bir seçim yapmadan devam ederseniz dilinize göre bir sunucu seçeceğiz.</string>
|
||||||
|
<string name="server_filter_any_language">Herhangi Bir Dil</string>
|
||||||
|
<string name="server_filter_instant_signup">Koşulsuz Kayıt</string>
|
||||||
|
<string name="server_filter_manual_review">İnceleme Gerekli</string>
|
||||||
|
<string name="server_filter_any_signup_speed">Herhangi Biri</string>
|
||||||
|
<string name="server_filter_region_europe">Avrupa</string>
|
||||||
|
<string name="server_filter_region_north_america">Kuzey Amerika</string>
|
||||||
|
<string name="server_filter_region_south_america">Güney Amerika</string>
|
||||||
|
<string name="server_filter_region_africa">Afrika</string>
|
||||||
|
<string name="server_filter_region_asia">Asya</string>
|
||||||
|
<string name="server_filter_region_oceania">Okyanusya</string>
|
||||||
|
<string name="not_accepting_new_members">Yeni üyeler kabul etmiyor</string>
|
||||||
|
<string name="category_special_interests">Özel İlgi Alanları</string>
|
||||||
|
<string name="signup_passwords_dont_match">Parolalar eşleşmiyor</string>
|
||||||
|
<string name="pick_server_for_me">Benim için seç</string>
|
||||||
|
<string name="profile_setup">Profilini ayarla</string>
|
||||||
|
<string name="profile_setup_subtitle">Bunu istediğin bir zaman Profil sekmesinden tamamlayabilirsin.</string>
|
||||||
|
<string name="profile_setup_explanation">İstediğin herhangi bir şey için en fazla dört profil alanı ekleyebilirsin. Konum, linkler -ne isterseniz.</string>
|
||||||
|
<string name="popular_on_mastodon">Mastodon\'da Popüler</string>
|
||||||
|
<string name="follow_all">Hepsini takip et</string>
|
||||||
|
<string name="server_rules_disagree">Reddet</string>
|
||||||
|
<string name="privacy_policy_explanation">Kısacası: Hiçbir veri işlemiyor ya da toplamıyoruz.</string>
|
||||||
<!-- %s is server domain -->
|
<!-- %s is server domain -->
|
||||||
|
<string name="server_policy_disagree">%s\'yi reddet</string>
|
||||||
|
<string name="profile_bio">Hakkımda</string>
|
||||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
|
<string name="sending_follows">Hesaplar takip ediliyor…</string>
|
||||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||||
|
<string name="signup_email_domain_blocked">%1$s sunucusu %2$s mail uzantısı ile hesap oluşturmaya izin vermiyor. Farklı bir mail deneyebilir ya da <a>farklı bir sunucu seçebilirsiniz</a>.</string>
|
||||||
|
<string name="signup_username_taken">Bu kullanıcı adı kullanılıyor.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -259,4 +259,8 @@
|
|||||||
<string name="sk_unfinished_attachments_message">Деякі вкладення не повністю завантажилися.</string>
|
<string name="sk_unfinished_attachments_message">Деякі вкладення не повністю завантажилися.</string>
|
||||||
<string name="sk_spectator_mode">Режим глядача</string>
|
<string name="sk_spectator_mode">Режим глядача</string>
|
||||||
<string name="sk_settings_hide_interaction">Сховати кнопки взаємодії</string>
|
<string name="sk_settings_hide_interaction">Сховати кнопки взаємодії</string>
|
||||||
|
<string name="sk_follow_as">Підписатися з іншого облікового запису</string>
|
||||||
|
<string name="sk_followed_as">Відстежується з %s</string>
|
||||||
|
<string name="sk_settings_hide_fab">Автоматично ховати кнопку компонування</string>
|
||||||
|
<string name="sk_in_reply">У відповідь</string>
|
||||||
</resources>
|
</resources>
|
||||||
11
mastodon/src/main/res/values-ur-rIN/strings.xml
Normal file
11
mastodon/src/main/res/values-ur-rIN/strings.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<!-- %s is the email address -->
|
||||||
|
<!-- translators: %,d is a valid placeholder, it formats the number with locale-dependent grouping separators -->
|
||||||
|
<!-- %s is version like 1.2.3 -->
|
||||||
|
<!-- %s is version like 1.2.3 -->
|
||||||
|
<!-- %s is file size -->
|
||||||
|
<!-- %s is server domain -->
|
||||||
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
|
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||||
|
</resources>
|
||||||
@@ -15,8 +15,8 @@
|
|||||||
<string name="notifications">通知</string>
|
<string name="notifications">通知</string>
|
||||||
<string name="user_followed_you">已跟隨您</string>
|
<string name="user_followed_you">已跟隨您</string>
|
||||||
<string name="user_sent_follow_request">傳送跟隨請求給您</string>
|
<string name="user_sent_follow_request">傳送跟隨請求給您</string>
|
||||||
<string name="user_favorited">最愛了您的嘟文</string>
|
<string name="user_favorited">已將您的嘟文加入最愛</string>
|
||||||
<string name="notification_boosted">轉嘟了您的嘟文</string>
|
<string name="notification_boosted">已轉嘟您的嘟文</string>
|
||||||
<string name="poll_ended">投票已結束</string>
|
<string name="poll_ended">投票已結束</string>
|
||||||
<string name="time_seconds">%d 秒</string>
|
<string name="time_seconds">%d 秒</string>
|
||||||
<string name="time_minutes">%d 分</string>
|
<string name="time_minutes">%d 分</string>
|
||||||
@@ -141,7 +141,7 @@
|
|||||||
<string name="report_reason_violation_subtitle">您知道它違反特定規則</string>
|
<string name="report_reason_violation_subtitle">您知道它違反特定規則</string>
|
||||||
<string name="report_reason_other">其他原因</string>
|
<string name="report_reason_other">其他原因</string>
|
||||||
<string name="report_reason_other_subtitle">這個問題不屬於其他分類</string>
|
<string name="report_reason_other_subtitle">這個問題不屬於其他分類</string>
|
||||||
<string name="report_choose_rule">違反了哪些規則?</string>
|
<string name="report_choose_rule">已違反哪些規則?</string>
|
||||||
<string name="report_choose_rule_subtitle">請選擇所有適用的選項</string>
|
<string name="report_choose_rule_subtitle">請選擇所有適用的選項</string>
|
||||||
<string name="report_choose_posts">是否有能佐證這份檢舉之嘟文?</string>
|
<string name="report_choose_posts">是否有能佐證這份檢舉之嘟文?</string>
|
||||||
<string name="report_choose_posts_subtitle">請選擇所有適用的選項</string>
|
<string name="report_choose_posts_subtitle">請選擇所有適用的選項</string>
|
||||||
@@ -297,7 +297,7 @@
|
|||||||
<string name="load_missing_posts">讀取錯過的嘟文</string>
|
<string name="load_missing_posts">讀取錯過的嘟文</string>
|
||||||
<string name="follow_back">跟隨回去</string>
|
<string name="follow_back">跟隨回去</string>
|
||||||
<string name="button_follow_pending">等待中</string>
|
<string name="button_follow_pending">等待中</string>
|
||||||
<string name="follows_you">跟隨了您</string>
|
<string name="follows_you">已跟隨您</string>
|
||||||
<string name="manually_approves_followers">手動審核跟隨者</string>
|
<string name="manually_approves_followers">手動審核跟隨者</string>
|
||||||
<string name="current_account">目前帳號</string>
|
<string name="current_account">目前帳號</string>
|
||||||
<string name="log_out_account">登出 %s</string>
|
<string name="log_out_account">登出 %s</string>
|
||||||
@@ -408,6 +408,6 @@
|
|||||||
<!-- Shown in a progress dialog when you tap "follow all" -->
|
<!-- Shown in a progress dialog when you tap "follow all" -->
|
||||||
<string name="sending_follows">正在跟隨使用者...</string>
|
<string name="sending_follows">正在跟隨使用者...</string>
|
||||||
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
<!-- %1$s is server domain, %2$s is email domain. You can reorder these placeholders to fit your language better. -->
|
||||||
<string name="signup_email_domain_blocked">%1$s 不允許 %2$s 之信箱註冊。請重新試試另一個電子信箱服務商,或 <a> 挑選另一個伺服器 </a>。</string>
|
<string name="signup_email_domain_blocked">%1$s 不允許 %2$s 之信箱註冊。請重新試試另一個電子郵件服務商,或 <a> 挑選另一個伺服器 </a>。</string>
|
||||||
<string name="signup_username_taken">這個帳號已經被註冊過囉。</string>
|
<string name="signup_username_taken">這個帳號已經被註冊過囉。</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<dimen name="text_max_height">350dp</dimen>
|
<dimen name="text_max_height">220dp</dimen>
|
||||||
<dimen name="text_collapsed_height">150dp</dimen>
|
<dimen name="text_collapsed_height">150dp</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -16,6 +16,11 @@
|
|||||||
<string name="sk_image_description">Image description</string>
|
<string name="sk_image_description">Image description</string>
|
||||||
<string name="sk_visibility_unlisted">Unlisted</string>
|
<string name="sk_visibility_unlisted">Unlisted</string>
|
||||||
<string name="sk_settings_show_replies">Show replies</string>
|
<string name="sk_settings_show_replies">Show replies</string>
|
||||||
|
<string name="sk_quoting_user">Quoting %s</string>
|
||||||
|
<string name="sk_settings_reply_visibility">Reply visibility</string>
|
||||||
|
<string name="sk_settings_reply_visibility_all">All replies</string>
|
||||||
|
<string name="sk_settings_reply_visibility_following">Replies to my follows</string>
|
||||||
|
<string name="sk_settings_reply_visibility_self">Replies to me</string>
|
||||||
<string name="sk_settings_show_boosts">Show boosts</string>
|
<string name="sk_settings_show_boosts">Show boosts</string>
|
||||||
<string name="sk_settings_load_new_posts">Automatically load new posts</string>
|
<string name="sk_settings_load_new_posts">Automatically load new posts</string>
|
||||||
<string name="sk_settings_show_interaction_counts">Show interaction counts</string>
|
<string name="sk_settings_show_interaction_counts">Show interaction counts</string>
|
||||||
@@ -262,5 +267,9 @@
|
|||||||
<string name="sk_follow_as">Follow from other account</string>
|
<string name="sk_follow_as">Follow from other account</string>
|
||||||
<string name="sk_followed_as">Followed from %s</string>
|
<string name="sk_followed_as">Followed from %s</string>
|
||||||
<string name="sk_settings_hide_fab">Auto-hide Compose button</string>
|
<string name="sk_settings_hide_fab">Auto-hide Compose button</string>
|
||||||
|
<string name="sk_notification_action_replied">Sent reply to %s</string>
|
||||||
<string name="sk_in_reply">In reply</string>
|
<string name="sk_in_reply">In reply</string>
|
||||||
|
<string name="sk_reply_line_above_avatar">“In reply to” line above avatar</string>
|
||||||
|
<string name="sk_show_thread">Show thread</string>
|
||||||
|
<string name="sk_compact_reblog_reply_line">Compact reblog/reply line</string>
|
||||||
</resources>
|
</resources>
|
||||||
4
metadata/es/changelogs/77.txt
Normal file
4
metadata/es/changelogs/77.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
- Mantenga presionado el botón de seguimiento para seguir los perfiles de otra cuenta
|
||||||
|
- Opción para abrir perfiles en otra cuenta
|
||||||
|
- Ocultar automáticamente el botón de redacción al desplazarse hacia abajo en la línea de tiempo
|
||||||
|
- Solucione el bloqueo al abrir los perfiles de administrador del servidor
|
||||||
4
metadata/gl-ES/changelogs/77.txt
Normal file
4
metadata/gl-ES/changelogs/77.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
- Manter pulsado o botón de seguir para seguir perfís de outra conta
|
||||||
|
- Opción de abrir perfís de outra conta
|
||||||
|
- Auto-ocultar o botón de redacción cando deslizas cara abaixo na cronoloxía
|
||||||
|
- Arranxado o bloqueo ao abrir os perfís dos administradores do servidor
|
||||||
6
metadata/id/changelogs/76.txt
Normal file
6
metadata/id/changelogs/76.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
- Saringan ditingkatkan, termasuk kompatibilitas “Sembunyikan dengan peringatan”
|
||||||
|
- Rancang ulang halaman profil dengan metadata langsung di bawah bio
|
||||||
|
- Fungsi buka/tutup untuk kiriman yang sangat panjang
|
||||||
|
- Opsi untuk menambahkan peringatan konten pada balasan dengan “re:”
|
||||||
|
- Opsi untuk menyembunyikan tombol interaksi di lini masa
|
||||||
|
- Banyak perbaikan kutu, perubahan, dan peningkatan
|
||||||
4
metadata/id/changelogs/77.txt
Normal file
4
metadata/id/changelogs/77.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
- Tekan lama pada tombol ikuti untuk mengikuti profil dari akun lain
|
||||||
|
- Opsi untuk membuka profil di akun yang lain
|
||||||
|
- Sembunyikan tombol komposer secara otomatia ketika menggulir lini masa ke bawah
|
||||||
|
- Perbaiki kemogokan ketika membuka profil admin server
|
||||||
10
metadata/it-IT/changelogs/67.txt
Normal file
10
metadata/it-IT/changelogs/67.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
- Nuova home con timeline pubbliche
|
||||||
|
- Mostra annunci del server
|
||||||
|
- Testo scalato in base alle impostazioni di sistema
|
||||||
|
- Filtro migliorato (no, "Nascondi con avvertimento" non funziona ancora) da @thiagojedi
|
||||||
|
- Funzionalità di gestione delle liste
|
||||||
|
- Rimozione di follower con blocco morbido
|
||||||
|
- Respinte le connessioni con fascisti
|
||||||
|
- Risolto il non caricamento delle immagini se connessi all'istanza di Akkoma
|
||||||
|
- Risoluzioni di bug e miglioramenti UI
|
||||||
|
- Aggiunto il registro delle modiifche da @LucasGGamerM
|
||||||
9
metadata/it-IT/changelogs/74.txt
Normal file
9
metadata/it-IT/changelogs/74.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
- Le timelines possono essere fissate e riorganizzate
|
||||||
|
- Supporto per post solo locali
|
||||||
|
- Aggiunti indicatori per testi alternativi mancanti
|
||||||
|
- Migliorato l'editor del testo alternativo
|
||||||
|
- Aggiunta intestazione nella home per gli hashtag seguiti
|
||||||
|
- Più categorie di notifiche
|
||||||
|
- Aggiunta nuovamente la possibilità di aprire file
|
||||||
|
- Aggiunto avviso quando si salvano le bozze
|
||||||
|
- Aggiunta opzione per disabilitare il tasto "Visualizza nuovi post"
|
||||||
6
metadata/it-IT/changelogs/76.txt
Normal file
6
metadata/it-IT/changelogs/76.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
- Migliorati i filtri, compresa la compatibilità con "Nascondi con avvertimento"
|
||||||
|
- Ripensata la pagina del profilo con metadati sotto la bio
|
||||||
|
- Funzione mostra/nascondi per post molto lunghi
|
||||||
|
- Possibilità di iniziare le risposte a dei Content Warning con "re:"
|
||||||
|
- Possiblità di nascondere i pulsanti di interazione nello scorrimento della timeline
|
||||||
|
- Numerose correzioni di bug e miglioramenti
|
||||||
4
metadata/it-IT/changelogs/77.txt
Normal file
4
metadata/it-IT/changelogs/77.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
- Possibilità di seguire con un altro account con tocco prolungato
|
||||||
|
- Possibilità di aprire profili con un altro account
|
||||||
|
- Aggiunta la possibilità di nascondere il pulsante per pubblicare quando si scorre nella timeline
|
||||||
|
- Corretti crash nell'apertura di profili degli amministratori del server
|
||||||
@@ -4,8 +4,8 @@ Megalodon è una versione modificata dell' <a href="https://github.com/mastodon/
|
|||||||
|
|
||||||
- <b>Creazione di post non in lista</b>: Crea post pubblici senza farli mostrarli nei trend, hashtags o timeline pubbliche.
|
- <b>Creazione di post non in lista</b>: Crea post pubblici senza farli mostrarli nei trend, hashtags o timeline pubbliche.
|
||||||
- <b>Timeline federata</b>: Vedi tutti i post pubblici delle persone in tutte le istanze federate con la tua.
|
- <b>Timeline federata</b>: Vedi tutti i post pubblici delle persone in tutte le istanze federate con la tua.
|
||||||
|
- <b>Timeline personalizzate</b>: Fissa ogni lista o hashtag nella schermata home di Megalodon, per scorrere semplicemente tra i tuoi interessi e le tue persone preferite!
|
||||||
- <b>Bozze e post programmati</b>: Permette di preparare un post per essere pubblicato automaticamente in un momento specifico.
|
- <b>Bozze e post programmati</b>: Permette di preparare un post per essere pubblicato automaticamente in un momento specifico.
|
||||||
- <b>Visualizzatore della descrizione delle immagini</b>: Controlla velocemente se un'immagine o video ha un testo alternativo allegato.
|
|
||||||
- <b>Post fissati</b>: Fissa i tuoi post più importanti sul tuo profilo, e vedi i post fissati degli altri nella scheda "Fissati".
|
- <b>Post fissati</b>: Fissa i tuoi post più importanti sul tuo profilo, e vedi i post fissati degli altri nella scheda "Fissati".
|
||||||
- <b>Segui gli hashtags</b>: Vedi i nuovi post da hashtags specifici direttamente nella timeline Home seguendoli.
|
- <b>Segui gli hashtags</b>: Vedi i nuovi post da hashtags specifici direttamente nella timeline Home seguendoli.
|
||||||
- <b>Richieste di seguirti</b>: Accetta o rifiuta le richieste di seguirti dalle notifiche o dalla lista delle richieste.
|
- <b>Richieste di seguirti</b>: Accetta o rifiuta le richieste di seguirti dalle notifiche o dalla lista delle richieste.
|
||||||
|
|||||||
4
metadata/ko/changelogs/77.txt
Normal file
4
metadata/ko/changelogs/77.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
- 팔로우 버튼을 길게 눌러 다른 계정으로 프로필 팔로우
|
||||||
|
- 다른 계정으로 프로필을 열 수 있는 옵션
|
||||||
|
- 타임라인을 아래로 스크롤할 때 게시 버튼 자동으로 가리기
|
||||||
|
- 서버 관리자 프로필로 앱을 열 때 발생하는 오류 수정
|
||||||
4
metadata/pl/changelogs/77.txt
Normal file
4
metadata/pl/changelogs/77.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
- Długie naciśnięcie przycisku "obserwacji" teraz pozwoli ci obserwować profile z innego konta
|
||||||
|
- Opcja otwierania profili innym kontem
|
||||||
|
- Automatyczne ukrywanie przycisku pisania nowego posta podczas przewijania w dół osi czasu
|
||||||
|
- Naprawiono crash podczas otwierania profili administratora serwera
|
||||||
4
metadata/uk/changelogs/77.txt
Normal file
4
metadata/uk/changelogs/77.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
- Затискання кнопки підписатися, щоб підписатися на профілі з іншого облікового запису
|
||||||
|
- Можливість відкривати профілі в іншому обліковому записі
|
||||||
|
- Автоприховування кнопки компонування під час гортання стрічки вниз
|
||||||
|
- Виправлено збій під час відкриття профілів адміністратора сервера
|
||||||
@@ -1 +1 @@
|
|||||||
Mastodon for Android 但粉色并且更多功能
|
安卓平台的粉色 Mastodon 客户端,拥有更多功能
|
||||||
|
|||||||
Reference in New Issue
Block a user