Merge branch 'develop'

This commit is contained in:
Thomas 2020-06-06 18:47:14 +02:00
commit ce858751b1
53 changed files with 1567 additions and 512 deletions

View File

@ -6,8 +6,8 @@ android {
defaultConfig {
minSdkVersion 19
targetSdkVersion 29
versionCode 368
versionName "2.35.4"
versionCode 369
versionName "2.35.5"
multiDexEnabled true
renderscriptTargetApi 28 as int
renderscriptSupportModeEnabled true
@ -89,7 +89,7 @@ dependencies {
annotationProcessor 'com.android.support:support-annotations:28.0.0'
implementation "org.conscrypt:conscrypt-android:2.4.0"
implementation "com.evernote:android-job:1.2.6"
implementation "com.google.code.gson:gson:2.8.5"
implementation "com.google.code.gson:gson:2.8.6"
implementation "com.google.guava:guava:28.2-android"
implementation "com.github.chrisbanes:PhotoView:2.3.0"
implementation 'com.r0adkll:slidableactivity:2.1.0'

View File

@ -111,6 +111,7 @@
android:name="app.fedilab.android.activities.MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:launchMode="singleTask"
android:theme="@style/AppThemeDark_NoActionBar"
android:windowSoftInputMode="adjustResize">
<intent-filter>

View File

@ -1,12 +0,0 @@
Added
- Unshortened URLs can be copied or shared
- Trends in tags search
- Image are shared/stored from cache
- Message when a media is successfully downloaded
Fixed
- Issue with polls not displayed
- Notifications not stopped
- Pleroma wysiwyg
- Login issue
- Some crashes

View File

@ -1,6 +0,0 @@
Added
- Follow Nitter feeds (ie: Twitter account timelines)
Fixed
- Crash issue when no live notifications
- Trends can't be hidden

View File

@ -1,14 +0,0 @@
Added
- Original & boost dates added separately
- Follow request notifications
- Identity proofs support
Changed
- Media are preloaded when scrolling
- Improve live/delayed notifications
Fixed
- Counter for mentions
- Preview images displayed twice
- Media not saved on Android 10+
- Issue when following instances/pinging tags

View File

@ -1,6 +0,0 @@
Added
- Friendica: Authorize/Reject follow requests
Fixed
- Not cropped media
- Crash when starting the app

View File

@ -1,6 +0,0 @@
Added
- Friendica: Authorize/Reject follow requests
Fixed
- Not cropped media
- Crash when starting the app

View File

@ -1,13 +0,0 @@
Added
- Pixelfed: post media to stories
- Long press bio to open the contextual menu
- Allow to invite with Pleroma
Changed
- Import theme always visible
- Improve login activity
Fixed
- Filter with regex
- Issues with talk back and magnifying glass
- Some crashes

View File

@ -1,5 +0,0 @@
Fixed:
- Mentions with delete & re-draft for Pleroma accounts
- Nitter timelines with refresh
- Remove notification bar for Android 8-
- Fix "No Internet connection" error on some instances when posting

View File

@ -1,13 +0,0 @@
Added:
- Català language
- Push notifications for Friendica & GNU Social
- Add follow/unfollow buttons for Pixelfed
- View your own story (need to wait the endpoint)
- Increase max bio chars to 500 for Pleroma
Fixed:
- Proxy not applied with embedded videos
- Fix no toots that remains displayed on Nitter timelines
- Avoid to lose composed message when not sent
- Notifications not pushed
- Fix some crashes

View File

@ -1,7 +0,0 @@
Added:
- Text selectable for fields in profiles
Fixed:
- Fix the scrolling issue in timelines
- Peertube videos crashes
- Color of the compose menu for the light theme

View File

@ -1,9 +0,0 @@
Added:
- Announcements for Mastodon with reactions
- Pleroma: reactions in posts
Changed:
- Filters changed to speed-up the scroll
Fixed:
- Custom emojis not displayed in compose activity

View File

@ -1,14 +0,0 @@
Added:
- Allow to edit searches
Changed:
- Move the favourite item in menu
Fixed:
- Filters not working
- Crash when sharing http URLs
- Missing ogg image when sharing
- Extra space with quick replies
- Crash when doing searches
- Fix crash when clicking on conversations
- Fix crash when editing profile

View File

@ -1,4 +0,0 @@
Fixed:
- Crash due to a library update
- Missing animate profile pictures
- Fix some color issues

View File

@ -1,9 +0,0 @@
Changed:
- Improve memory management
- Improve scroll
- One logout entry in the menu (it will remove the account from the app)
- Clear push notifications when visiting notifications tab
Fixed:
- Long press to store media download the preview image
- Fix pagination with Nitter timelines

View File

@ -1,11 +0,0 @@
Changed:
- Improve memory management
- Improve scroll
- Poll layouts cleaner
- One logout entry in the menu (it will remove the account from the app)
- Clear push notifications when visiting notifications tab
Fixed:
- Long press to store media download the preview image
- Fix pagination with Nitter timelines
- Avatars not displayed for Peertube

View File

@ -1,8 +0,0 @@
Added:
- Gif support for some keyboards.
- Support animated emoji for reactions
Fixed:
- Crash when playing Youtube videos in timelines
- Announcements not displayed
- A crash due to recent changes

View File

@ -1,9 +0,0 @@
Added:
- Gif support for some keyboards.
- Support animated emoji for reactions
Fixed:
- Crash when playing Youtube videos in timelines
- Announcements not displayed
- A crash due to recent changes
- +Fix a crash due to polls

View File

@ -1,3 +0,0 @@
Fixed:
- Empty content for Friendica/GNU accounts
- Username can't be changed in profile

View File

@ -1,4 +0,0 @@
Fixed:
- Lot of crashes 🥺🥺😱
- Push notifications not working
- Some issues with filters

View File

@ -0,0 +1,10 @@
Added:
- Silesian localization
Changed:
- Add Silesian in language picker
Fixed:
- Some URLs not clickable
- Empty home timeline
- Some crashes when scrolling

View File

@ -6,7 +6,6 @@ import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.ActionMode;
import android.view.View;
import android.widget.Toast;
@ -25,7 +24,6 @@ import org.jetbrains.annotations.NotNull;
import java.util.Timer;
import app.fedilab.android.BuildConfig;
import app.fedilab.android.helper.Helper;
import es.dmoral.toasty.Toasty;

View File

@ -593,7 +593,12 @@ public class LoginActivity extends BaseActivity {
editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, token);
editor.apply();
//Update the account with the token;
new UpdateAccountInfoAsyncTask(LoginActivity.this, token, client_id, client_secret, refresh_token, instance, socialNetwork).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
if (instance != null) {
new UpdateAccountInfoAsyncTask(LoginActivity.this, token, client_id, client_secret, refresh_token, instance, socialNetwork).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
connectionButton.setEnabled(true);
Toasty.error(LoginActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}

View File

@ -207,6 +207,7 @@ import static app.fedilab.android.helper.Helper.THEME_BLACK;
import static app.fedilab.android.helper.Helper.THEME_DARK;
import static app.fedilab.android.helper.Helper.THEME_LIGHT;
import static app.fedilab.android.helper.Helper.countWithEmoji;
import static app.fedilab.android.helper.Helper.isValidContextForGlide;
/**
@ -646,7 +647,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
}
}
public static String manageMentions(Context context, String userIdReply, Status tootReply) {
public static String manageMentions(String userIdReply, Status tootReply) {
String contentView = "";
//Retrieves mentioned accounts + OP and adds them at the beginin of the toot
ArrayList<String> mentionedAccountsAdded = new ArrayList<>();
@ -1340,53 +1341,57 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
it.remove();
}
if (fileName != null) {
Glide.with(imageView.getContext())
.asBitmap()
.load(fileName)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
}
if (isValidContextForGlide(imageView.getContext())) {
Glide.with(imageView.getContext())
.asBitmap()
.load(fileName)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
}
});
}
}
}
} else {
String finalUrl = url;
Glide.with(imageView.getContext())
.asBitmap()
.load(url)
.error(Glide.with(imageView).asBitmap().load(R.drawable.ic_audio_wave))
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
if (displayWYSIWYG()) {
url_for_media = finalUrl;
Iterator it = filesMap.entrySet().iterator();
String fileName = null;
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
fileName = (String) pair.getKey();
it.remove();
}
if (fileName != null && fileName.contains("fedilabins_")) {
wysiwyg.insertImage(resource);
if (isValidContextForGlide(imageView.getContext())) {
String finalUrl = url;
Glide.with(imageView.getContext())
.asBitmap()
.load(url)
.error(Glide.with(imageView).asBitmap().load(R.drawable.ic_audio_wave))
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
if (displayWYSIWYG()) {
url_for_media = finalUrl;
Iterator it = filesMap.entrySet().iterator();
String fileName = null;
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
fileName = (String) pair.getKey();
it.remove();
}
if (fileName != null && fileName.contains("fedilabins_")) {
wysiwyg.insertImage(resource);
}
}
}
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
}
});
}
}
@ -2246,8 +2251,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
if (namebar != null && namebar.getParent() != null)
((ViewGroup) namebar.getParent()).removeView(namebar);
}
List<Attachment> tmp_attachment = new ArrayList<>();
tmp_attachment.addAll(attachments);
List<Attachment> tmp_attachment = new ArrayList<>(attachments);
attachments.removeAll(tmp_attachment);
tmp_attachment.clear();
}
@ -2585,8 +2589,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
if (namebar != null && namebar.getParent() != null)
((ViewGroup) namebar.getParent()).removeView(namebar);
}
List<Attachment> tmp_attachment = new ArrayList<>();
tmp_attachment.addAll(attachments);
List<Attachment> tmp_attachment = new ArrayList<>(attachments);
attachments.removeAll(tmp_attachment);
tmp_attachment.clear();
}
@ -3069,9 +3072,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
}
});
imageView.setTag(attachment.getId());
imageView.setOnClickListener(view -> {
imageView.setOnClickListener(view1 -> showAddDescription(attachment));
});
imageView.setOnClickListener(view -> imageView.setOnClickListener(view1 -> showAddDescription(attachment)));
imageView.setOnLongClickListener(view -> {
showRemove(imageView.getId());
return false;
@ -3396,7 +3397,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate,
private void displayPollPopup() {
AlertDialog.Builder alertPoll = new AlertDialog.Builder(TootActivity.this, style);
alertPoll.setTitle(R.string.create_poll);
View view = getLayoutInflater().inflate(R.layout.popup_poll, null);
View view = getLayoutInflater().inflate(R.layout.popup_poll, new LinearLayout(TootActivity.this), false);
alertPoll.setView(view);
Spinner poll_choice = view.findViewById(R.id.poll_choice);
Spinner poll_duration = view.findViewById(R.id.poll_duration);

View File

@ -190,7 +190,7 @@ public class WebviewActivity extends BaseActivity {
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if (!peertubeLink)
setCount(this, "0");
setCount(WebviewActivity.this, "0");
defaultMenu = menu;
return super.onPrepareOptionsMenu(menu);
}

View File

@ -150,7 +150,9 @@ public class WebviewConnectActivity extends BaseActivity {
}
});
if (instance == null) {
finish();
}
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
@ -200,6 +202,7 @@ public class WebviewConnectActivity extends BaseActivity {
});
webView.loadUrl(LoginActivity.redirectUserToAuthorizeAndLogin(WebviewConnectActivity.this, clientId, instance));
}
@Override

View File

@ -139,7 +139,7 @@ public class Account implements Parcelable {
private String invite_request;
private String created_by_application_id;
private String invited_by_account_id;
private boolean emojiFound = false;
private transient boolean emojiFound = false;
public Account() {
}
@ -202,7 +202,7 @@ public class Account implements Parcelable {
public static void makeAccountNameEmoji(final WeakReference<Context> contextWeakReference, Account account) {
Context context = contextWeakReference.get();
if ((context instanceof Activity && ((Activity) context).isFinishing()) || account.getDisplay_name() == null)
if ((context instanceof Activity && ((Activity) context).isFinishing()) || account == null || account.getDisplay_name() == null)
return;
account.setDisplayNameSpan(new SpannableString(account.getDisplay_name()));
@ -723,7 +723,7 @@ public class Account implements Parcelable {
int startPositionTar = spannableString.toString().indexOf("@" + this.getMoved_to_account().getAcct());
int endPositionTar = startPositionTar + ("@" + this.getMoved_to_account().getAcct()).length();
final Account idTar = this.getMoved_to_account();
if (endPositionTar <= spannableString.toString().length() && endPositionTar >= startPositionTar)
if (startPositionTar >= 0 && endPositionTar <= spannableString.toString().length() && endPositionTar >= startPositionTar)
spannableString.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@ -801,7 +801,7 @@ public class Account implements Parcelable {
int matchStart = matcher.start(0);
int matchEnd = matcher.end();
final String url = fieldSpan.toString().substring(matchStart, matchEnd);
if (matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
if (matchStart >= 0 && matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
fieldSpan.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@ -832,7 +832,7 @@ public class Account implements Parcelable {
int matchStart = matcher.start(0);
int matchEnd = matcher.end();
final String email = fieldSpan.toString().substring(matchStart, matchEnd);
if (matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
if (matchStart >= 0 && matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
fieldSpan.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@ -865,7 +865,7 @@ public class Account implements Parcelable {
int matchStart = matcher.start(1);
int matchEnd = matcher.end();
final String tag = fieldSpan.toString().substring(matchStart, matchEnd);
if (matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart)
if (matchStart >= 0 && matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart)
fieldSpan.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@ -935,7 +935,7 @@ public class Account implements Parcelable {
int matchStart = matcher.start(0);
int matchEnd = matcher.end();
final String url = fieldSpan.toString().substring(matchStart, matchEnd);
if (matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
if (matchStart >= 0 && matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
fieldSpan.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {

View File

@ -145,17 +145,17 @@ public class Status implements Parcelable {
private Card card;
private String language;
private boolean isTranslated = false;
private boolean isEmojiFound = false;
private boolean isPollEmojiFound = false;
private boolean isImageFound = false;
private boolean isEmojiTranslateFound = false;
private transient boolean isEmojiFound = false;
private transient boolean isPollEmojiFound = false;
private transient boolean isImageFound = false;
private transient boolean isEmojiTranslateFound = false;
private boolean isTranslationShown = false;
private boolean isNew = false;
private boolean isVisible = true;
private boolean fetchMore = false;
private String content, contentCW, contentTranslated;
private SpannableString contentSpan, contentSpanCW, contentSpanTranslated;
private RetrieveFeedsAsyncTask.Type type;
private transient RetrieveFeedsAsyncTask.Type type;
private int itemViewType;
private String conversationId;
private boolean isExpanded = false;
@ -184,9 +184,9 @@ public class Status implements Parcelable {
private List<String> imageURL;
private int viewType;
private boolean isFocused = false;
private long db_id;
private boolean commentsFetched = false;
private List<Status> comments = new ArrayList<>();
private transient long db_id;
private transient boolean commentsFetched = false;
private transient List<Status> comments = new ArrayList<>();
public Status() {
}
@ -423,6 +423,7 @@ public class Status implements Parcelable {
HashMap<String, String> targetedURL = new HashMap<>();
HashMap<String, Account> accountsMentionUnknown = new HashMap<>();
String liveInstance = Helper.getLiveInstance(context);
int i = 1;
while (matcher.find()) {
String key;
@ -433,14 +434,14 @@ public class Status implements Parcelable {
key = key.substring(1);
if (!key.startsWith("#") && !key.startsWith("@") && !key.trim().equals("") && !Objects.requireNonNull(matcher.group(2)).contains("search?tag=") && !Objects.requireNonNull(matcher.group(2)).contains(liveInstance + "/users/")) {
String url;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
url = Html.fromHtml(matcher.group(2), Html.FROM_HTML_MODE_LEGACY).toString();
} else {
url = Html.fromHtml(matcher.group(2)).toString();
}
targetedURL.put(key, url);
targetedURL.put(key + "|" + i, url);
i++;
} else if (key.startsWith("@") || Objects.requireNonNull(matcher.group(2)).contains(liveInstance + "/users/")) {
String acct;
String url;
@ -524,7 +525,7 @@ public class Status implements Parcelable {
int matchStart = matcher.start(2);
int matchEnd = matcher.end();
final String twittername = matcher.group(2);
if (matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
if (matchStart >= 0 && matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
spannableStringT.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@ -573,7 +574,7 @@ public class Status implements Parcelable {
endPosition = startPosition + key.length();
}
//Accounts can be mentioned several times so we have to loop
if (endPosition <= spannableStringT.toString().length() && endPosition >= startPosition)
if (startPosition >= 0 && endPosition <= spannableStringT.toString().length() && endPosition >= startPosition)
spannableStringT.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@ -603,14 +604,19 @@ public class Status implements Parcelable {
}
if (targetedURL.size() > 0) {
Iterator it = targetedURL.entrySet().iterator();
int endPosition = 0;
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
String key = (String) pair.getKey();
String key = ((String) pair.getKey()).split("\\|")[0];
String url = (String) pair.getValue();
if (spannableStringT.toString().toLowerCase().contains(key.toLowerCase())) {
//Accounts can be mentioned several times so we have to loop
int startPosition = spannableStringT.toString().toLowerCase().indexOf(key.toLowerCase());
int endPosition = startPosition + key.length();
int startPosition = spannableStringT.toString().toLowerCase().indexOf(key.toLowerCase(), endPosition);
if (startPosition < 0) {
startPosition = 0;
}
endPosition = startPosition + key.length();
if (key.contains("") && !key.endsWith("")) {
key = key.split("")[0] + "";
SpannableStringBuilder ssb = new SpannableStringBuilder();
@ -782,7 +788,7 @@ public class Status implements Parcelable {
int matchStart = matcher.start(1);
int matchEnd = matcher.end();
final String tag = spannableStringT.toString().substring(matchStart, matchEnd);
if (matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
if (matchStart >= 0 && matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
spannableStringT.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@ -791,6 +797,7 @@ public class Status implements Parcelable {
Bundle b = new Bundle();
b.putString("tag", tag.substring(1));
intent.putExtras(b);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
@ -811,7 +818,7 @@ public class Status implements Parcelable {
int matchStart = matcher.start(1);
int matchEnd = matcher.end();
final String groupname = spannableStringT.toString().substring(matchStart, matchEnd);
if (matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
if (matchStart >= 0 && matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
spannableStringT.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@ -864,7 +871,7 @@ public class Status implements Parcelable {
int matchStart = matcherALink.start();
int matchEnd = matcherALink.end();
final String url = contentSpanTranslated.toString().substring(matcherALink.start(1), matcherALink.end(1));
if (matchEnd <= contentSpanTranslated.toString().length() && matchEnd >= matchStart)
if (matchStart >= 0 && matchEnd <= contentSpanTranslated.toString().length() && matchEnd >= matchStart)
contentSpanTranslated.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@ -1307,7 +1314,7 @@ public class Status implements Parcelable {
}
public String getContent() {
return content;
return content.replaceAll("\\p{C}", "?");
}
public void setContent(Context context, String content) {

View File

@ -459,7 +459,7 @@ public class PixelfedListAdapter extends RecyclerView.Adapter implements OnPostA
InputMethodManager.SHOW_FORCED, 0);
EditText content_cw = new EditText(context);
content_cw.setText(status.getReblog() != null ? status.getReblog().getSpoiler_text() : status.getSpoiler_text());
String content = TootActivity.manageMentions(context, userId, status.getReblog() != null ? status.getReblog() : status);
String content = TootActivity.manageMentions(userId, status.getReblog() != null ? status.getReblog() : status);
TextWatcher textWatcher = PixelfedComposeActivity.initializeTextWatcher(context, social, holder.quick_reply_text, holder.toot_space_left, null, null, PixelfedListAdapter.this, PixelfedListAdapter.this, PixelfedListAdapter.this);
holder.quick_reply_text.addTextChangedListener(textWatcher);
holder.quick_reply_text.setText(content);

View File

@ -480,6 +480,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
public void onPostStatusAction(APIResponse apiResponse) {
if (apiResponse.getError() != null) {
Toasty.error(context, apiResponse.getError().getError(), Toast.LENGTH_SHORT).show();
storeToot();
return;
}
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
@ -487,7 +488,6 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
String instance = Helper.getLiveInstance(context);
boolean split_toot = sharedpreferences.getBoolean(Helper.SET_AUTOMATICALLY_SPLIT_TOOTS + userId + instance, false);
if (split_toot && splitToot != null && stepSpliToot < splitToot.size()) {
String tootContent = splitToot.get(stepSpliToot);
stepSpliToot += 1;

View File

@ -2406,6 +2406,10 @@ public class ContentSettingsFragment extends Fragment implements OnRetrieveRemot
editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "ca");
editor.commit();
break;
case 22:
editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "szl");
editor.commit();
break;
}
PackageManager packageManager = context.getPackageManager();

View File

@ -1062,7 +1062,6 @@ public class DisplayStatusFragment extends Fragment implements OnPostActionInter
@Override
public void onRetrieveFeedsAfterBookmark(APIResponse apiResponse) {
if (statusListAdapter == null && pixelfedListAdapter == null)
return;
if (apiResponse == null || (apiResponse.getError() != null && apiResponse.getError().getStatusCode() != 404 && apiResponse.getError().getStatusCode() != 501)) {
@ -1078,36 +1077,42 @@ public class DisplayStatusFragment extends Fragment implements OnPostActionInter
return;
}
List<Status> statuses = apiResponse.getStatuses();
if (statuses == null || statuses.size() == 0 || this.statuses == null)
return;
//Find the position of toots between those already present
int position = 0;
if (position < this.statuses.size() && statuses.get(0).getCreated_at() != null && this.statuses.get(position).getCreated_at() != null) {
while (position < this.statuses.size() && statuses.get(0).getCreated_at().before(this.statuses.get(position).getCreated_at())) {
position++;
}
}
ArrayList<Status> tmpStatuses = new ArrayList<>();
for (Status tmpStatus : statuses) {
//Put the toot at its place in the list (id desc)
if (!apiResponse.isFetchmore() && this.statuses.size() > 0 && !this.statuses.contains(tmpStatus) && tmpStatus.getCreated_at() != null && this.statuses.get(0).getCreated_at() != null && tmpStatus.getCreated_at().after(this.statuses.get(0).getCreated_at())) { //Element not already added
//Mark status at new ones when their id is greater than the last read toot id
if ((type == RetrieveFeedsAsyncTask.Type.HOME || type == RetrieveFeedsAsyncTask.Type.PF_HOME) && lastReadTootDate != null && tmpStatus.getCreated_at().after(lastReadTootDate)) {
tmpStatus.setNew(true);
MainActivity.countNewStatus++;
if (this.statuses.size() > 0) {
for (Status tmpStatus : statuses) {
//Put the toot at its place in the list (id desc)
if (!apiResponse.isFetchmore() && this.statuses.size() > 0 && !this.statuses.contains(tmpStatus) && tmpStatus.getCreated_at() != null && this.statuses.get(0).getCreated_at() != null && tmpStatus.getCreated_at().after(this.statuses.get(0).getCreated_at())) { //Element not already added
//Mark status at new ones when their id is greater than the last read toot id
if ((type == RetrieveFeedsAsyncTask.Type.HOME || type == RetrieveFeedsAsyncTask.Type.PF_HOME) && lastReadTootDate != null && tmpStatus.getCreated_at().after(lastReadTootDate)) {
tmpStatus.setNew(true);
MainActivity.countNewStatus++;
}
tmpStatuses.add(tmpStatus);
} else if (apiResponse.isFetchmore() && !this.statuses.contains(tmpStatus)) { //Element not already added
//Mark status at new ones when their id is greater than the last read toot id
if ((type == RetrieveFeedsAsyncTask.Type.HOME || type == RetrieveFeedsAsyncTask.Type.PF_HOME) && lastReadTootDate != null && tmpStatus.getCreated_at().after(lastReadTootDate)) {
tmpStatus.setNew(true);
MainActivity.countNewStatus++;
}
tmpStatuses.add(tmpStatus);
}
tmpStatuses.add(tmpStatus);
} else if (apiResponse.isFetchmore() && !this.statuses.contains(tmpStatus)) { //Element not already added
//Mark status at new ones when their id is greater than the last read toot id
if ((type == RetrieveFeedsAsyncTask.Type.HOME || type == RetrieveFeedsAsyncTask.Type.PF_HOME) && lastReadTootDate != null && tmpStatus.getCreated_at().after(lastReadTootDate)) {
tmpStatus.setNew(true);
MainActivity.countNewStatus++;
}
tmpStatuses.add(tmpStatus);
}
} else {
this.statuses.addAll(statuses);
tmpStatuses.addAll(statuses);
}
try {
((MainActivity) context).updateHomeCounter();
} catch (Exception ignored) {

View File

@ -3135,6 +3135,7 @@ public class Helper {
finalUrl = "http://" + url;
b.putString("url", finalUrl);
intent.putExtras(b);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
} else {
boolean custom_tabs = sharedpreferences.getBoolean(Helper.SET_CUSTOM_TABS, true);
@ -3149,6 +3150,7 @@ public class Helper {
}
} else {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse(url));
try {
context.startActivity(intent);
@ -3733,13 +3735,15 @@ public class Helper {
return 20;
case "ca":
return 21;
case "szl":
return 22;
default:
return 0;
}
}
public static String[] getLocales(Context context) {
String[] locale = new String[22];
String[] locale = new String[23];
locale[0] = context.getString(R.string.default_language);
locale[1] = context.getString(R.string.english);
locale[2] = context.getString(R.string.french);
@ -3762,6 +3766,7 @@ public class Helper {
locale[19] = context.getString(R.string.norwegian);
locale[20] = context.getString(R.string.kabyle);
locale[21] = context.getString(R.string.catalan);
locale[22] = context.getString(R.string.silesian);
return locale;
}

View File

@ -126,9 +126,9 @@ public class LiveNotificationDelayedService extends Service {
.setContentTitle(getString(R.string.top_notification))
.setSmallIcon(getNotificationIcon(LiveNotificationDelayedService.this))
.setContentText(getString(R.string.top_notification_message, String.valueOf(totalAccount), String.valueOf(eventsCount))).build();
if( notification != null) {
if (notification != null) {
startForeground(1, notification);
}else{
} else {
return;
}
}
@ -319,9 +319,9 @@ public class LiveNotificationDelayedService extends Service {
.setSmallIcon(getNotificationIcon(LiveNotificationDelayedService.this))
.setContentText(getString(R.string.top_notification_message, String.valueOf(totalAccount), String.valueOf(eventsCount))).build();
if( notificationChannel != null) {
if (notificationChannel != null) {
startForeground(1, notificationChannel);
}else{
} else {
return;
}
}

View File

@ -140,9 +140,9 @@ public class LiveNotificationService extends Service implements NetworkStateRece
.setSmallIcon(getNotificationIcon(LiveNotificationService.this))
.setContentText(getString(R.string.top_notification_message, String.valueOf(totalAccount), String.valueOf(eventsCount))).build();
if( notification != null) {
if (notification != null) {
startForeground(1, notification);
}else{
} else {
return;
}
}
@ -321,9 +321,9 @@ public class LiveNotificationService extends Service implements NetworkStateRece
.setContentTitle(getString(R.string.top_notification))
.setSmallIcon(getNotificationIcon(LiveNotificationService.this))
.setContentText(getString(R.string.top_notification_message, String.valueOf(totalAccount), String.valueOf(eventsCount))).build();
if( notificationChannel != null) {
if (notificationChannel != null) {
startForeground(1, notificationChannel);
}else{
} else {
return;
}
}

View File

@ -78,7 +78,10 @@ public class StatusCacheDAO {
values.put(Sqlite.COL_ACCOUNT, Helper.accountToStringStorage(status.getAccount()));
values.put(Sqlite.COL_IN_REPLY_TO_ID, status.getIn_reply_to_id());
values.put(Sqlite.COL_IN_REPLY_TO_ACCOUNT_ID, status.getIn_reply_to_account_id());
values.put(Sqlite.COL_REBLOG, status.getReblog() != null ? Helper.statusToStringStorage(status.getReblog()) : null);
try {
values.put(Sqlite.COL_REBLOG, status.getReblog() != null ? Helper.statusToStringStorage(status.getReblog()) : "");
} catch (Exception ignored) {
}
values.put(Sqlite.COL_CONTENT, status.getContent());
values.put(Sqlite.COL_EMOJIS, status.getEmojis() != null ? Helper.emojisToStringStorage(status.getEmojis()) : null);
values.put(Sqlite.COL_POLL, status.getPoll() != null ? Helper.pollToStringStorage(status.getPoll()) : null);

View File

@ -1032,9 +1032,9 @@
<string name="set_nitter">استبدل تويتر بـ Nitter</string>
<string name="set_nitter_indication">إن Nitter واجهة أمامية بديلة لـ Twitter تركز على الخصوصية.</string>
<string name="set_nitter_host">أدخل مضيفك المخصص أو اتركه فارغًا لاستخدام nitter.net</string>
<string name="set_bibliogram">Replace Instagram with Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram is an open source alternative Instagram front-end focused on privacy.</string>
<string name="set_bibliogram_host">Enter your custom host or leave blank for using bibliogram.art</string>
<string name="set_bibliogram">استبدال Instagram بـ Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram هو بديل مفتوح المصدر لـ Instagram يركز على الخصوصية.</string>
<string name="set_bibliogram_host">أدخل مضيفك المخصص أو اتركه فارغًا لاستخدام bibliogram.art</string>
<string name="set_hide_status_bar">أخفِ شريط إشعارات Fedilab</string>
<string name="set_hide_status_bar_indication">لإخفاء الإشعارات المتبقية على شريط الحالة ، اضغط على زر أيقونة العين ثم قم بإلغاء تحديد: \"العرض على شريط الحالة\"</string>
<string name="set_live_type_indication">سيتم تأجيل الإشعارات كل 30 ثانية. الشيء الذي من شأنه أن يسمح باستنزاف أقل للبطارية.</string>
@ -1063,9 +1063,9 @@
<string name="join_peertube">انظم إلى PeerTube</string>
<string name="agreement_check_peertube">أبلُغ مِن العُمر 16 سنة على الأقل وأوافق على %1$s هذا الخادم</string>
<string name="link_color_title">الروابط</string>
<string name="link_color">تغيير لون الروابط (عناوين URLs، الإشارات ، العلامات، إلخ.) في الرسائل</string>
<string name="link_color">تغيير لون الروابط (عناوين URLs، الإشارات ، الوسوم، إلخ.) في الرسائل</string>
<string name="boost_header_color_title">رأسية إعادات النشر</string>
<string name="displayname_title">تغيير لون اسم العرض في الجزء العلوي من الرسائل</string>
<string name="displayname_title">تغيير لون الإسم المعروض في الجزء العلوي من الرسائل</string>
<string name="username_title">تغيير لون اسم المستخدم في الجزء العلوي من الرسائل</string>
<string name="boost_header_color">يغيّر لون الرأسية الخاصة بإعادة النشر</string>
<string name="background_status_title">المنشورات</string>
@ -1125,7 +1125,7 @@
<string name="share_link">شارك الرابط</string>
<string name="link_copy">تم نسخ رابط العنوان إلى الحافظة</string>
<string name="open_other_app">افتح في تطبيق آخر</string>
<string name="check_redirect">تحقّق مِن التوجيه</string>
<string name="check_redirect">تحقّق مِن إعادة التوجيه</string>
<string name="no_redirect">هذا العنوان لا يحوّل إلى عنوان آخر</string>
<string name="redirect_detected">%1$s \n\nيُحوّل إلى\n\n %2$s</string>
<string name="set_user_agent">غيّر عميل المستخدم user agent</string>
@ -1149,9 +1149,9 @@
<string name="action_disabled">الإجراء مُعطّل</string>
<string name="action_unfollow">إلغاء المتابعة</string>
<string name="error_destination_path">حدث خطأ ما، الرجاء التحقق من مسار التحميلات في الإعدادات.</string>
<string name="action_announcements">تصريحات</string>
<string name="no_announcements">لا توجد تصريحات!</string>
<string name="add_reaction">إضافة رد فعل</string>
<string name="action_announcements">الإعلانات</string>
<string name="no_announcements">ليس هناك إعلانات!</string>
<string name="add_reaction">إضافة ردة فعل</string>
<string name="set_custom_tabs_indication">استخدم المتصفح المفضل الخاص بك داخل التطبيق. قم بإلغاء تحديد هذه الميزة لفتح الروابط خارجيا.</string>
<string name="set_video_cache">Video cache in MB, zero means no cache.</string>
<string name="set_video_cache">ذاكرة التخزين المؤقت للفيديو بالـ MB، صفر تعني مِن دون ذاكرة تخزين المؤقت.</string>
</resources>

View File

@ -1,191 +1,191 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="navigation_drawer_open">মেনু খুলুন</string>
<string name="navigation_drawer_close">মেনু বন্ধ করুন</string>
<string name="action_about">সম্পর্কে</string>
<string name="action_about_instance">ইনস্ট্যান্স এর সম্পর্কে</string>
<string name="navigation_drawer_open">মেনু খুল</string>
<string name="navigation_drawer_close">মেনু বন্ধ কর</string>
<string name="action_about">অ্যাপ সম্পর্কে</string>
<string name="action_about_instance">সংগঠনটা সম্পর্কে</string>
<string name="action_privacy">গোপনীয়তা</string>
<string name="action_cache">ক্যাশ</string>
<string name="action_logout">লগ আউট</string>
<string name="login">লগইন</string>
<string name="action_cache">ক্যাশ</string>
<string name="action_logout">লগআউট</string>
<string name="login">লগ ইন</string>
<!-- common -->
<string name="close">বন্ধ</string>
<string name="close">বন্ধ করুন</string>
<string name="yes">হ্যাঁ</string>
<string name="no">না</string>
<string name="cancel">বাতিল</string>
<string name="cancel">বাদ দাও</string>
<string name="download">ডাউনলোড</string>
<string name="download_file">ডাউনলোড করা হচ্ছে %1$s</string>
<string name="download_file">%1$s ডাউনলোড করো</string>
<string name="save_over">মিডিয়া সংরক্ষিত</string>
<string name="download_from" formatted="false">ফাইল: %1$s</string>
<string name="password">পাসওয়ার্ড</string>
<string name="email">-মেইল</string>
<string name="accounts">অ্যাকাউন্টগুলি</string>
<string name="toots">টুটগুলি</string>
<string name="tags">ট্যাগগুলি</string>
<string name="email">ইমেইল</string>
<string name="accounts">অ্যাকাউন্ট</string>
<string name="toots">টুট</string>
<string name="tags">ট্যাগ</string>
<string name="save">সংরক্ষণ</string>
<string name="restore">পুনঃস্থাপন</string>
<string name="no_result">কোনও ফলাফল পাওয়া যায় নি!</string>
<string name="instance">ইনস্ট্যান্স</string>
<string name="instance_example">ইনস্ট্যান্স: mastodon.social</string>
<string name="toast_account_changed" formatted="false">%1$s এখন কাজ করছ</string>
<string name="add_account">একটি অ্যাকাউন্ট যোগ করুন</string>
<string name="clipboard">টুটের সামগ্রীটি ক্লিপবোর্ডে অনুলিপি করা হয়েছে</string>
<string name="clipboard_url">টুটের URL টি ক্লিপবোর্ডে অনুলিপি করা হয়েছে</string>
<string name="change">পরিবর্তন</string>
<string name="choose_picture">একটি ছবি নির্বাচন করুন</string>
<string name="clear">পরিষ্কার</string>
<string name="camera">ক্ামেরা</string>
<string name="delete_all">সব মুছে দিন</string>
<string name="translate_toot">টুট টি অনুবাদ করুন</string>
<string name="schedule">সময়সূচি</string>
<string name="text_size">পাঠ্য এবং আইকনের আকার</string>
<string name="text_size_change">বর্তমান পাঠ্য আকার পরিবর্তন করুন:</string>
<string name="icon_size_change">বর্তমান আইকন আকার পরিবর্তন করুন:</string>
<string name="restore">সংরক্ষণ ফিরত আনো</string>
<string name="no_result">ফলাফল নেই!</string>
<string name="instance">সংগঠন</string>
<string name="instance_example">সংগঠন: mastodon.social</string>
<string name="toast_account_changed" formatted="false">এখন %1$s অ্যাকাউন্টের সাথে কাজ কর</string>
<string name="add_account">অ্যাকাউন্ট যোগ করুন</string>
<string name="clipboard">টুটের বিষয়বস্তু ক্লিপবোর্ড কপি করা হয়েছে</string>
<string name="clipboard_url">টুটের ইউআরএল ক্লিপবোর্ড কপি করা হয়েছে</string>
<string name="change">পরিবর্তন করুন</string>
<string name="choose_picture">ছবি নির্বাচন করো</string>
<string name="clear">পরিষ্কার করো</string>
<string name="camera">ক্ামেরা</string>
<string name="delete_all">সব মুছে ফেলো</string>
<string name="translate_toot">টুট অনুবাদ করো</string>
<string name="schedule">নির্ধারিত সময়ে টুট করো</string>
<string name="text_size">লেখা এবং আইকনের মাপ</string>
<string name="text_size_change">লেখার বর্তমান আকার পরিবর্তন করুন:</string>
<string name="icon_size_change">লেখার বর্তমান আইকন পরিবর্তন করুন:</string>
<string name="next">পরবর্তী</string>
<string name="previous">পূর্ববর্তী</string>
<string name="open_with">দিয়ে খুলুন</string>
<string name="open_with">খুলুন</string>
<string name="validate">যাচাই</string>
<string name="media">মিডিয়া</string>
<string name="share_with">সাথে শেয়ার</string>
<string name="shared_via">ফেডিলাবের মাধ্যমে ভাগ করা হয়েছে</string>
<string name="replies">উত্তরগুলি</string>
<string name="username">ব্যবহারকারীর নাম</string>
<string name="drafts">ড্রাফটগুলি</string>
<string name="favourite">প্রিয়াগুলি</string>
<string name="follow">নতুন অনুসরণকারী</string>
<string name="mention">উল্লেখগুলি</string>
<string name="reblog">সমর্থনগুলি</string>
<string name="show_boosts">সমর্থনগুলি দেখান</string>
<string name="show_replies">উত্তরগুলি দেখান</string>
<string name="action_open_in_web">ব্রাউজারে খুলুন</string>
<string name="translate">অনুবাদ</string>
<string name="please_wait">অনুগ্রহ করে, এই ক্রিয়াটি করার আগে কয়েক সেকেন্ড অপেক্ষা করুন।</string>
<string name="media">Media</string>
<string name="share_with">Share with</string>
<string name="shared_via">Shared via Fedilab</string>
<string name="replies">Replies</string>
<string name="username">User name</string>
<string name="drafts">Drafts</string>
<string name="favourite">Favourites</string>
<string name="follow">New followers</string>
<string name="mention">Mentions</string>
<string name="reblog">Boosts</string>
<string name="show_boosts">Show boosts</string>
<string name="show_replies">Show replies</string>
<string name="action_open_in_web">Open in browser</string>
<string name="translate">Translate</string>
<string name="please_wait">Please, wait few seconds before making this action.</string>
<!--- Menu -->
<string name="home_menu">গৃহ</string>
<string name="local_menu">স্থানীয় সময়রেখা</string>
<string name="global_menu">সংযুক্ত সময়রেখা</string>
<string name="neutral_menu_title">বিকল্পগুলি</string>
<string name="favorites_menu">প্রিয়াগুলি</string>
<string name="communication_menu_title">যোগাযোগ</string>
<string name="muted_menu">নিঃশব্দ ব্যবহারকারী</string>
<string name="blocked_menu">অবরুদ্ধ ব্যবহারকারী</string>
<string name="notifications">বিজ্ঞপ্তিগুলি</string>
<string name="follow_request">অনুসরণ অনুরোধগুলি</string>
<string name="settings">বিন্যাস</string>
<string name="delete_account_title">একটি অ্যাকাউন্ট মুছেন</string>
<string name="delete_account_message" formatted="false">আপনি কি এই %1$s একাউন্ট টি এপ্লিকেশন থেকে মুছে ফেলতে চান?</string>
<string name="send_email">একটি ইমেইল পাঠান</string>
<string name="click_to_change">এটি পরিবর্তন করার জন্য পথে ক্লিক করুন</string>
<string name="failed">ব্যর্থ!</string>
<string name="scheduled_toots">নির্ধারিত টুটগুলি</string>
<string name="disclaimer_full">নীচের তথ্যগুলি ব্যবহারকারীর প্রোফাইলকে অসম্পূর্ণভাবে প্রতিবিম্বিত করতে পারে।</string>
<string name="insert_emoji">ইমোজি ঢোকান</string>
<string name="no_emoji">অ্যাপটি মুহুর্তের জন্য কাস্টম ইমোজিগুলি সংগ্রহ করে নি।</string>
<string name="live_notif">লাইভ বিজ্ঞপ্তিগুলি</string>
<string name="home_menu">Home</string>
<string name="local_menu">Local timeline</string>
<string name="global_menu">Federated timeline</string>
<string name="neutral_menu_title">Options</string>
<string name="favorites_menu">Favourites</string>
<string name="communication_menu_title">Communication</string>
<string name="muted_menu">Muted users</string>
<string name="blocked_menu">Blocked users</string>
<string name="notifications">Notifications</string>
<string name="follow_request">Follow requests</string>
<string name="settings">Settings</string>
<string name="delete_account_title">Delete an account</string>
<string name="delete_account_message" formatted="false">Delete the account %1$s from the application?</string>
<string name="send_email">Send an email</string>
<string name="click_to_change">Tap on the path to change it</string>
<string name="failed">Failed!</string>
<string name="scheduled_toots">Scheduled toots</string>
<string name="disclaimer_full">Information below may reflect the user\'s profile incompletely.</string>
<string name="insert_emoji">Insert emoji</string>
<string name="no_emoji">The app did not collect custom emojis for the moment.</string>
<string name="live_notif">Live notifications</string>
<string name="logout_confirmation">Are you sure you want to logout?</string>
<string name="logout_account_confirmation">Are you sure you want to logout @%1$s@%2$s?</string>
<!-- Status -->
<string name="no_status">প্রদর্শনের জন্য কোন টুট নেই</string>
<string name="no_status">No toot to display</string>
<string name="no_stories">No stories to display</string>
<string name="stories">Stories</string>
<string name="reblog_by">%1$s দ্বারা সমর্থন</string>
<string name="favourite_add">এই টুটটি আপনার পছন্দসইয়ের সাথে যুক্ত করবেন?</string>
<string name="favourite_remove">আপনার পছন্দসই থেকে এই টুট সরাবেন?</string>
<string name="reblog_add">এই টুট টি সমর্থন করবেন?</string>
<string name="reblog_remove">এই টুট টি অসমর্থন করবেন?</string>
<string name="pin_add">এই টুট টি পিন করবেন?</string>
<string name="pin_remove">এই টুট টি আনপিন করবেন?</string>
<string name="more_action_1">নীরব</string>
<string name="more_action_2">ব্লক</string>
<string name="more_action_3">প্রতিবেদন</string>
<string name="more_action_4">সরান</string>
<string name="more_action_5">অনুলিপি</string>
<string name="more_action_6">বিভাজিত</string>
<string name="more_action_7">উল্লেখ</string>
<string name="more_action_8">সময়যুক্ত নিঃশব্দ</string>
<string name="more_action_9">মুছে &amp; পুনরায় খসড়া</string>
<string name="reblog_by">Boosted by %1$s</string>
<string name="favourite_add">Add this toot to your favourites?</string>
<string name="favourite_remove">Remove this toot from your favourites?</string>
<string name="reblog_add">Boost this toot?</string>
<string name="reblog_remove">Unboost this toot?</string>
<string name="pin_add">Pin this toot?</string>
<string name="pin_remove">Unpin this toot?</string>
<string name="more_action_1">Mute</string>
<string name="more_action_2">Block</string>
<string name="more_action_3">Report</string>
<string name="more_action_4">Remove</string>
<string name="more_action_5">Copy</string>
<string name="more_action_6">Share</string>
<string name="more_action_7">Mention</string>
<string name="more_action_8">Timed mute</string>
<string name="more_action_9">Delete &amp; re-draft</string>
<string-array name="more_action_confirm">
<item>এই অ্যাকাউন্ট নিঃশব্দ করবেন?</item>
<item>এই অ্যাকাউন্ট ব্লক করবেন?</item>
<item>এই টুট টি প্রতিবেদন করবেন?</item>
<item>এই ডোমেইন ব্লক করবেন?</item>
<item>এই একাউন্ট টি কে নিঃশব্দ তালিকা থেকে সরাবেন?</item>
<item>Mute this account?</item>
<item>Block this account?</item>
<item>Report this toot?</item>
<item>Block this domain?</item>
<item>Unmute this account?</item>
<item>Unblock this account?</item>
</string-array>
<string-array name="action_notification">
<item>বিজ্ঞপ্তি</item>
<item>নিঃশব্দ</item>
<item>Notify</item>
<item>Silent</item>
</string-array>
<string-array name="more_action_owner_confirm">
<item>এই টুট টি মুছে ফেলবেন?</item>
<item>এই টুট টি মুছে &amp; পুনঃসংশ্লিষ্ট করবেন?</item>
<item>Remove this toot?</item>
<item>Delete &amp; re-draft this toot?</item>
</string-array>
<string name="bookmarks">বুকমার্কগুলি</string>
<string name="bookmark_add">বুকমার্ক তালিকা এ যোগ করুন</string>
<string name="bookmark_remove">বুকমার্ক মুছে ফেলুন</string>
<string name="bookmarks_empty">প্রদর্শনের জন্য কোনও বুকমার্ক নেই</string>
<string name="status_bookmarked">বুকমার্কগুলিতে স্ট্যাটাস যুক্ত হয়েছে!</string>
<string name="status_unbookmarked">বুকমার্কগুলি থেকে স্থিতি সরানো হয়েছিল!</string>
<string name="bookmarks">Bookmarks</string>
<string name="bookmark_add">Add to bookmarks</string>
<string name="bookmark_remove">Remove bookmark</string>
<string name="bookmarks_empty">No bookmarks to display</string>
<string name="status_bookmarked">Status has been added to bookmarks!</string>
<string name="status_unbookmarked">Status was removed from bookmarks!</string>
<!-- Date -->
<string name="date_seconds">%d সেকেন্ড</string>
<string name="date_minutes">%d মিনিট</string>
<string name="date_hours">%d ঘন্টা</string>
<string name="date_day">%d দিন</string>
<string name="date_seconds">%d s</string>
<string name="date_minutes">%d m</string>
<string name="date_hours">%d h</string>
<string name="date_day">%d d</string>
<plurals name="date_seconds_polls">
<item quantity="one">%d second</item>
<item quantity="other">%d সেকেন্ড</item>
<item quantity="other">%d seconds</item>
</plurals>
<plurals name="date_minutes_polls">
<item quantity="one">%d minute</item>
<item quantity="other">%d মিনিট</item>
<item quantity="other">%d minutes</item>
</plurals>
<plurals name="date_hours_polls">
<item quantity="one">%d hour</item>
<item quantity="other">%d ঘণ্টা</item>
<item quantity="other">%d hours</item>
</plurals>
<plurals name="date_day_polls">
<item quantity="one">%d day</item>
<item quantity="other">%d দিন</item>
<item quantity="other">%d days</item>
</plurals>
<!-- TOOT -->
<string name="toot_cw_placeholder">সতর্কতা</string>
<string name="toot_placeholder">আপনার মনে কি আছে?</string>
<string name="toot_it">টুট!</string>
<string name="queet_it">ক্যুইট!</string>
<string name="cw">সঃবঃ</string>
<string name="toot_title">একটি টুট লিখুন</string>
<string name="toot_title_reply">একটি টুট এ উত্তর দিন</string>
<string name="queet_title">একটি ক্যুইট লিখুন</string>
<string name="queet_title_reply">একটি ক্যুইট এ উত্তর দিন</string>
<string name="toot_select_image">একটি মিডিয়া নির্বাচন করুন</string>
<string name="toot_select_image_error">মিডিয়া নির্বাচন করার সময় একটি ত্রুটি ঘটেছে!</string>
<string name="toot_delete_media">এই মিডিয়া মুছবেন?</string>
<string name="toot_error_no_content">আপনার টুট ফাঁকা!</string>
<string name="toot_visibility_tilte">টুটের দৃশ্যমানতা</string>
<string name="toots_visibility_tilte">ডিফল্টরূপে টুটগুলির দৃশ্যমানতা: </string>
<string name="toot_sent">টুট পাঠানো হয়েছে!</string>
<string name="toot_reply_content_title">আপনি এই টুটের উত্তর দিচ্ছেন:</string>
<string name="toot_sensitive">সংবেদনশীল কন্টেন্ট?</string>
<string name="toot_cw_placeholder">Warning</string>
<string name="toot_placeholder">What is on your mind?</string>
<string name="toot_it">TOOT!</string>
<string name="queet_it">QUEET!</string>
<string name="cw">cw</string>
<string name="toot_title">Write a toot</string>
<string name="toot_title_reply">Reply to a toot</string>
<string name="queet_title">Write a queet</string>
<string name="queet_title_reply">Reply to a queet</string>
<string name="toot_select_image">Select a media</string>
<string name="toot_select_image_error">An error occurred while selecting the media!</string>
<string name="toot_delete_media">Delete this media?</string>
<string name="toot_error_no_content">Your toot is empty!</string>
<string name="toot_visibility_tilte">Visibility of the toot</string>
<string name="toots_visibility_tilte">Visibility of the toots by default: </string>
<string name="toot_sent">The toot has been sent!</string>
<string name="toot_reply_content_title">You are replying to this toot:</string>
<string name="toot_sensitive">Sensitive content?</string>
<string-array name="toot_visibility">
<item>জনসাধারণের টাইমলাইনে পোস্ট করুন</item>
<item>জনসাধারণের টাইমলাইনে পোস্ট করবেন না</item>
<item>শুধুমাত্র অনুসরণকারীদের পোস্ট করুন</item>
<item>শুধুমাত্র উল্লিখিত ব্যবহারকারীদের জন্য পোস্ট করুন</item>
<item>Post to public timelines</item>
<item>Do not post to public timelines</item>
<item>Post to followers only</item>
<item>Post to mentioned users only</item>
</string-array>
<string name="no_draft">কোন খসড়া নেই!</string>
<string name="choose_toot">একটি টুট চয়ন করুন</string>
<string name="choose_accounts">একটি অ্যাকাউন্ট চয়ন করুন</string>
<string name="select_accounts">কিছু অ্যাকাউন্টগুলি নির্বাচন করুন</string>
<string name="remove_draft">খসড়া সরান?</string>
<string name="show_reply">আসল টুটটি প্রদর্শন করতে বোতামে আলতো চাপুন</string>
<string name="upload_form_description">দৃষ্টি প্রতিবন্ধীদের জন্য বর্ণনা করুন</string>
<string name="no_draft">No drafts!</string>
<string name="choose_toot">Choose a toot</string>
<string name="choose_accounts">Choose an account</string>
<string name="select_accounts">Select some accounts</string>
<string name="remove_draft">Remove draft?</string>
<string name="show_reply">Tap on the button to display the original toot</string>
<string name="upload_form_description">Describe for the visually impaired</string>
<!-- Instance -->
<string name="instance_no_description">কোন বর্ণনা নাই!</string>
<string name="instance_no_description">No description available!</string>
<!-- About -->
<string name="about_vesrion">রিলিজ %1$s</string>
<string name="about_developer">বিকাশকারী:</string>
<string name="about_license">লাইসেন্স: </string>
<string name="about_license_action">জিএনইউ জিপিএল ভার্সন ৩</string>
<string name="about_vesrion">Release %1$s</string>
<string name="about_developer">Developer:</string>
<string name="about_license">License: </string>
<string name="about_license_action">GNU GPL V3</string>
<string name="about_code">Source code: </string>
<string name="about_yandex">Translation of toots:</string>
<string name="about_thekinrar">Search instances:</string>
@ -250,21 +250,21 @@
<string name="toast_unreblog">The toot is no longer boosted!</string>
<string name="toast_favourite">The toot was added to your favourites!</string>
<string name="toast_unfavourite">The toot was removed from your favourites!</string>
<string name="toast_report">টুটটির প্রতিবেদন করা হয়েছে!</string>
<string name="toast_unstatus">টুটটি মুছে ফেলা হয়েছে!</string>
<string name="toast_pin">টুটটি পিন করা হয়েছে!</string>
<string name="toast_unpin">টুটটি আনপিন করা হয়েছে!</string>
<string name="toast_error">উফফফফ! একটি ত্রুটি ঘটেছে!</string>
<string name="toast_code_error">একটি ত্রুটি ঘটেছে! ইনস্ট্যান্স একটি অনুমোদন কোড ফেরায় নি!</string>
<string name="toast_error_instance">ইনস্ট্যান্স এর ডোমেনটি বৈধ বলে মনে হচ্ছে না!</string>
<string name="toast_error_loading_account">অ্যাকাউন্টগুলির মধ্যে স্যুইচ করার সময় একটি ত্রুটি ঘটেছে!</string>
<string name="toast_error_search">অনুসন্ধানের সময় একটি ত্রুটি ঘটেছে!</string>
<string name="toast_update_credential_ok">প্রোফাইল তথ্য সংরক্ষণ করা হয়েছে!</string>
<string name="nothing_to_do">কোনও পদক্ষেপ নেওয়া যাবে না</string>
<string name="toast_saved">মিডিয়া রক্ষা পেয়েছে!</string>
<string name="toast_error_translate">অনুবাদ করার সময় একটি ত্রুটি ঘটেছে!</string>
<string name="toast_error_translations_disabled">অনুবাদসমূহ সেটিংসে অক্ষম রয়েছে</string>
<string name="toast_toot_saved">খসড়া সংরক্ষিত করা হয়েছে!</string>
<string name="toast_report">The toot was reported!</string>
<string name="toast_unstatus">The toot was deleted!</string>
<string name="toast_pin">The toot was pinned!</string>
<string name="toast_unpin">The toot was unpinned!</string>
<string name="toast_error">Oops ! An error occurred!</string>
<string name="toast_code_error">An error occurred! The instance did not return an authorisation code!</string>
<string name="toast_error_instance">The instance domain does not seem to be valid!</string>
<string name="toast_error_loading_account">An error occurred while switching between accounts!</string>
<string name="toast_error_search">An error occurred while searching!</string>
<string name="toast_update_credential_ok">The profile data have been saved!</string>
<string name="nothing_to_do">No action can be taken</string>
<string name="toast_saved">The media has been saved!</string>
<string name="toast_error_translate">An error occurred while translating!</string>
<string name="toast_error_translations_disabled">Translations are disabled in settings</string>
<string name="toast_toot_saved">Draft saved!</string>
<string name="toast_error_char_limit">Are you sure this instance allows this number of characters? Usually, this value is close to 500 characters.</string>
<string name="toast_visibility_changed">Visibility of the toots has been changed for the account %1$s</string>
<!-- Settings -->
@ -600,9 +600,7 @@
<item>1 day</item>
<item>1 week</item>
</string-array>
<string name="showcase_instance"> In this field, you need to write your instance host name.\nFor example, if you created your account on https://mastodon.social\nJust write <b>mastodon.social</b> (without https://)\n
You can start writing first letters and names will be suggested.\n\n
⚠ The Login button will only work if the instance name is valid and the instance is up!
<string name="showcase_instance">In this field, you need to write your instance domain.\nFor example, if you created your account on https://mastodon.social\nJust write <b>mastodon.social</b>\nYou can start writing first letters and names will be suggested.
</string>
<string name="more_information">More information</string>
<!-- languages not translated -->

View File

@ -991,9 +991,9 @@ Ara ja pots connectar-te al compte escrivint <b>%1$s</b> en el primer camp i fen
<string name="set_nitter">Substitueix Twitter amb Nitter</string>
<string name="set_nitter_indication">Nitter és una alternativa de codi obert que fa de frontal per Twitter i protegeix la privacitat.</string>
<string name="set_nitter_host">Introdueix aquí el teu servidor personalitzat o deixa-ho en blanc i s\'usarà nitter.net</string>
<string name="set_bibliogram">Substituir Instagram amb Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram is an open source alternative Instagram front-end focused on privacy.</string>
<string name="set_bibliogram_host">Enter your custom host or leave blank for using bibliogram.art</string>
<string name="set_bibliogram">Substituir Instagram per Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram és un frontal alternatiu de codi obert per Instagram que protegeix la privacitat.</string>
<string name="set_bibliogram_host">Introdueix aquí el teu servidor personalitzat o deixa-ho en blanc i s\'usarà bibliogram.art</string>
<string name="set_hide_status_bar">Amaga la barra de notificacions de Fedilab</string>
<string name="set_hide_status_bar_indication">Per amagar la notificació que queda a la barra d\'estat, toca la icona de l\'ull i després desactiva: \"Mostra a la barra d\'estat\"</string>
<string name="set_live_type_indication">S\'ajornaran les notificacions cada 30 segons. Això permet gastar menys la pila.</string>
@ -1112,5 +1112,5 @@ Ara ja pots connectar-te al compte escrivint <b>%1$s</b> en el primer camp i fen
<string name="no_announcements">No hi ha avisos!</string>
<string name="add_reaction">Afegir una reacció</string>
<string name="set_custom_tabs_indication">Utilitza el teu navegador preferit dins l\'aplicació. Desmarca aquesta funció si vols que els enllaços s\'obrin externament.</string>
<string name="set_video_cache">Video cache in MB, zero means no cache.</string>
<string name="set_video_cache">Memòria cau de vídeo en MB, el zero vol dir que no hi ha memòria cau.</string>
</resources>

View File

@ -110,7 +110,7 @@
<item>Anmeld dette toot?</item>
<item>Blokér dette domæne?</item>
<item>Fjern \"Gør tavs\" for denne konto?</item>
<item>Unblock this account?</item>
<item>Afblokér denne konto?</item>
</string-array>
<string-array name="action_notification">
<item>Notificér</item>
@ -1001,9 +1001,9 @@
<string name="set_nitter">Erstat Twitter med Nitter</string>
<string name="set_nitter_indication">Nitter er en alternativ open source Twitter front-end med fokus på fortrolighed.</string>
<string name="set_nitter_host">Angiv din tilpassede vært eller udfykd ikke for at benytte nitter.net</string>
<string name="set_bibliogram">Replace Instagram with Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram is an open source alternative Instagram front-end focused on privacy.</string>
<string name="set_bibliogram_host">Enter your custom host or leave blank for using bibliogram.art</string>
<string name="set_bibliogram">Erstat Instagram med Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram er et open source Instagram front-end alternativt fokuseret på datafortrolighed.</string>
<string name="set_bibliogram_host">Angiv din tilpassede vært eller lad stå tomt for at benytte bibliogram.art</string>
<string name="set_hide_status_bar">Skjul Fedilab-notifikationsbjælke</string>
<string name="set_hide_status_bar_indication">For at skjule den resterende notifikation på statusbjælken, så klik på øjeikonknappen og fjern derefter markeringen: \"Vises på statusbjælke\"</string>
<string name="set_live_type_indication">Notifikationer udskydes hvert 30. sekund. Dette vil betyde lavere batteridræning.</string>
@ -1122,5 +1122,5 @@
<string name="no_announcements">Ingen meddelelser!</string>
<string name="add_reaction">Tilføj en reaktion</string>
<string name="set_custom_tabs_indication">Use your favourite browser inside the app. Uncheck this feature to open links externally.</string>
<string name="set_video_cache">Video cache in MB, zero means no cache.</string>
<string name="set_video_cache">Video-cache i MB, nul indikerer ingen cache.</string>
</resources>

View File

@ -110,7 +110,7 @@
<item>Salatu toot hau?</item>
<item>Blokeatu domeinu hau?</item>
<item>Desmututu kontu hau?</item>
<item>Unblock this account?</item>
<item>Desblokeatu kontu hau?</item>
</string-array>
<string-array name="action_notification">
<item>Jakinarazi</item>
@ -1000,9 +1000,9 @@
<string name="set_nitter">Erabili Nitter Twitter-en ordez</string>
<string name="set_nitter_indication">Nitter pribatutasuna aintzat duen Twitter interfaze libre bat da.</string>
<string name="set_nitter_host">Sartu zure ostalari pertsonalizatua edo laga hutsik nitter.net erabiltzeko</string>
<string name="set_bibliogram">Replace Instagram with Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram is an open source alternative Instagram front-end focused on privacy.</string>
<string name="set_bibliogram_host">Enter your custom host or leave blank for using bibliogram.art</string>
<string name="set_bibliogram">Ordeztu Instagram Bibliogram-ekin</string>
<string name="set_bibliogram_indication">Bibliogram pribatutasuna aintzat duen Instagram interfaze libre bat da.</string>
<string name="set_bibliogram_host">Sartu zure ostalari pertsonalizatua edo laga hutsik bibliogram.art erabiltzeko</string>
<string name="set_hide_status_bar">Ezkutatu Fedilab jakinarazpen-barra</string>
<string name="set_hide_status_bar_indication">Egoera barran geratzen den jakinarazpena ezkutatzeko, sakatu begiaren ikonoa eta desmarkatu \"Erakutsi egoera-barran\"</string>
<string name="set_live_type_indication">Jakinarazpenak 30 segundo atzeratuko dira. Honela bateria gutxiago erabiliko da.</string>
@ -1120,6 +1120,6 @@
<string name="action_announcements">Iragarpenak</string>
<string name="no_announcements">Iragarpenik ez!</string>
<string name="add_reaction">Gehitu erreakzioa</string>
<string name="set_custom_tabs_indication">Use your favourite browser inside the app. Uncheck this feature to open links externally.</string>
<string name="set_video_cache">Video cache in MB, zero means no cache.</string>
<string name="set_custom_tabs_indication">Erabili zure gogoko nabigatzailea aplikazio barruan. Desmarkatu ezaugarri hau estekak kanpoan irekitzeko.</string>
<string name="set_video_cache">Bideo cachea MB-tan, zerok cacherik ez esan nahi du.</string>
</resources>

View File

@ -110,7 +110,7 @@
<item>Segnalare questo toot?</item>
<item>Bloccare questo dominio?</item>
<item>Smettere di silenziare questo account?</item>
<item>Unblock this account?</item>
<item>Sbloccare questo account?</item>
</string-array>
<string-array name="action_notification">
<item>Notifica</item>
@ -1001,9 +1001,9 @@
<string name="set_nitter">Sostituisci Twitter con Nitter</string>
<string name="set_nitter_indication">Nitter è un\'interfaccia alternativa e open source per Twitter, focalizzata sulla privacy.</string>
<string name="set_nitter_host">Inserisci il tuo host personalizzato o lascia vuoto per usare nitter.net</string>
<string name="set_bibliogram">Replace Instagram with Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram is an open source alternative Instagram front-end focused on privacy.</string>
<string name="set_bibliogram_host">Enter your custom host or leave blank for using bibliogram.art</string>
<string name="set_bibliogram">Sostituisci Instagram con Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram è un\'interfaccia alternativa e open source per Instagram, focalizzata sulla privacy.</string>
<string name="set_bibliogram_host">Inserisci il tuo host personalizzato o lascia vuoto per usare bibliogram.art</string>
<string name="set_hide_status_bar">Nascondi barra di notifica di Fedilab</string>
<string name="set_hide_status_bar_indication">Per nascondere le notifiche rimanenti nella barra di stato, premi il pulsante con l\'icona di un occhio e deseleziona: \"Mostra nella barra di stato\"</string>
<string name="set_live_type_indication">Le notifiche saranno differite ogni 30 secondi. Questo consentirà un minore consumo di batteria.</string>
@ -1122,5 +1122,5 @@
<string name="no_announcements">Nessun annuncio!</string>
<string name="add_reaction">Aggiungi una reazione</string>
<string name="set_custom_tabs_indication">Usa il tuo browser preferito all\'interno dell\'app. Deseleziona questa funzione per aprire i link esternamente.</string>
<string name="set_video_cache">Video cache in MB, zero means no cache.</string>
<string name="set_video_cache">Cache video in MB, zero significa nessuna cache.</string>
</resources>

View File

@ -110,7 +110,7 @@
<item>Пожаловаться на этот тут?</item>
<item>Заблокировать этот домен?</item>
<item>Не игнорировать этот аккаунт?</item>
<item>Unblock this account?</item>
<item>Разблокировать этот аккаунт?</item>
</string-array>
<string-array name="action_notification">
<item>Уведомлять</item>
@ -1017,9 +1017,9 @@
<string name="set_nitter">Заменить Твиттер на Nitter</string>
<string name="set_nitter_indication">Nitter - это альтернатива Twitter с открытым исходным кодом, ориентированная на конфиденциальность.</string>
<string name="set_nitter_host">Введите собственный хост или оставьте пустым для использования nitter.net</string>
<string name="set_bibliogram">Replace Instagram with Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram is an open source alternative Instagram front-end focused on privacy.</string>
<string name="set_bibliogram_host">Enter your custom host or leave blank for using bibliogram.art</string>
<string name="set_bibliogram">Заменить Instagram на Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram это альтернативный front-end для Instagram с открытым исходным кодом и сфокусированный на приватности.</string>
<string name="set_bibliogram_host">Введите свой собственный хост или оставьте пустым для использования bibliogram.art</string>
<string name="set_hide_status_bar">Скрыть панель уведомлений Fedilab</string>
<string name="set_hide_status_bar_indication">Чтобы скрыть уведомление в строке состояния, нажмите на кнопку с пиктограммой глаза и снимите флажок: \"Показывать в строке состояния\"</string>
<string name="set_live_type_indication">Уведомления будут появляться на 30 секунд позже. Это позволит уменьшить влияние на батарею.</string>
@ -1137,6 +1137,6 @@
<string name="action_announcements">Объявления</string>
<string name="no_announcements">Объявлений пока нет.</string>
<string name="add_reaction">Добавить реакцию</string>
<string name="set_custom_tabs_indication">Use your favourite browser inside the app. Uncheck this feature to open links externally.</string>
<string name="set_video_cache">Video cache in MB, zero means no cache.</string>
<string name="set_custom_tabs_indication">Используйте ваш любимый браузер внутри приложения. Снимите флажок на эту функцию, чтобы открывать ссылки внешним браузером.</string>
<string name="set_video_cache">Кэш видео в MB, ноль означает, нет кэша.</string>
</resources>

File diff suppressed because it is too large Load Diff

View File

@ -684,7 +684,7 @@
<string name="all">Hepsi</string>
<string name="about_opencollective">Uygulamayı destekleyin</string>
<string name="more_about_opencollective">Open Collective, grupların hızlı bir şekilde bir birlik oluşturmalarını, para toplamalarını ve onları şeffaf bir şekilde yönetmelerini sağlar.</string>
<string name="copy_link">Linki kopyala</string>
<string name="copy_link">Bağlantıyı kopyala</string>
<string name="connect_instance">Bağlan</string>
<string name="set_normal">Normal</string>
<string name="set_compact">Kompakt</string>
@ -914,7 +914,7 @@
<string name="number_boosts">Number of boosts</string>
<string name="number_favourites">Favori sayısı</string>
<string name="number_mentions">Bahsetme sayısı</string>
<string name="number_follows">Number of follows</string>
<string name="number_follows">Toplam takip sayısı</string>
<string name="number_polls">Anket sayısı</string>
<string name="number_replies">Number of replies</string>
<string name="number_statuses">Number of statuses</string>
@ -987,8 +987,8 @@
<string name="set_allow_live_notifications_indication">Canlı bildirimler yalnızca bu hesap için etkinleştirilecek.</string>
<string name="set_clear_cache_exit">Clear cache when leaving</string>
<string name="set_clear_cache_exit_indication">The cache (media, cached messages, data from the built-in browser) will be automatically cleared when leaving the application.</string>
<string name="unfollow_confirm">Do you want to unfollow this account?</string>
<string name="set_unfollow_validation">Show confirmation dialog before unfollowing</string>
<string name="unfollow_confirm">Bu hesabı takip etmekten vaz geçmek istiyor musunuz?</string>
<string name="set_unfollow_validation">Takibi bırakmadan önce onay kutusu göster</string>
<string name="set_invidious">Replace Youtube with Invidio.us</string>
<string name="set_invidious_indication">Invidious is an alternative front-end to YouTube</string>
<string name="set_invidious_host">Enter your custom host or leave blank for using invidio.us</string>
@ -1021,12 +1021,12 @@
<string name="message_preview">Mesaj önizlemesi</string>
<string name="report_mention">Add mentions in each message</string>
<string name="fetch_conversation">Görüşme indiriliyor</string>
<string name="order_by">Order by</string>
<string name="order_by">Sıralama ölçütü</string>
<string name="title_video_peertube">Video başlığı</string>
<string name="join_peertube">Peertube\'e katıl</string>
<string name="agreement_check_peertube">16 yaşından büyüğüm ve bu sunucunun %1$s koşullarını kabul ediyorum</string>
<string name="link_color_title">Linkler</string>
<string name="link_color">Mesajlardaki linklerin (URL\'ler, bahsedilmeler, etiketler, vb.) rengini değiştirin</string>
<string name="link_color_title">Bağlantılar</string>
<string name="link_color">Mesajlardaki bağlantıların (URL\'ler, bahsedilmeler, etiketler, vb.) rengini değiştirin</string>
<string name="boost_header_color_title">Başlığı tekrar bloglar</string>
<string name="displayname_title">Change the color of display name at the top of messages</string>
<string name="username_title">Change the color of the user name at the top of messages</string>
@ -1040,40 +1040,40 @@
<string name="icons_color">Zaman çizelgelerinin alt kısmındaki simgelerin rengi</string>
<string name="pin_tag">Bu etiketi sabitle</string>
<string name="logo_of_the_instance">Sunucunun logosu</string>
<string name="edit_profile">Edit profile</string>
<string name="edit_profile">Profili düzenle</string>
<string name="make_an_action">Make an action</string>
<string name="translation">Translation</string>
<string name="image_preview">Image preview</string>
<string name="text_color_title">Text color</string>
<string name="translation">Çeviri</string>
<string name="image_preview">Resim önizlemesi</string>
<string name="text_color_title">Metin rengi</string>
<string name="text_color">Change the text color in pots</string>
<string name="apply_changes">Apply changes</string>
<string name="apply_changes">Değişiklikleri uygula</string>
<string name="restart_message">You need to restart the application to apply changes</string>
<string name="restart">Restart</string>
<string name="pref_custom_theme">Use a custom theme</string>
<string name="pref_custom_theme_summary">Allow to override colors of the selected theme above</string>
<string name="restart">Yeniden Başlat</string>
<string name="pref_custom_theme">Kişisel tema kullan</string>
<string name="pref_custom_theme_summary">Yukarıda seçilen temanın renklerini değiştirmeye izin ver</string>
<string name="theming">Theming</string>
<string name="store_before">Store before</string>
<string name="data_export_theme">The theme was exported</string>
<string name="data_export_theme_success">The theme has been successfully exported in CSV</string>
<string name="data_export_theme">Tema dışa aktarıldı</string>
<string name="data_export_theme_success">Tema CSV dosyası olarak dışa aktarıldı</string>
<string name="pref_colored_status_bar_summary">Apply the primary color to the status bar</string>
<string name="pref_colored_status_bar_title">Status bar color</string>
<string name="restore_default_theme">Restore a default theme</string>
<string name="import_theme">Import a theme</string>
<string name="import_theme_title">Daha önceki dışa aktarmadan bir temayı içe aktarmak için buraya dokunun</string>
<string name="export_theme">Export the theme</string>
<string name="pref_colored_status_bar_title">Durum çubuğu rengi</string>
<string name="restore_default_theme">Varsayılan temayı geri yükle</string>
<string name="import_theme">Temayı içe aktar</string>
<string name="import_theme_title">Daha önceden dışa aktarılmış temayı içe aktarmak için dokunun</string>
<string name="export_theme">Temayı dışa aktar</string>
<string name="export_theme_title">Mevcut temayı dışa aktarmak için dokunun</string>
<string name="theme_file_error">An error occurred when selecting the theme file</string>
<string name="label_theme_picker">Theme Picker</string>
<string name="pref_theme_summary">Select a pre-installed theme</string>
<string name="pref_theme_title">Themes</string>
<string name="theme_file_error">Tema dosyasını seçerken bir hata oluştu</string>
<string name="label_theme_picker">Tema Seçici</string>
<string name="pref_theme_summary">Önceden yüklenmiş bir tema seçin</string>
<string name="pref_theme_title">Temalar</string>
<string name="pref_colored_navigation_bar_summary">Apply the primary color to the navigation bar</string>
<string name="pref_colored_navigation_bar_title">Navigation bar color</string>
<string name="pref_colored_navigation_bar_title">Gezinme çubuğu rengi</string>
<string name="pref_background_color_summary">The underlying color of the apps content.</string>
<string name="pref_background_color_title">Background color</string>
<string name="pref_background_color_title">Arka plan rengi</string>
<string name="pref_accent_color_summary">Accents select parts of the UI.</string>
<string name="pref_accent_color_title">Accent color</string>
<string name="pref_accent_color_title">Vurgu rengi</string>
<string name="pref_primary_color_summary">Displayed most frequently across your app.</string>
<string name="pref_primary_color_title">Primary color</string>
<string name="pref_primary_color_title">Birincil renk</string>
<string name="export_bookmarks">Yer imlerini sunucuya dışa aktar</string>
<string name="import_bookmarks">Yer imlerini sunucudan içe aktar</string>
<string name="user_count">User count</string>
@ -1084,9 +1084,9 @@
<string name="release_note_title">What\'s new in %s</string>
<string name="follow_account_update">You can follow my account for updates</string>
<string name="no_instance_reccord">Bu sunucu https://instances.social üzerinde mevcut değil</string>
<string name="display_full_link">Display full link</string>
<string name="share_link">Share link</string>
<string name="link_copy">The URL has been copied to the clipboard</string>
<string name="display_full_link">Tam bağlantıyı görüntüle</string>
<string name="share_link">Bağlantıyı paylaş</string>
<string name="link_copy">URL panoya kopyalandı</string>
<string name="open_other_app">Open with another app</string>
<string name="check_redirect">Check redirect</string>
<string name="no_redirect">This URL does not redirect</string>
@ -1096,25 +1096,25 @@
<string name="set_user_agent_indication">Allows to customize the user agent used for api calls or with the built-in browser.</string>
<string name="set_utm_parameters">Remove UTM parameters</string>
<string name="set_utm_parameters_indication">The app will automatically remove UTM parameters from URLs before visiting a link.</string>
<string name="action_trends">Trends</string>
<string name="trending_now">Trending now</string>
<string name="talking_about">%d people talking</string>
<string name="twitter_accounts">Twitter accounts (via Nitter)</string>
<string name="action_trends">Trendler</string>
<string name="trending_now">Şu an trendlerde</string>
<string name="talking_about">%d kişi konuşuyor</string>
<string name="twitter_accounts">Twitter hesapları (Nitter üzerinden)</string>
<string name="list_of_twitter_accounts">Twitter usernames space separated</string>
<string name="identity_proofs">Identity proofs</string>
<string name="verified_user">Verified identity</string>
<string name="verified_user">Doğrulanmış kimlik</string>
<string name="verified_by">Verified by %1$s (%2$s)</string>
<string name="remove_notification">Delete the notification</string>
<string name="display_more_options">Display more options</string>
<string name="remove_notification">Bildirimi sil</string>
<string name="display_more_options">Daha fazla seçenek göster</string>
<string name="pixelfed_story">Bir Pixelfed hikayesidir</string>
<string name="story_indication">Bir ortam dosyası yüklerseniz otomatik olarak Pixelfed hikayenize yüklenecektir.</string>
<string name="added_to_story">Ortam dosyası hikayenize başarıyla eklendi!</string>
<string name="action_disabled">Action disabled</string>
<string name="action_unfollow">Unfollow</string>
<string name="action_unfollow">Takibi bırak</string>
<string name="error_destination_path">Something went wrong, please check your download directory in settings.</string>
<string name="action_announcements">Announcements</string>
<string name="no_announcements">No announcements!</string>
<string name="add_reaction">Add a reaction</string>
<string name="action_announcements">Duyurular</string>
<string name="no_announcements">Duyuru yok!</string>
<string name="add_reaction">Tepki ekle</string>
<string name="set_custom_tabs_indication">Use your favourite browser inside the app. Uncheck this feature to open links externally.</string>
<string name="set_video_cache">Video cache in MB, zero means no cache.</string>
</resources>

View File

@ -110,7 +110,7 @@
<item>举报这条嘟文吗?</item>
<item>是否屏蔽此域名?</item>
<item>取消该用户的禁言吗?</item>
<item>Unblock this account?</item>
<item>取消屏蔽此帐号?</item>
</string-array>
<string-array name="action_notification">
<item>通知</item>
@ -993,9 +993,9 @@
<string name="set_nitter">用Nitter取代Twitter</string>
<string name="set_nitter_indication">Niter是一种开放源码的替代的 Twitter 的前端,注重保护隐私。</string>
<string name="set_nitter_host">输入你自定义的主机或者留空以使用 nitter.net</string>
<string name="set_bibliogram">Replace Instagram with Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram is an open source alternative Instagram front-end focused on privacy.</string>
<string name="set_bibliogram_host">Enter your custom host or leave blank for using bibliogram.art</string>
<string name="set_bibliogram">将 Instagram 替换成 Bibliogram</string>
<string name="set_bibliogram_indication">Bibliogram 是个注重隐私的 Instagram 开源替选前端。</string>
<string name="set_bibliogram_host">输入你的自定义主机或者留空以使用 bibliogram.art</string>
<string name="set_hide_status_bar">隐藏 Fedilab 通知栏</string>
<string name="set_hide_status_bar_indication">要隐藏留在状态栏里的通知,请点击眼睛图标的按钮,然后取消勾选:“在状态栏内显示”</string>
<string name="set_live_type_indication">通知将被延迟为每30秒产生。这将允许耗尽较少电池。</string>
@ -1114,5 +1114,5 @@
<string name="no_announcements">无通告!</string>
<string name="add_reaction">添加回应</string>
<string name="set_custom_tabs_indication">在应用内使用您最喜欢的浏览器。取消勾选此功能以对外打开链接。</string>
<string name="set_video_cache">Video cache in MB, zero means no cache.</string>
<string name="set_video_cache">以 MB 计算的视频缓存量,零表示无缓存。</string>
</resources>

View File

@ -681,6 +681,7 @@
<!-- languages not translated -->
<string name="languages">Languages</string>
<string name="english" translatable="false">English</string>
<string name="silesian" translatable="false">ślůnski</string>
<string name="french" translatable="false">Français</string>
<string name="arabic" translatable="false">العربية</string>
<string name="kabyle" translatable="false">Taqbaylit</string>

View File

@ -6,7 +6,7 @@ buildscript {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.2'
classpath 'com.android.tools.build:gradle:4.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

View File

@ -0,0 +1,10 @@
Added:
- Silesian localization
Changed:
- Add Silesian in language picker
Fixed:
- Some URLs not clickable
- Empty home timeline
- Some crashes when scrolling

View File

@ -0,0 +1,16 @@
Spiyro:
- Mastodon, Pleroma, Pixelfed, Peertube, GNU Social, Friendica.
Aplikacyjo mo szyroke funkcyje (nojbarzij we Pleromie i Mastodonie):
- Sparcie do wielu kōnt
- Planowanie wiadōmości ze masziny
- Planowanie rozgłosōw
- Zokłodki wiadōmości
- Śledzynie i kōntaktowanie sie ze zdalnymi instancyjami
- Wyciszanie kōnt na jakiś czas
- Akcyje na wielu kōntach po dugim prziciśniyńciu
- Przekłady
- Raje kōnsztu
- Raje wideo

View File

@ -0,0 +1 @@
Fedilab to wielofunkcyjny androidowy klijynt zdecyntralizowanego Fediwersum, co sie skłodo ze mikroblogōw, dzielynio sie fotografijami i udostympniano wideo.

View File

@ -1,6 +1,6 @@
#Fri Mar 06 19:14:19 CET 2020
#Sat Jun 06 18:24:49 CEST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip