diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 47b8c0e7f..20abafe6d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,7 +20,7 @@ We try to follow the [Kotlin Style Guide](https://developer.android.com/kotlin/s You can check the codestyle by running `./gradlew ktlintCheck`. ### Java -Existing code in Java should follow the [Android Style Guide](https://source.android.com/source/code-style), which is what Android uses for their own source code. ```@Nullable``` and ```@NotNull``` annotations are really helpful for Kotlin interoperability. Please don't submit new features written in Kotlin. +Existing code in Java should follow the [Android Style Guide](https://source.android.com/source/code-style), which is what Android uses for their own source code. ```@Nullable``` and ```@NotNull``` annotations are really helpful for Kotlin interoperability. Please don't submit new features written in Java. ### Viewbinding We use [Viewbinding](https://developer.android.com/topic/libraries/view-binding) to reference views. No contribution using another mechanism will be accepted. diff --git a/app/build.gradle b/app/build.gradle index b85e64eea..d096b4d9b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -150,6 +150,9 @@ dependencies { implementation "com.github.bumptech.glide:glide:$glideVersion" implementation "com.github.bumptech.glide:okhttp3-integration:$glideVersion" + kapt "com.github.bumptech.glide:compiler:$glideVersion" + + implementation "com.github.penfeizhou.android.animation:glide-plugin:2.12.0" implementation "io.reactivex.rxjava3:rxjava:3.0.12" implementation "io.reactivex.rxjava3:rxandroid:3.0.0" diff --git a/app/src/main/java/com/keylesspalace/tusky/AccountActivity.kt b/app/src/main/java/com/keylesspalace/tusky/AccountActivity.kt index 6b6e101e4..d0e7a64a6 100644 --- a/app/src/main/java/com/keylesspalace/tusky/AccountActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/AccountActivity.kt @@ -38,6 +38,7 @@ import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat.Type.systemBars +import androidx.core.view.updatePadding import androidx.emoji.text.EmojiCompat import androidx.preference.PreferenceManager import androidx.recyclerview.widget.LinearLayoutManager @@ -146,6 +147,7 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidI animateEmojis = sharedPrefs.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false) hideFab = sharedPrefs.getBoolean("fabHide", false) + handleWindowInsets() setupToolbar() setupTabs() setupAccountViews() @@ -250,15 +252,20 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidI }) } - private fun setupToolbar() { - // set toolbar top margin according to system window insets + private fun handleWindowInsets() { ViewCompat.setOnApplyWindowInsetsListener(binding.accountCoordinatorLayout) { _, insets -> val top = insets.getInsets(systemBars()).top val toolbarParams = binding.accountToolbar.layoutParams as ViewGroup.MarginLayoutParams toolbarParams.topMargin = top + + val bottom = insets.getInsets(systemBars()).bottom + binding.accountCoordinatorLayout.updatePadding(bottom = bottom) + WindowInsetsCompat.CONSUMED } + } + private fun setupToolbar() { // Setup the toolbar. setSupportActionBar(binding.accountToolbar) supportActionBar?.run { diff --git a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt index 0bd8668e1..535a27adb 100644 --- a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt @@ -20,8 +20,11 @@ import android.content.Context import android.content.DialogInterface import android.content.Intent import android.content.res.ColorStateList +import android.graphics.Bitmap import android.graphics.Color import android.graphics.PorterDuff +import android.graphics.drawable.Animatable +import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable import android.graphics.drawable.InsetDrawable import android.net.Uri @@ -868,34 +871,70 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje private fun loadDrawerAvatar(avatarUrl: String, showPlaceholder: Boolean) { val navIconSize = resources.getDimensionPixelSize(R.dimen.avatar_toolbar_nav_icon_size) - glide.asDrawable() - .load(avatarUrl) - .transform( - RoundedCorners(resources.getDimensionPixelSize(R.dimen.avatar_radius_36dp)) - ) - .apply { - if (showPlaceholder) { - placeholder(R.drawable.avatar_default) - } - } - .into(object : CustomTarget(navIconSize, navIconSize) { + val animateAvatars = preferences.getBoolean("animateGifAvatars", false) - override fun onLoadStarted(placeholder: Drawable?) { - if (placeholder != null) { - binding.mainToolbar.navigationIcon = FixedSizeDrawable(placeholder, navIconSize, navIconSize) + if (animateAvatars) { + glide.asDrawable() + .load(avatarUrl) + .transform( + RoundedCorners(resources.getDimensionPixelSize(R.dimen.avatar_radius_36dp)) + ) + .apply { + if (showPlaceholder) { + placeholder(R.drawable.avatar_default) } } + .into(object : CustomTarget(navIconSize, navIconSize) { - override fun onResourceReady(resource: Drawable, transition: Transition?) { - binding.mainToolbar.navigationIcon = FixedSizeDrawable(resource, navIconSize, navIconSize) - } + override fun onLoadStarted(placeholder: Drawable?) { + if (placeholder != null) { + binding.mainToolbar.navigationIcon = FixedSizeDrawable(placeholder, navIconSize, navIconSize) + } + } - override fun onLoadCleared(placeholder: Drawable?) { - if (placeholder != null) { - binding.mainToolbar.navigationIcon = FixedSizeDrawable(placeholder, navIconSize, navIconSize) + override fun onResourceReady(resource: Drawable, transition: Transition?) { + if (resource is Animatable) { + resource.start() + } + binding.mainToolbar.navigationIcon = FixedSizeDrawable(resource, navIconSize, navIconSize) + } + + override fun onLoadCleared(placeholder: Drawable?) { + if (placeholder != null) { + binding.mainToolbar.navigationIcon = FixedSizeDrawable(placeholder, navIconSize, navIconSize) + } + } + }) + } else { + glide.asBitmap() + .load(avatarUrl) + .transform( + RoundedCorners(resources.getDimensionPixelSize(R.dimen.avatar_radius_36dp)) + ) + .apply { + if (showPlaceholder) { + placeholder(R.drawable.avatar_default) } } - }) + .into(object : CustomTarget(navIconSize, navIconSize) { + + override fun onLoadStarted(placeholder: Drawable?) { + if (placeholder != null) { + binding.mainToolbar.navigationIcon = FixedSizeDrawable(placeholder, navIconSize, navIconSize) + } + } + + override fun onResourceReady(resource: Bitmap, transition: Transition?) { + binding.mainToolbar.navigationIcon = FixedSizeDrawable(BitmapDrawable(resources, resource), navIconSize, navIconSize) + } + + override fun onLoadCleared(placeholder: Drawable?) { + if (placeholder != null) { + binding.mainToolbar.navigationIcon = FixedSizeDrawable(placeholder, navIconSize, navIconSize) + } + } + }) + } } private fun fetchAnnouncements() { diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java b/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java index c3d12f918..bed79973e 100644 --- a/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java +++ b/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java @@ -261,6 +261,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter { statusDisplayOptions.useBlurhash(), CardViewMode.NONE, statusDisplayOptions.confirmReblogs(), + statusDisplayOptions.confirmFavourites(), statusDisplayOptions.hideStats(), statusDisplayOptions.animateEmojis(), statusDisplayOptions.quoteEnabled() diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/PollAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/adapter/PollAdapter.kt index 89b3915e6..1a60d8603 100644 --- a/app/src/main/java/com/keylesspalace/tusky/adapter/PollAdapter.kt +++ b/app/src/main/java/com/keylesspalace/tusky/adapter/PollAdapter.kt @@ -18,8 +18,10 @@ package com.keylesspalace.tusky.adapter import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.content.ContextCompat import androidx.emoji.text.EmojiCompat import androidx.recyclerview.widget.RecyclerView +import com.keylesspalace.tusky.R import com.keylesspalace.tusky.databinding.ItemPollBinding import com.keylesspalace.tusky.entity.Emoji import com.keylesspalace.tusky.util.BindingHolder @@ -85,13 +87,19 @@ class PollAdapter : RecyclerView.Adapter>() { when (mode) { RESULT -> { val percent = calculatePercent(option.votesCount, votersCount, voteCount) - val emojifiedPollOptionText = buildDescription(option.title, percent, resultTextView.context) + val emojifiedPollOptionText = buildDescription(option.title, percent, option.voted, resultTextView.context) .emojify(emojis, resultTextView, animateEmojis) resultTextView.text = EmojiCompat.get().process(emojifiedPollOptionText) val level = percent * 100 + val optionColor = if (option.voted) { + R.color.colorBackgroundHighlight + } else { + R.color.colorBackgroundAccent + } resultTextView.background.level = level + resultTextView.background.setTint(ContextCompat.getColor(resultTextView.context, optionColor)) resultTextView.setOnClickListener(resultClickListener) } SINGLE -> { diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java index 444c9c79b..cca833b8a 100644 --- a/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java +++ b/app/src/main/java/com/keylesspalace/tusky/adapter/StatusBaseViewHolder.java @@ -739,11 +739,19 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder { } favouriteButton.setEventListener((button, buttonState) -> { + // return true to play animaion int position = getBindingAdapterPosition(); if (position != RecyclerView.NO_POSITION) { - listener.onFavourite(!buttonState, position); + if (statusDisplayOptions.confirmFavourites()) { + showConfirmFavouriteDialog(listener, statusContent, buttonState, position); + return false; + } else { + listener.onFavourite(!buttonState, position); + return true; + } + } else { + return true; } - return true; }); favouriteButton.setEnabled(!isNotestock); @@ -809,6 +817,23 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder { .show(); } + private void showConfirmFavouriteDialog(StatusActionListener listener, + String statusContent, + boolean buttonState, + int position) { + int okButtonTextId = buttonState ? R.string.action_unfavourite : R.string.action_favourite; + new AlertDialog.Builder(favouriteButton.getContext()) + .setMessage(statusContent) + .setPositiveButton(okButtonTextId, (__, ___) -> { + listener.onFavourite(!buttonState, position); + if (!buttonState) { + // Play animation only when it's favourite, not unfavourite + favouriteButton.playAnimation(); + } + }) + .show(); + } + public void setupWithStatus(StatusViewData.Concrete status, final StatusActionListener listener, StatusDisplayOptions statusDisplayOptions) { this.setupWithStatus(status, listener, statusDisplayOptions, null); @@ -998,7 +1023,7 @@ public abstract class StatusBaseViewHolder extends RecyclerView.ViewHolder { for (int i = 0; i < args.length; i++) { if (i < options.size()) { int percent = PollViewDataKt.calculatePercent(options.get(i).getVotesCount(), poll.getVotersCount(), poll.getVotesCount()); - args[i] = buildDescription(options.get(i).getTitle(), percent, context); + args[i] = buildDescription(options.get(i).getTitle(), percent, options.get(i).getVoted(), context); } else { args[i] = ""; } diff --git a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsFragment.kt index 5b63b6124..1384b558e 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsFragment.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsFragment.kt @@ -85,6 +85,7 @@ class ConversationsFragment : SFragment(), StatusActionListener, Injectable, Res useBlurhash = preferences.getBoolean("useBlurhash", true), cardViewMode = CardViewMode.NONE, confirmReblogs = preferences.getBoolean("confirmReblogs", true), + confirmFavourites = preferences.getBoolean("confirmFavourites", false), hideStats = preferences.getBoolean(PrefKeys.WELLBEING_HIDE_STATS_POSTS, false), animateEmojis = preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false), quoteEnabled = accountManager.activeAccount?.domain in CAN_USE_QUOTE_ID, diff --git a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceListActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceListActivity.kt index 83a2191fe..667360c53 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceListActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/instancemute/InstanceListActivity.kt @@ -17,7 +17,7 @@ class InstanceListActivity : BaseActivity(), HasAndroidInjector { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val binding = ActivityAccountListBinding.inflate(layoutInflater) - setContentView(R.layout.activity_account_list) + setContentView(binding.root) setSupportActionBar(binding.includedToolbar.toolbar) supportActionBar?.apply { diff --git a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationHelper.java b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationHelper.java index 2218e0b64..c0bf149f4 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationHelper.java +++ b/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationHelper.java @@ -659,9 +659,12 @@ public class NotificationHelper { StringBuilder builder = new StringBuilder(notification.getStatus().getContent()); builder.append('\n'); Poll poll = notification.getStatus().getPoll(); - for(PollOption option: poll.getOptions()) { + List options = poll.getOptions(); + for(int i = 0; i < options.size(); ++i) { + PollOption option = options.get(i); builder.append(buildDescription(option.getTitle(), PollViewDataKt.calculatePercent(option.getVotesCount(), poll.getVotersCount(), poll.getVotesCount()), + poll.getOwnVotes() != null && poll.getOwnVotes().contains(i), context)); builder.append('\n'); } diff --git a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt index 037e0c000..0f8b9436a 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt @@ -124,8 +124,9 @@ class PreferencesActivity : restartActivitiesOnExit = true this.restartCurrentActivity() } - "statusTextSize", "absoluteTimeView", "showBotOverlay", "animateGifAvatars", - "useBlurhash", "showCardsInTimelines", "confirmReblogs", "enableSwipeForTabs", "mainNavPosition", PrefKeys.HIDE_TOP_TOOLBAR, "viewPagerOffScreenLimit" -> { + "statusTextSize", "absoluteTimeView", "showBotOverlay", "animateGifAvatars", "useBlurhash", + "showCardsInTimelines", "confirmReblogs", "confirmFavourites", + "enableSwipeForTabs", "mainNavPosition", PrefKeys.HIDE_TOP_TOOLBAR, "viewPagerOffScreenLimit" -> { restartActivitiesOnExit = true } "language" -> { diff --git a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt index 3cc0fe31c..53b8c7904 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt @@ -165,6 +165,13 @@ class PreferencesFragment : PreferenceFragmentCompat(), Injectable { isSingleLineTitle = false } + switchPreference { + setDefaultValue(false) + key = PrefKeys.CONFIRM_FAVOURITES + setTitle(R.string.pref_title_confirm_favourites) + isSingleLineTitle = false + } + switchPreference { setDefaultValue(true) key = PrefKeys.ENABLE_SWIPE_FOR_TABS diff --git a/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportStatusesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportStatusesFragment.kt index 3247e6584..791438e4a 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportStatusesFragment.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportStatusesFragment.kt @@ -115,6 +115,7 @@ class ReportStatusesFragment : Fragment(R.layout.fragment_report_statuses), Inje useBlurhash = preferences.getBoolean("useBlurhash", true), cardViewMode = CardViewMode.NONE, confirmReblogs = preferences.getBoolean("confirmReblogs", true), + confirmFavourites = preferences.getBoolean("confirmFavourites", false), hideStats = preferences.getBoolean(PrefKeys.WELLBEING_HIDE_STATS_POSTS, false), animateEmojis = preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false), quoteEnabled = accountManager.activeAccount?.domain in CAN_USE_QUOTE_ID, diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchNotestockFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchNotestockFragment.kt index c82421685..ffd3f2353 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchNotestockFragment.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchNotestockFragment.kt @@ -64,6 +64,7 @@ class SearchNotestockFragment : SearchFragment? ) diff --git a/app/src/main/java/com/keylesspalace/tusky/entity/Poll.kt b/app/src/main/java/com/keylesspalace/tusky/entity/Poll.kt index 1a4c23548..584b76f8c 100644 --- a/app/src/main/java/com/keylesspalace/tusky/entity/Poll.kt +++ b/app/src/main/java/com/keylesspalace/tusky/entity/Poll.kt @@ -11,7 +11,8 @@ data class Poll( @SerializedName("votes_count") val votesCount: Int, @SerializedName("voters_count") val votersCount: Int?, // nullable for compatibility with Pleroma val options: List, - val voted: Boolean + val voted: Boolean, + @SerializedName("own_votes") val ownVotes: List? ) { fun votedCopy(choices: List): Poll { diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java b/app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java index 89e5e2797..0c415a5ec 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/NotificationsFragment.java @@ -258,6 +258,7 @@ public class NotificationsFragment extends SFragment implements preferences.getBoolean("useBlurhash", true), CardViewMode.NONE, preferences.getBoolean("confirmReblogs", true), + preferences.getBoolean("confirmFavourites", false), preferences.getBoolean(PrefKeys.WELLBEING_HIDE_STATS_POSTS, false), preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false), Arrays.asList(ComposeViewModelKt.getCAN_USE_QUOTE_ID()).contains(accountManager.getActiveAccount().getDomain()) diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/ViewThreadFragment.java b/app/src/main/java/com/keylesspalace/tusky/fragment/ViewThreadFragment.java index 400cb8c23..aae04fde9 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/ViewThreadFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/ViewThreadFragment.java @@ -142,6 +142,7 @@ public final class ViewThreadFragment extends SFragment implements CardViewMode.INDENTED : CardViewMode.NONE, preferences.getBoolean("confirmReblogs", true), + preferences.getBoolean("confirmFavourites", false), preferences.getBoolean(PrefKeys.WELLBEING_HIDE_STATS_POSTS, false), preferences.getBoolean(PrefKeys.ANIMATE_CUSTOM_EMOJIS, false), Arrays.asList(ComposeViewModelKt.getCAN_USE_QUOTE_ID()).contains(accountManager.getActiveAccount().getDomain()) diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/ViewVideoFragment.kt b/app/src/main/java/com/keylesspalace/tusky/fragment/ViewVideoFragment.kt index 35b98ef71..a1930da8d 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/ViewVideoFragment.kt +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/ViewVideoFragment.kt @@ -21,6 +21,7 @@ import android.annotation.SuppressLint import android.os.Bundle import android.os.Handler import android.os.Looper +import android.text.method.ScrollingMovementMethod import android.view.KeyEvent import android.view.LayoutInflater import android.view.View @@ -79,6 +80,7 @@ class ViewVideoFragment : ViewMediaFragment() { ) { binding.mediaDescription.text = description binding.mediaDescription.visible(showingDescription) + binding.mediaDescription.movementMethod = ScrollingMovementMethod() binding.videoView.transitionName = url binding.videoView.setVideoPath(url) @@ -125,7 +127,10 @@ class ViewVideoFragment : ViewMediaFragment() { val videoWidth = mp.videoWidth.toFloat() val videoHeight = mp.videoHeight.toFloat() - if (containerWidth / containerHeight > videoWidth / videoHeight) { + if (isAudio) { + binding.videoView.layoutParams.height = 1 + binding.videoView.layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT + } else if (containerWidth / containerHeight > videoWidth / videoHeight) { binding.videoView.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT binding.videoView.layoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT } else { diff --git a/app/src/main/java/com/keylesspalace/tusky/network/FilterModel.kt b/app/src/main/java/com/keylesspalace/tusky/network/FilterModel.kt index d4c7464f1..062191ad0 100644 --- a/app/src/main/java/com/keylesspalace/tusky/network/FilterModel.kt +++ b/app/src/main/java/com/keylesspalace/tusky/network/FilterModel.kt @@ -29,9 +29,16 @@ class FilterModel @Inject constructor() { } val spoilerText = status.actionableStatus.spoilerText + val attachmentsDescriptions = status.attachments + .mapNotNull { it.description } + return ( matcher.reset(status.actionableStatus.content).find() || - spoilerText.isNotEmpty() && matcher.reset(spoilerText).find() + (spoilerText.isNotEmpty() && matcher.reset(spoilerText).find()) || + ( + attachmentsDescriptions.isNotEmpty() && + matcher.reset(attachmentsDescriptions.joinToString("\n")).find() + ) ) } diff --git a/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt b/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt index ea74d6f04..c0ef7b2f5 100644 --- a/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt +++ b/app/src/main/java/com/keylesspalace/tusky/settings/SettingsConstants.kt @@ -30,6 +30,7 @@ object PrefKeys { const val SHOW_NOTIFICATIONS_FILTER = "showNotificationsFilter" const val SHOW_CARDS_IN_TIMELINES = "showCardsInTimelines" const val CONFIRM_REBLOGS = "confirmReblogs" + const val CONFIRM_FAVOURITES = "confirmFavourites" const val ENABLE_SWIPE_FOR_TABS = "enableSwipeForTabs" const val ANIMATE_CUSTOM_EMOJIS = "animateCustomEmojis" const val USE_QUICK_TOOT = "useQuickToot" diff --git a/app/src/main/java/com/keylesspalace/tusky/util/GlideModule.kt b/app/src/main/java/com/keylesspalace/tusky/util/GlideModule.kt new file mode 100644 index 000000000..774c860e8 --- /dev/null +++ b/app/src/main/java/com/keylesspalace/tusky/util/GlideModule.kt @@ -0,0 +1,7 @@ +package com.keylesspalace.tusky.util + +import com.bumptech.glide.annotation.GlideModule +import com.bumptech.glide.module.AppGlideModule + +@GlideModule +class GlideModule : AppGlideModule() diff --git a/app/src/main/java/com/keylesspalace/tusky/util/StatusDisplayOptions.kt b/app/src/main/java/com/keylesspalace/tusky/util/StatusDisplayOptions.kt index 932f9db44..994c43d8a 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/StatusDisplayOptions.kt +++ b/app/src/main/java/com/keylesspalace/tusky/util/StatusDisplayOptions.kt @@ -15,6 +15,8 @@ data class StatusDisplayOptions( val cardViewMode: CardViewMode, @get:JvmName("confirmReblogs") val confirmReblogs: Boolean, + @get:JvmName("confirmFavourites") + val confirmFavourites: Boolean, @get:JvmName("hideStats") val hideStats: Boolean, @get:JvmName("animateEmojis") diff --git a/app/src/main/java/com/keylesspalace/tusky/util/StatusViewHelper.kt b/app/src/main/java/com/keylesspalace/tusky/util/StatusViewHelper.kt index 00f6699da..f2e48f4a2 100644 --- a/app/src/main/java/com/keylesspalace/tusky/util/StatusViewHelper.kt +++ b/app/src/main/java/com/keylesspalace/tusky/util/StatusViewHelper.kt @@ -23,6 +23,7 @@ import android.view.View import android.widget.ImageView import android.widget.TextView import androidx.annotation.DrawableRes +import androidx.core.content.ContextCompat import com.bumptech.glide.Glide import com.keylesspalace.tusky.R import com.keylesspalace.tusky.entity.Attachment @@ -310,13 +311,19 @@ class StatusViewHelper(private val itemView: View) { if (i < options.size) { val percent = calculatePercent(options[i].votesCount, poll.votersCount, poll.votesCount) - val pollOptionText = buildDescription(options[i].title, percent, pollResults[i].context) + val pollOptionText = buildDescription(options[i].title, percent, options[i].voted, pollResults[i].context) pollResults[i].text = pollOptionText.emojify(emojis, pollResults[i], animateEmojis) pollResults[i].visibility = View.VISIBLE val level = percent * 100 + val optionColor = if (options[i].voted) { + R.color.colorBackgroundHighlight + } else { + R.color.colorBackgroundAccent + } pollResults[i].background.level = level + pollResults[i].background.setTint(ContextCompat.getColor(pollResults[i].context, optionColor)) } else { pollResults[i].visibility = View.GONE } diff --git a/app/src/main/java/com/keylesspalace/tusky/viewdata/PollViewData.kt b/app/src/main/java/com/keylesspalace/tusky/viewdata/PollViewData.kt index 0cd73bc98..3dc5ca10c 100644 --- a/app/src/main/java/com/keylesspalace/tusky/viewdata/PollViewData.kt +++ b/app/src/main/java/com/keylesspalace/tusky/viewdata/PollViewData.kt @@ -39,7 +39,8 @@ data class PollViewData( data class PollOptionViewData( val title: String, var votesCount: Int, - var selected: Boolean + var selected: Boolean, + var voted: Boolean ) fun calculatePercent(fraction: Int, totalVoters: Int?, totalVotes: Int): Int { @@ -51,10 +52,14 @@ fun calculatePercent(fraction: Int, totalVoters: Int?, totalVotes: Int): Int { } } -fun buildDescription(title: String, percent: Int, context: Context): Spanned { - return SpannableStringBuilder(context.getString(R.string.poll_percent_format, percent).parseAsHtml()) - .append(" ") - .append(title) +fun buildDescription(title: String, percent: Int, voted: Boolean, context: Context): Spanned { + val builder = SpannableStringBuilder(context.getString(R.string.poll_percent_format, percent).parseAsHtml()) + if (voted) { + builder.append(" ✓ ") + } else { + builder.append(" ") + } + return builder.append(title) } fun Poll?.toViewData(): PollViewData? { @@ -66,15 +71,16 @@ fun Poll?.toViewData(): PollViewData? { multiple = multiple, votesCount = votesCount, votersCount = votersCount, - options = options.map { it.toViewData() }, - voted = voted + options = options.mapIndexed { index, option -> option.toViewData(ownVotes?.contains(index) == true) }, + voted = voted, ) } -fun PollOption.toViewData(): PollOptionViewData { +fun PollOption.toViewData(voted: Boolean): PollOptionViewData { return PollOptionViewData( title = title, votesCount = votesCount, - selected = false + selected = false, + voted = voted ) } diff --git a/app/src/main/res/layout/fragment_view_video.xml b/app/src/main/res/layout/fragment_view_video.xml index 180481c45..291361371 100644 --- a/app/src/main/res/layout/fragment_view_video.xml +++ b/app/src/main/res/layout/fragment_view_video.xml @@ -20,6 +20,7 @@ android:textAlignment="center" android:textColor="#eee" android:textSize="?attr/status_text_medium" + android:scrollbars="vertical" app:layout_constraintTop_toTopOf="parent" tools:text="Some media description" /> diff --git a/app/src/main/res/layout/item_media_preview.xml b/app/src/main/res/layout/item_media_preview.xml index 27b58e7a1..3d89335fc 100644 --- a/app/src/main/res/layout/item_media_preview.xml +++ b/app/src/main/res/layout/item_media_preview.xml @@ -141,6 +141,8 @@ android:importantForAccessibility="no" android:textSize="?attr/status_text_medium" android:visibility="gone" + android:maxLines="10" + android:ellipsize="end" app:drawableTint="?android:attr/textColorTertiary" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -155,6 +157,8 @@ android:importantForAccessibility="no" android:textSize="?attr/status_text_medium" android:visibility="gone" + android:maxLines="10" + android:ellipsize="end" app:drawableTint="?android:attr/textColorTertiary" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/status_media_label_0" /> @@ -169,6 +173,8 @@ android:importantForAccessibility="no" android:textSize="?attr/status_text_medium" android:visibility="gone" + android:maxLines="10" + android:ellipsize="end" app:drawableTint="?android:attr/textColorTertiary" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/status_media_label_1" /> @@ -183,6 +189,8 @@ android:importantForAccessibility="no" android:textSize="?attr/status_text_medium" android:visibility="gone" + android:maxLines="10" + android:ellipsize="end" app:drawableTint="?android:attr/textColorTertiary" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/status_media_label_2" /> diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index b4a49a201..b799f3671 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -215,6 +215,11 @@ %1$s, %2$s, و %3$s %1$s و %2$s + %d تفاعلات جديدة + تفاعل جديد + تفاعلين جديدين + %d تفاعلات جديدة + %d تفاعلات جديدة %d تفاعلات جديدة حساب مقفل @@ -330,6 +335,11 @@ %1$s و %2$s %1$s و %2$s و %3$d آخَرون + لقد بلغت الحد الأقصى مِن الألسنة %1$d + لقد بلغت الحد الأقصى مِن الألسنة %1$d + لقد بلغت الحد الأقصى مِن الألسنة %1$d + لقد بلغت الحد الأقصى مِن الألسنة %1$d + لقد بلغت الحد الأقصى مِن الألسنة %1$d لقد بلغت الحد الأقصى مِن الألسنة %1$d الوسائط: %s @@ -508,4 +518,26 @@ إلغاء كتم إشعارات %s إلغاء كتم %s إخفاء عنوان شريط الأدوات العلوي + الاعلانات + أتريد حقا حذف القائمة %s؟ + فشلت عملية إرسال التبويق! + حُذفَت المسودة + اشترك + إلغاء الإشتراك + نشر %s للتوّ + احذف المحادثة + هل تريد حذف هذه المحادثة؟ + تبويقات جديدة + مرفقات + المدة + لا توجد إعلانات. + ملاحظتك الخاصة عن هذا الحساب + تم حفظها! + راجع الإشعارات + صوت + لقد حُذِف التبويق الذي حررت من أجله مسودة الرد + شخص ما أنا مشترك في حسابه قد نشر تبويقا جديدا + حرّك الإيموجيات المخصصة + إخفاء الإحصائيات الكمية عن المنشورات + إخفاء الإحصائيات الكمية عن الملفات التعريفية \ No newline at end of file diff --git a/app/src/main/res/values-en-rAU/strings.xml b/app/src/main/res/values-en-rAU/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-en-rAU/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 0df2d7f7f..3d620a7a3 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -204,6 +204,7 @@ %1$s, %2$s, y %3$s %1$s y %2$s + %d nueva interacción %d nuevas interacciones Cuenta protegida @@ -313,6 +314,7 @@ %1$s y %2$s %1$s, %2$s y %3$d más + máximo de %1$d pestaña alcanzada máximo de %1$d pestañas alcanzadas Menciones @@ -471,7 +473,7 @@ Etiquetas Añadir etiqueta %s solicita seguirte - Fondo + Abajo Arriba Posición de navegación principal Mostrar degradados colorido para los medios ocultos @@ -487,7 +489,8 @@ Anuncios %s recién publicado - No puedes cargar más de %1$d archivos adjuntos multimedia. + No puedes cargar más de %1$d archivo multimedia adjunto. + No puedes cargar más de %1$d archivos multimedia adjuntos. Esconder las estadísticas cuantitativas de los perfiles Esconder las estadísticas cuantitativas de las publicaciones @@ -498,7 +501,7 @@ alguien al que estoy suscrito publicó un nuevo toot Algunas informaciones que podríam afectar tu bienestar van a ser ocultas. Esto incluye: \n -\n- Notificaciones de favoritos, impulsos e seguidores +\n- Notificaciones de favoritos, impulsos y seguidores \n- Conteo de favoritos e impulsos en toots \n- Estadísticas de seguidores e toots en perfiles \n @@ -512,5 +515,13 @@ Duración Adjuntos Audio - Limitar notificaciones de cronología + Limitar cronología de notificaciones + Quitar marcador + Aunque su cuenta no está bloqueada, el personal de %1$s pensó que podría querer revisar las solicitudes de seguimiento de estas cuentas manualmente. + Suscribir + ¿Eliminar esta conversación\? + Animar emojis personalizados + Darse de baja + Eliminar conversación + Mostrar diálogo de confirmación antes de marcar como favorito diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index ff0685594..1cc56f7cd 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -2,7 +2,7 @@ Errorea gertatu da. Eremu hau ezin da hutsik egon. - Domeinu izen okerra. + Domeinu baliogabea sartu da Akatsa saioa hasterakoan. Ez da web nabigatzailerik aurkitu. Identifikatu gabeko baimentza akatsa gertatu da. @@ -104,10 +104,10 @@ Partekatu media hona… Bidalia! Erabiltzailea desblokeatuta - Iada erabiltzailea ez dago isilarazia. + Erabiltzailea isilgabetuta Bidalia! Erantzuna ongi bidali da. - Instantzia hautatu + Zein instantzia\? Zer duzu buruan? Edukiaren abisua Agertuko den izena @@ -119,13 +119,13 @@ Goiburua Zer da instantzia? Konektatzen… - Sartu hemen helbidea edo mastodon.eus, mastodon.jalgi.eus, mastodon.social bezalako edozein instantzia, + Edozein instantziaren helbidea edo domeinua hemen sar daiteke, hala nola mastodon.eus, mastodon.jalgi.eus, mastodon.social eta gehiago!, \n -\n Oraindik ez baduzu konturik, instantziaren izena sartu eta bertan kontua sortu dezakezu. +\nOraindik konturik ez baduzu, sartu nahi duzun instantziaren izena sar dezakezu eta bertan sortu kontua. \n -\nInstantzia zure kontua dagoen gunea da, baino beste instantzietako erabiltzaileak zurean egongo balira bezala jarraitu ditzakezu. +\nInstantzia zure kontua ostatatzen den leku bakarra da, baina beste instantzia batzuetako jendearekin erraz komunikatu eta jarrai dezakezu gune berean egongo bazina bezala. \n -\nInformazio gehiago joinmastodon.org helbidean topatuko duzu. +\nInformazio gehiago joinmastodon.org webgunean aurki daiteke. Mediaren igoera bukatzen Igotzen… Jaitsi @@ -142,7 +142,7 @@ Soinuarekin jakinarazi Bibrazioarekin jakinarazi Led-arekin jakinarazi - Noiz jakinarazi: + Jakinarazi noiz Aipatzen naute Jarraitzen didate Bultzatzen naute @@ -193,6 +193,7 @@ %1$s, %2$s eta %3$s %1$s eta %2$s + interakzio berri %d %d interakzio berri Kontu babestua @@ -245,7 +246,7 @@ Kontua babestu Jarraitzaileak eskuz onartu beharko dituzu Zirriborroa gorde? - Tuta ezabatzen… + Tuta bidaltzen… Errorea tuta bidaltzerakoan Tuta bidaltzen Bidalketa ezeztatua @@ -308,7 +309,7 @@ Estekak Ireki media #%d %s bezala ireki - ... bezala partekatu + … bezala partekatu Media jaisten Media jaisten %s ez dago ezkutatua @@ -353,12 +354,12 @@ CC-BY 4.0 CC-BY-SA 4.0 - <b>%1$s</b> Gogoko - <b>%1$s</b> Gogoko + Gogoko %1$s + %1$s Gogoko - <b>%s</b> Bultzada - <b>%s</b> Bultzada + Bultzada %s + %s Bultzada Bultzatuta Gogokoa @@ -366,6 +367,7 @@ %1$s eta %2$s %1$s, %2$s eta %3$d gehiago + gehienezko %1$d fitxa iritsita gehienezko %1$d fitxa iritsita Media: %s @@ -390,7 +392,7 @@ %1$s • %2$s Boto %s - %s Boto + %s boto %s amaitzen da Itxita @@ -454,7 +456,7 @@ Mututu elkarrizketa %s(e)k zu jarraitzeko eskatu dizu Traolak - Ez erakutsi jakinarazpenak + Jakinarazpenak ezkutatu Desmututu %s Ezkutatu goiko tresna-barraren izenburua Erakutsi berrespen-abisua tuta bultzatu aurretik @@ -474,4 +476,49 @@ Desmututu %s Mututu %s(r)en jakinarazpenak Desmututu %s(r)en jakinarazpenak + Jakinarazpenak berrikusi + Erakutsi baieztapen elkarrizketa-koadroa gogokoenetara gehitu aurretik + Zure kontua blokeatuta ez badago ere, %1$s-ko langileek kontu hauetako eskaerak eskuz berrikusi nahi dituzula pentsatu dute. + harpidedun naizen norbaitek tut berria argitaratu du + Eranskinak + Ziur %s zerrenda ezabatu nahi duzula\? + Audioa + Harpidetu + Elkarrizketa ezabatu nahi duzu\? + Animatu emoji pertsonalizatuak + Erantzunaren informazioa ezin izan da kargatu + Profiletan estatistika kuantitatiboak ezkutatu + Zirriborroa ezabatu da + Erantzuna idatzi zenuen tuta ezabatu da + Ongizatea + + Ezin duzu multimedia eranskin %1$d baino gehiago kargatu. + Ezin dituzu %1$d multimedia eranskin baino gehiago kargatu. + + Denbora-lerroaren jakinarazpenak mugatu + Iraupena + Zehaztugabea + Harpidetza kendu + Elkarrizketa ezabatu + Ez daude iragarkirik. + %s argitaratu berri du + Gordeta! + Tut berriak + + Pertsona %s + %s pertsona + + Iragarpenak + Jakinarazpenak harpidetuta zauden norbaitek tut berria argitaratu duenean + Kontu honi buruzko zure ohar pribatua + Tut honek ezin izan du bidali! + Zure ongizate mentalean eragina izan dezaketen zenbait informazio ezkutatuta egongo dira. Honek honako hauek ditu: +\n +\n - Gogokoak, bultzadak eta jarraitzaileen jakinarazpenak +\n - Tutetan gogokoen eta bultzaden kopurua +\n - Profiletan jarraitzaileen eta argitalpenen estatistikak +\n +\nPush-jakinarazpenek ez dute eraginik izango, baina jakinarazpenen hobespenak eskuz berrikus ditzakezu. + Mezuetan estatistika kuantitatiboak ezkutatu + Laster-marka kendu \ No newline at end of file diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 5a5088644..084e4832e 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -515,4 +515,6 @@ نامعیّن با این که حسابتان قفل نیست، کارکنان %1$s فکر کردند ممکن است بخواهید درخواست‌های پی‌گیری از این حساب‌ها را دستی بازبینی کنید. + حذف این گفت‌وگو؟ + حذف گفت‌وگو diff --git a/app/src/main/res/values-fr-rBE/strings.xml b/app/src/main/res/values-fr-rBE/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-fr-rBE/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-fy/strings.xml b/app/src/main/res/values-fy/strings.xml new file mode 100644 index 000000000..69cc8b7dc --- /dev/null +++ b/app/src/main/res/values-fy/strings.xml @@ -0,0 +1,269 @@ + + + Ûnjildich domein ynfierd + Dit mei net leech wêze. + Systeem standert + Emoji styl + Nei it klemboerd kopiearre + Gearstelle + Ferstjoeren ôfbrutsen + Toots oan it ferstjoeren + Flater by it ferstjoeren fan toot + Toot oan it ferstjoeren… + Skets bewarje\? + Fuortsmite + Ûnderskrift pleatse + Koe ûnderskrift net pleatse + Account oan de list tafoegje + Sykje om minsken dy\'t jo folgje + Pas de list oan + Smyt de list fuort + Neam de list om + Meitsje in list oan + Koe list net fuortsmite + Koe list net omneame + Koe list net oanmeitsje + Listen + Listen + Nij Mastodon Account Tafoegje + Account Tafoegje + Fernije + Fuortsmite + Filter oanpasse + Filter tafoegje + Petearen + mear lade + Oan it reagearren op @%s + Media + Altyd gefoeliche ynhâld sjen litte + Folget jo + %dy + oer %ds + oer %dm + oer %dh + oer %dd + Taheaksels + Lûd + Fideo + Ôfbyldingen + Keppeling nei toot diele + Ynhâld fan toot diele + Tusky %s + Oer + + %d nije ynteraksje + %d nije ynteraksjes + + %1$s en %2$s + %1$s, %2$s, en %3$s + Nije toots + Favoriten + Folgfersyken + Nije Folgers + Grutst + Grut + Gewoan + Lyts + Lytst + Allinnich folgers + Iepenbier + Ûnder + Boppe + Koe ynstellingen net syngronisearje + Media altyd as gefoelich oanmerke + HTTP proksje poarte + HTTP proksje tsjinner + HTTP proksje ynskeakelje + HTTP proksje + Proksje + Media foarfertoaningen delhelje + Reaksjes sjen litte + Ljepblêden + Taal + Webblêder + Systeem Opmaak Brûke + Automatysk as de sinne ûnder giet + Swart + Ljocht + Tsjuster + Filters + Applikaasje Tema + Uterlik + Ien dy\'t ik folgje hat in nije toot pleatst + Myn berjochten bin as favoryt oanmurken + Folgfersyk + Folgers + beneamd + Op\'e hichte steld wurde mei in ljochtsje + Op\'e hichte steld wurde mei in trilling + Op\'e hichte stelt wurde mei in lûdsje + Notifikaasjes + Notifikaasjes + Notifikaasjes ferbergje + \@%s negearje\? + \@%s blokkearje\? + Folsleine domein ferbergje + Dit petear fuortsmite\? + Dizze toot fuortsmite en opnij opstelle\? + Dizze toot fuortsmite\? + Dit account net mear folgje\? + Folgfersyk ynlûke\? + Delhelje + Oan it uploaden… + It Uploaden fan Media oan it Ôfrûnjen + Oan it ferbinen… + Reagearre… + Gjin resultaten + Sykje… + Ynhâld warskôging + Wat bard der\? + Reaksje mei sukses ferstjoerd. + Ferstjoerd! + %s net mear ferburgen + Brûker net mear negearre + Brûker net mear blokkearre + Ferstjoerd! + Media ferstjoere nei… + Toot ferstjoere nei… + Toot URL ferstjoere nei… + Media oan it delheljen + Media delhelje + Diele as… + Iepenje as %s + Keppeling kopiearje + Oan it delheljen fan %1$s + Media #%d iepenje + Keppelingen + Favoriten besjen + Keppelingen + Ljepblêd Tafoegje + Toot ynplanne + Emoji toetseboerd + Ynhâld warskôging + Toot sichtberheid + Ynplanne toots + Sketsen + Sykje + Net akseptearje + Akseptearje + Ûngedien meitsje + Oanpasse + Profyl oanpasse + Bewarje + Laad iepenje + Media ferbergje + Beneame + Petear net mear negearre + Petear negearre + %s net mear negearre + %s negearre + Notifikaasjes fan %s negearre + Notifikaasjes fan %s net mear negearre + %s net mear negearre + Net mear negearre + Negearre + Diele + Foto nimme + Fragelist tafoegje + Media tafoegje + Yn webblêder iepenje + Media + Folgfersyken + Ferburgen domeinen + Blokkearre brûkers + Negearre brûkers + Blêdwiizers + Favoriten + Account Foarkarren + Foarkarren + Profyl + Slute + Opnij probearje + TOOT! + TOOT + Fuortsmite en opnij opstelle + Petear fuortsmite + Fuortsmite + Oanpasse + Oanjaan + Net mear blokkearje + Blokkearje + Net mear folgje + Folgje + Útlogge + Ynlogge mei Mastodon + Gearstelle + Mear + Net mear as favoryt oanmerke + As favoryt oanmerke + Reagearje + Flugge Reaksje + Oanfoljende opmerkingen\? + Jou @%s oan + %s hat krekt in berjocht pleatst + %s fersiket jo te folgjen + %s folget jo + %s hat jo toot as favoryt oanmurken + Hjir is neat. Lûk nei ûnderen om te ferfarskjen! + Hjir is neat. + Yntearre + Ûttearre + Minder sjen litte + Mear sjen litte + Klik om te besjen + Media ferburgen + Gefoelige ynhâld + \@%s + Lisinsjes + Ynplanne toots + Sketsen + Jo profyl oanpasse + Folgfersyken + Ferburgen domeinen + Blokkearre brûkers + Negearre brûkers + Blêdwiizers + Favoriten + Folgers + Folget + Fêstset + Mei reaksjes + Berjochten + Toot + Ljepblêden + Direkte Berjochten + Federearre + Lokaal + Notifikaasjes + Thús + Flater by it ferstjoeren fan de toot. + De upload is mislearre. + Ôfbyldingen en fideo\'s kinne net beide taheake wêze oan deselde status. + Tastimming om media op te slaan is nedich. + Tastimming om media te lêzen is nedich. + Die triem koe net iepene wurde. + Dat type triem kin net upload wurde. + Lûdstriemen moatte lytser as 40MB wêze. + Fideo\'s moatte lytse as 40MB wêze. + De triem moat lytser as 8MB wêze. + De status is te lang! + Koe gjin ynlogtoken krije. + Ferifikaasje ôfkard. + Der die harren in net definiearre flater foar. + Koe gjin webblêder fine om te brûken. + In netwurk flater die harren foar! Kontrolearje jo ferbining en probearje it noch ris! + Der die harren in flater foar. + Profylôfbylding + Oer dy + Hashtags + Boosts sjen litte + Auteur fan boost iepenje + Hashtags + Nei standert ynstelling weromsette + Boosts sjen litte + Boosts ferburgje + Boost fuorthelje + Boost + %s hat dyn toot boost + Oankundigingen + \ No newline at end of file diff --git a/app/src/main/res/values-gd/strings.xml b/app/src/main/res/values-gd/strings.xml index f858ce022..2dd5c4b95 100644 --- a/app/src/main/res/values-gd/strings.xml +++ b/app/src/main/res/values-gd/strings.xml @@ -221,14 +221,14 @@ Fo cheadachas Apache License (chì thu lethbhreac dheth gu h-ìosal) Tha còs is maoin o na pròiseactan open source seo am broinn Tusky: Na brosnaich tuilleadh - Brosnaich dhan èisteachd tùsail + Brosnaich dhan èisteachd thùsail Chaidh %1$s a ghluasad gu: Robotair Dh’fhàillig an luchdadh a-nuas Seata làithreach nan Emoji aig Google Seata stannardach nan Emoji aig Mastodon Emojis Blob aig Android 4.4–7.1 - Seata tùsail nan Emojis air an uidheam agad + Seata bunaiteach nan Emojis air an uidheam agad Ath-thòisich Uaireigin eile Feumaidh tu Tusky ath-thòiseachadh gus na roghainnean seo a chur an sàs @@ -368,7 +368,7 @@ Dh’fhàillig le sioncronachadh nan roghainnean ’Ga fhoillseachadh (ga shioncronachadh le frithealaiche) Cuir comharra ri meadhanan an-còmhnaidh gu bheil iad frionasach - Prìobhaideachd thùsail nam post + Prìobhaideachd bhunaiteach nam post Port progsaidh HTTP Frithealaiche progsaidh HTTP Cuir an comas a’ phrogsaidh HTTP @@ -532,4 +532,6 @@ Ged nach eil an cunntas agad glaiste, tha sgioba %1$s dhen bheachd gum b’ fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh. A bheil thu airson an còmhradh seo a sguabadh às\? Sguab às an còmhradh + Thoir an comharra-lìn air falbh + Ceall còmhradh dearbhaidh mus dèid post ’na annsachd \ No newline at end of file diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index d63b34135..dbf0f5b85 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -159,8 +159,8 @@ quedan %d horas - queda %s día - quedan %s días + queda %d día + quedan %d días Rematou unha enquisa creada por ti Rematou unha enquisa na que votaches @@ -510,4 +510,6 @@ Aínda que a túa conta non está bloqueada, a administración de %1$s opina que debes revisar manualmente as peticións de seguimento destas contas. Eliminar esta conversa\? Eliminar conversa + Eliminar marcador + Mostrar diálogo de confirmación antes de favorecer \ No newline at end of file diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index af8b146e6..6d240c64b 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -508,4 +508,8 @@ einhver sem ég er áskrifandi að birti nýtt tíst %s sendi inn rétt í þessu Jafnvel þótt aðgangurinn þinn sé ekki læstur, fannst starfsfólki %1$s að þú gætir viljað yfirfara handvirkt fylgjendabeiðnir frá þessum aðgöngum. + Fjarlægja bókamerki + Birta staðfestingarglugga áður en sett er í eftirlæti + Eyða þessu samtali\? + Eyða samtali \ No newline at end of file diff --git a/app/src/main/res/values-lb/strings.xml b/app/src/main/res/values-lb/strings.xml new file mode 100644 index 000000000..a6b3daec9 --- /dev/null +++ b/app/src/main/res/values-lb/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 81a89d731..86549097e 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -112,4 +112,53 @@ ടാബുകൾ അറിയിപ്പുകൾ പ്രഖ്യാപനങ്ങൾ + പിന്നീട് + സംരക്ഷിച്ചു! + %s ബൂസ്റ്റ് ചെയ്തു + ഫലങ്ങൾ ഒന്നും ഇല്ല + അയച്ചൂ! + പങ്കിടുക + ബ്രൗസർ + പുതിയ സൂചനകൾ + ലിങ്കുകൾ + ബൂസ്റ്റ് ചെയ്യേണ്ട + പ്രയോഗിക്കുക + അക്കൗണ്ട് ചേർക്കുക + സൂചിപ്പിച്ചു + യന്ത്രം‍ + രൂപം + നിങ്ങളെ പിന്തുടരുന്നു + ഫോട്ടോ എടുക്കുക + തിരയുക… + ചിത്രങ്ങൾ + കൂടുതൽ ലഭ്യമാക്കുക + സൂചനകൾ + ബയോ + %1$s + സംഭാഷണങ്ങൾ + മറുപടി… + നിരസിക്കുക + കറുപ്പ് + തുടരുക + സമയരേഖകൾ + പ്രോക്സി + മുന്നറിയിപ്പുകൾ + മായ്ക്കുക + നീക്കം ചെയ്യുക + ബൂസ്റ്റുകൾ + മീഡിയ ചേർ‍ക്കുക + അക്കൗണ്ടുകൾ + മറുപടികൾ കാണിക്കൂ + സംരക്ഷിക്കുക + ഫിൽടറുകൾ + ഭാഷ + ഉള്ളടക്കം + സൂചനകൾ + പുതുക്കുക + അവതാർ + ലിങ്കുകൾ + \@%s + വിഡിയോ + സൂചിപ്പിക്കുക + നീക്കം ചെയ്യുക \ No newline at end of file diff --git a/app/src/main/res/values-night/theme_colors.xml b/app/src/main/res/values-night/theme_colors.xml index fd3cd8192..81b58754a 100644 --- a/app/src/main/res/values-night/theme_colors.xml +++ b/app/src/main/res/values-night/theme_colors.xml @@ -15,6 +15,7 @@ @color/tusky_grey_70 @color/tusky_grey_30 + @color/tusky_grey_50 @color/tusky_grey_25 @color/tusky_orange diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 0cd05164e..7ae6c66c4 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -517,4 +517,12 @@ Hoofd navigatiepositie Dit gesprek verwijderen\? Gesprek verwijderen + Ook al heb je geen besloten account, de medewerkers van %1$s dachten dat je misschien de volgverzoeken van deze accounts handmatig zou willen controleren. + Bepaalde informatie die invloed kan hebben op uw geestelijk welzijn zal worden verborgen. Dit bevat onder andere: +\n +\n- Favoriet/Boost/Volg notificaties +\n- Favoriet/Boost/Aantal boosts per toot +\n- Volger/Bericht statistieken op profielen +\n +\nPush-notificaties zullen niet worden beïnvloed, maar uw kunt uw notificatie voorkeuren handmatig wijzigen. \ No newline at end of file diff --git a/app/src/main/res/values-no-rNB/strings.xml b/app/src/main/res/values-no-rNB/strings.xml index bb2b4fad0..ab79b91d6 100644 --- a/app/src/main/res/values-no-rNB/strings.xml +++ b/app/src/main/res/values-no-rNB/strings.xml @@ -510,4 +510,6 @@ Selv om kontoen din ikke er låst, har %1$s administratorer markert disse følgeforespørsler for manuell godkjenning. Slette denne samtalen\? Slett samtale + Slett bokmerke + Vis bekreftelsesdialog når favoritt skal legges til \ No newline at end of file diff --git a/app/src/main/res/values-oc/strings.xml b/app/src/main/res/values-oc/strings.xml index f62aa73cf..0cd0a773e 100644 --- a/app/src/main/res/values-oc/strings.xml +++ b/app/src/main/res/values-oc/strings.xml @@ -501,4 +501,13 @@ Amagar pas mai a %s Suprimir la conversacion Anóncias + + Podètz pas enviar mai de %1$d pèça junta. + Podètz pas enviar mai de %1$d pèças juntas. + + Amagar las estatisticas dels perfils + Amagar las estatisticas dels tuts + Limitar las notificacions de la cronologia + Amagar lo títol ennaut de la barra + Afichar una fenèstra de confirmacion abans de partejar \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 335539f25..c834bf092 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -20,7 +20,7 @@ Strona główna Powiadomienia Lokalne - Federalne + Globalne Wątek Wpisy Z odpowiedziami @@ -68,7 +68,7 @@ Zamknij Profil Preferencje - Polubione + Ulubione Wyciszeni użytkownicy Zablokowani użytkownicy Prośby o możliwość śledzenia @@ -276,7 +276,7 @@ Zwiń Nic tu nie ma. Usuń z ulubionych - Usuń i napisz jeszcze raz + Usuń i przeredaguj Ustawienia konta Linki Wzmianki @@ -461,7 +461,7 @@ Napędzane przez Tusky Błąd przy wyszukiwaniu wpisu %s Zakładki - Zakładka + Dodaj do zakładek Zakładki Dodane do zakładek Wybierz listę @@ -531,7 +531,7 @@ Zapisano! Twoja prywatna notatka o tym koncie Czas nieokreślony - Audio + Dźwięk Powiadomienia o opublikowaniu nowego wpisu przez kogoś, kogo obserwujesz Pozycja głównego paska nawigacji Animuj niestandardowe emoji @@ -540,4 +540,6 @@ Usuń konwersację %s opublikował/a post %s poprosił(a) o możliwość śledzenia Cię + Usuń z zakładek + Pytaj o potwierdzenie przed dodaniem do ulubionych \ No newline at end of file diff --git a/app/src/main/res/values-si/strings.xml b/app/src/main/res/values-si/strings.xml index d9993b2f9..5b88bf6f1 100644 --- a/app/src/main/res/values-si/strings.xml +++ b/app/src/main/res/values-si/strings.xml @@ -8,10 +8,265 @@ ගිණුම් විනාඩි 5 විනාඩි 30 - හෝරා 6 - හෝරා 1 - දින 3 - දින 1 - දින 7 + පැය 6 + පැය 1 + දවස් 3 + දවස් 1 + දවස් 7 සංස්කරණය + පිළිතුරු සමඟ + අවහිර කළ පරිශීලකයින් + කටුපිටපත් + කිසිවක් නැත. නැවුම් කිරීමට පහළට අදින්න! + ඉක්මන් පිළිතුර + පොත්යොමුව ඉවත් කරන්න + ටූට් + අවහිර කළ පරිශීලකයින් + අතිරික්සුවෙන් විවෘත කරන්න + වාර්තා කරන්න + ප්‍රතිඵල නැත + සම්බන්ධ වෙමින්… + දැනුම්දීම් + ප්‍රසිද්ධ + ඇමුණුම් + නව සැඳහුම් + රචනා කරන්න + තව පෙන්වන්න + ටූට් හි පිටපතක් ඔබගේ කටුපිටපත් තුළට සුරකින ලදි + මාධ්‍ය සඟවන්න + පැතිකඩ සංස්කරණය + යැවිණි! + යළි සකසන්න + අඩුවෙන් පෙන්වන්න + තත්. %d කින් + නිහඬ කළ පරිශීලකයින් + බෙදාගන්න + %1$s ගෙන ගොස් ඇත: + ටූට් වෙත සබැඳියක් බෙදාගන්න + බලපත්‍ර + පැතිකඩ සංස්කරණය + දර්ශන නාමය + මධ්‍යම + ශ්‍රව්‍ය + දැනුම්දීම් පෙරහන පෙන්වන්න + දව. %d + නික්මෙන්න + පෙරහන සංස්කරණය + %s වෙතින් දැනුම්දීම් නිහඬ කරන්න + %1$s, %2$s, සහ %3$s + මාස්ටඩන් හි සම්මත ඉමෝජි කට්ටලය + %1$s • %2$s + යළි උත්සාහය + ගිණුම අගුළුලන්න + මාධ්‍ය සැඟවී ඇත + පිළිතුර සාර්ථකව යැවිණි. + ඒකාබද්ධ + උඩුගත වෙමින්… + ගිණුම එකතු කරන්න + ශීර්ෂය + + පැය %d ක් ඉතිරිය + පැය %d ක් ඉතිරිය + + ප්‍රියතමය ඉවත් කරන්න + පිළිතුරෙහි තොරතුරු පූරණය වීමට අසමත් විය + \@%s වාර්තා කරන්න + අතිරේක අදහස්\? + සඳහන් කළ + වෙත ටූට් ඒ.ස.නි. බෙදාගන්න… + දීප්ත + කටුපිටපත සුරකින්නද\? + සංවේදී අන්තර්ගතයකි + ස්වයංක්‍රමලේඛය + පොත්යොමුව + ගූගල් හි වත්මන් ඉමෝජි කට්ටලය + ස්වයංක්‍රීව ඉර බැසීමේදී + වාර්තා කිරීමට අසමත් විය + අවු. %d + %s ලෙස විවෘත කරන්න + ප්‍රියතමයන් පෙන්වන්න + වි. %d කින් + + ජන්ද %s + ජන්ද %s + + තව + පොත්යොමු + %s ඔබව සඳහන් කළා + %1$s ගිණුම සමඟ පළකරන්න + අතිරේක අදහස් + ප්‍රියතමයන් + ඔබ මේ ඉමෝජි කට්ටල පළමුව බාගත යුතුයි + සෘජු + සොයන්න… + යෙදුමේ තේමාව + පොත්යොමු + \@%s නිහඬ\? + රචනා කරන්න + ඔබ ජන්දය දුන් මත විමසුව නිම වී ඇත + පිළිබඳව + සමස්ථ වසම සඟවන්න + පැතිකඩ පාරදත්ත + සබැඳිය පිටපත් + සෘජු පණිවිඩ + මාධ්‍ය බාගත වෙමින් + මාධ්‍ය පෙරදසුන් බාගන්න + තව පූරණය + බාගන්න + සඳැහුම් + පිළිතුර + දැනුම්දීම් + පරිශීලක අනවහිර කෙරිණි + දත්ත එක්කරන්න + වෙත ටූට් බෙදාගන්න… + යැවීම අවලංගු කෙරිණි + අනවහිර + ටූට්! + ප්‍රියතමයන් + %1$s බාගත වෙමින් + තත්ව ගෙන ඒමට අසමත් විය + මාධ්‍ය: %s + සංවාදය නිහඬ කරන්න + ටූට්ස් යැවෙමින් + සංවාද + විශාල + ප්‍රසිද්ධ + නව මාස්ටඩන් ගිණුමක් එක්කරන්න + මාධ්‍ය උඩුගත වීම අහවර වෙමින් + + තත්. %d ක් ඉතිරිය + තත්. %d ක් ඉතිරිය + + ඔබට %1$s ගිණුමෙන් නික්මෙන්ට ඇවැසි බව විශ්වාසද\? + ස්ථානීය + ප්‍රියතමයන් + පිළිතුරු… + කාලරේඛා දැනුම්දීම් සීමාකරන්න + ටූට් යැවීමේ දෝෂයකි + පෙරහන එකතු කරන්න + සැමවිටම මාධ්‍ය සංවේදී ලෙස සලකුණු කරන්න + යෙදුම යළි ඇරඹීම ඇවැසිය + යළි අරඹන්න + කළු + වර්. %d කින් + මෙම වෙනස්කම් යෙදීමට ඔබ ටුස්කි නැවත ඇරඹිය යුතුය + සංස්කරණය + ඉදිරියට + කාලරේඛාව පෙරීම + %1$s, %2$s සහ තවත් %3$d + කාලරේඛා + %s නිහඬ කරන්න + CC-BY 4.0 + \@%s වෙත පිළිතුරු දෙමින් + අවහිර + මාධ්‍ය බාගන්න + සැඟවුනු වසම් + කුඩා + අන්තර්ගත අවවාද සමඟ ඇති ටූට්ස් සැමවිටම විහිදන්න + පෙරසේ + විහිදන්න + නිහඬ කරන්න + ටුස්කි %s + වියමන අඩවිය: +\n https://tusky.app + පිළිගන්න + පැ. %d කින් + පසුරුපුවරුවට පිටපත් විය + මතවිමසුම + ඉවත් කරන්න + මාධ්‍ය එකතු කරන්න + ද. %d කින් + %1$s, %2$s, %3$s සහ වෙනත් %4$d + ටූට් විවෘත කරන්න + සැඟවුනු වසම් + පැය %d + සැකසුම් සමමුහූර්ත වීමට අසමත් විය + පිළිතුරු පෙන්වන්න + පැතිකඩ + ඔබගේ උපාංගයේ පෙරනිමි ඉමෝජි කට්ටලය + නව සැඳහුම් පිළිබඳව දැනුම්දීම් + සොයන්න + ලෙස බෙදාගන්න … + මුල + වි. %d + සෙවීමට අසමත් විය + නිවේදන නැත. + CC-BY-SA 4.0 + සුරකින්න + නිහඬ කළ පරිශීලකයින් + ඔබ සතුව කටුපිටපත් නැත. + ටූට් + පෙරහන් + \@%s වෙත සාර්ථකව වාර්තා කෙරිණි + බාගැනීමට අසමත් විය + භාෂාව + සුරැකිණි! + ටුස්කි\'හි පැතිකඩ + ටූට්හි අන්තර්ගතය බෙදාගන්න + අන්තර්ගතය + නව ටූට්ස් + #%d මාධ්‍ය විවෘත කරන්න + මාධ්‍ය + + පුද්ගලයින් %s + මිනිසුන් %s + + වෙත මාධ්‍ය බෙදාගන්න… + ප්‍රසිද්ධ කාලරේඛා + කුඩාම + මත විමසුම් + දැකීමට ඔබන්න + වසා ඇත + + දවස් %d ක් ඉතිරිය + දවස් %d ක් ඉතිරිය + + ශබ්දය සමඟ දන්වන්න + ටුස්කි මගින් බලගන්වා ඇත + සැමවිටම සංවේදී අන්තර්ගත පෙන්වන්න + නිවේදන + + විනාඩි %d ක් ඉතිරිය + විනාඩි %d ක් ඉතිරිය + + කටුපිටපත් + ඔබ සෑදූ මත විමසුම නිම වී ඇත + ස්වයංක්‍රමලේඛ සඳහා දර්ශකය පෙන්වන්න + + ප්‍රියතමයන් %1$s + ප්‍රියතමයන් %1$s + + ප්‍රියතම + සඳැහුම් + යාවත්කාල + %1$s සහ %2$s + ටුස්කි යනු නොමිලේ සහ විවෘත-මූලාශ්‍ර මෘදුකාංගයකි. එය ජීඑන්යූ පොදු බලපත්‍ර අනුවාදය 3 යටතේ අවසර ලබා ඇත. ඔබට මෙතැනින් බලපත්‍රය දැකීමට හැකිය: https://www.gnu.org/licenses/gpl-3.0.en.html + සබැඳි + මාධ්‍ය + \@%s අවහිර\? + ආලෝකය සමඟ දන්වන්න + මෙම ගිණුම පිළිබඳව ඔබගේ පෞද්ගලික සටහන + වසන්න + දැනුම්දීම් + \@%s + යැවිණි! + මාස්ටඩන් සමඟ පිවිසෙන්න + ජන්දය + මුළු වචනය + මෙම ටූට් යැවීමට අසමත් විය! + දෘශ්‍යකය + පසුව + සංස්කරණය + අඳුරු + කිසිවක් නැත. + ටූට් යැවෙමින්… + පද්ධති පෙරනිමිය + සඳැහුම + ඉවත් කරන්න + දැනුම්දීම් සඟවන්න + තත්ව පාඨයේ ප්‍රමාණය + කාලරේඛාවෙහි සබැඳි පෙරදසුන් පෙන්වන්න + සබැඳි + අතිරික්සුව + තත්. %d \ No newline at end of file diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 9d188dce4..738c7c76b 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -345,41 +345,41 @@ โดเมนที่ซ่อนไว้ ผู้ใช้ที่ถูกบล็อกไว้ ผู้ใช้ที่ปิดเสียงไว้ - คั่นหน้า + ที่คั่นหน้า ชื่นชอบ โปรไฟล์ ปิด ลองอีกครั้ง - TOOT! - TOOT - ลบ แล้ว ร่างใหม่ + โพสต์! + โพสต์ + ลบแล้วร่างใหม่ ลบ แก้ไข รายงาน - แสดงบูสต์ - ซ่อนบูสต์ + แสดงการดัน + ซ่อนการดัน เลิกบล็อก บล็อก เลิกติดตาม ติดตาม - ต้องการออกจากระบบของบัญชี %1$s \? + คุณต้องการออกจากระบบของบัญชี %1$s หรือไม่\? เขียนโพสต์ใหม่ อื่น ๆ เลิกชื่นชอบ คั่นหน้า ชื่นชอบ - ลบบูสต์ + ลบการดัน ดัน ตอบกลับ ตอบกลับด่วน - ความคิดเห็นเพิ่มเติม\? + ความคิดเห็นเพิ่มเติม รายงาน @%s %s ต้องการติดตามคุณ %s ได้ติดตามคุณ %s ได้ชื่นชอบโพสต์ของคุณ %s ได้ดันโพสต์ของคุณ - ไม่มีอะไรเลย ลากลงเพื่อรีเฟรช! - ไม่มีอะไร + ไม่มีอะไรที่นี่ ลากลงเพื่อรีเฟรช! + ไม่มีอะไรที่นี่ ย่อ ขยาย แสดงน้อยลง @@ -396,37 +396,37 @@ โดเมนที่ซ่อนไว้ ผู้ใช้ที่ถูกบล็อก ผู้ใช้ที่ปิดเสียงไว้ - คั่นหน้า + ที่คั่นหน้า ผู้ติดตาม ติดตาม ปักหมุด โพสต์และตอบกลับ โพสต์ - เธรด + โพสต์ แท็บ ข้อความโดยตรง ที่ติดต่อกับภายนอก ในเซิร์ฟเวอร์ - แจ้งเตือน + การแจ้งเตือน หน้าหลัก การส่งโพสต์เกิดความผิดพลาด อัปโหลดล้มเหลว - ไม่สามารถแนบรูปภาพและวิดีทัศน์ในโพสต์เดียวกันได้ + ไม่สามารถแนบรูปภาพและวิดีโอในโพสต์เดียวกันได้ ต้องมีสิทธิ์จัดเก็บสื่อ ต้องมีสิทธิ์อ่านสื่อ ไม่สามารถเปิดไฟล์ได้ ไม่สามารถอัปโหลดไฟล์ประเภทนี้ได้ ไฟล์เสียงต้องมีขนาดน้อยกว่า 40MB - ไฟล์วีดิทัศน์ต้องมีขนาดน้อยกว่า 40MB + ไฟล์วิดีโอต้องมีขนาดน้อยกว่า 40MB ไฟล์ต้องมีขนาดน้อยกว่า 8MB ข้อความสถานะยาวเกินไป! ไม่สามารถรับโทเค็นการเข้าสู่ระบบ การขออนุญาตสิทธิถูกปฏิเสธ เกิดข้อผิดพลาดในการขออนุญาตสิทธิโดยไม่ทราบสาเหตุ - ไม่พบเว็บเบราว์เซอร์ + ไม่พบเว็บเบราว์เซอร์ที่จะใช้งาน โดเมนที่ป้อนไม่ถูกต้อง - ไม่สามารถโพสต์โดยไร้ข้อความได้ - เครือข่ายมีข้อผิดพลาดเกิดขึ้น! กรุณาตรวจสอบการเชื่อมต่อและลองอีกครั้ง! + ต้องใส่ข้อความ + เกิดข้อผิดพลาดเครือข่าย! กรุณาตรวจสอบการเชื่อมต่อและลองอีกครั้ง! เกิดข้อผิดพลาด รายการ รายการ @@ -434,8 +434,8 @@ ล้างค่า ค้นหา แก้ไขโปรไฟล์ - ตั้งค่าบัญชี - ตั้งค่า + การกำหนดลักษณะบัญชี + การกำหนดลักษณะ ออกจากระบบ ฉบับร่าง ชื่นชอบ @@ -491,6 +491,7 @@ ไฟล์แนบ เสียง โพสต์ใหม่ - %s พึ่งโพสต์ + %s เพิ่งโพสต์ ประกาศ + ลบการสนทนา \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 71ebaf7ed..d4b0c0944 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -3,8 +3,8 @@ Bir hata oluştu. Bir ağ hatası oluştu! Lütfen bağlantınızı kontrol edin ve tekrar deneyin! Bu alan boş bırakılmaz. - Girilen alan alanı geçersiz - Kimlik doğrulama başarısız oldu. + Geçersiz alan adı girildi + Bu sunucuda kimlik doğrulama başarısız oldu. Kullanılabilir web tarayıcısı bulunamadı. Tanımlanamayan bir yetkilendirme hatası oluştu. Yetkilendirme reddedildi. @@ -12,7 +12,7 @@ Durum çok uzun! Dosya 8 MB\'dan küçük olmalı. Video dosyaları 40 MB’dan küçük olmalı. - Bu biçimdeki dosyalar yüklenmez. + Bu tür bir dosya yüklenemez. Dosya açılamadı. Medya okuma izni gerekli. Medya kaydetme izni gerekli. @@ -22,53 +22,53 @@ Ana sayfa Bildirimler Yerel - Birleşmiş - Direkt Mesajlar + Federe + Direkt mesajlar Sekmeler Toot Gönderiler - Yanıtlar ile + Yanıtlarıyla Sabitlenmiş Takip edilenler Takipçiler Favoriler Sesize alınmış kullanıcılar Engellenmiş kullanıcılar - Takip Etme İstekleri - Profili düzeltme + Takip istekleri + Profili düzenle Taslaklar Lisanslar \@%s %s yineledi - Hasas Medya + Hasas medya Gizlenmiş medya Görüntülemek için dokunun - Daha Fazla Göster - Daha Az Göster + Daha fazla göster + Daha az göster Genişlet Daralt Burada hiçbir şey yok. - Henüz hiç ileti yoktur. Yenilemek için aşağıya çek! - %s tootunuzu boost etti + Burada henüz hiç birşey yok. Yenilemek için aşağıya çekin! + %s tootunuzu yineledi %s tootunuzu favorilerine ekledi %s seni takip etti \@%s bildir Daha fazla yorum? - Hızlı Yanıt + Hızlı yanıt Yanıtla - Yükselt - Favori + Yinele + Favorile Daha fazla Oluştur Mastodon ile giriş yap - Oturumu Kapat + Oturumu kapat Bu %1$s oturumu sonlandırmak istediğinizden emin misiniz\? Takip et Takibi bırak Engelle Engeli kaldır - Yükseltilenleri gizle - Boostları göster + Yinelemeleri gizle + Yinelemeleri göster Bildir Sil İLET @@ -77,23 +77,23 @@ Kapat Profil Tercihler - Hesap Tercihleri + Hesap tercihleri Favoriler Sesize alınmış kullanıcılar Engellenmiş kullanıcılar - Takip İstekleri + Takip istekleri Medya Tarayıcıda aç Medya ekle Fotoğraf çek Paylaş Sesize al - Sesizden kaldır + Sesizden çıkar Bahset Medyayı gizle Çekmece aç Kaydet - Profili düzelt + Profili düzenle Düzenle Geri al Kabul et @@ -101,40 +101,40 @@ Ara Taslaklar Toot görünürlüğü - İçerik uyarı + İçerik uyarısı İfade klavyesi - Sekme Ekle + Sekme ekle %1$s indiriliyor Bağlantıyı kopyala Farklı aç %s Olarak paylaş … Durumun adresini paylaş… - Durumu paylaş… + Tootu paylaş… Medyayı paylaş… Gönderildi! Kullanıcının engeli kaldırıldı Kullanıcının sesi açıldı İletildi! Yanıt başarıyla gönderildi. - Hangi örnek\? + Hangi sunucu\? Neler oluyor? - İçerik uyarı + İçerik uyarısı Görünen ad Biyo Hesaplarda ara… Sonuç bulunamadı Yanıt… - Simge - Üstlük + Avatar + Başlık Sunucu nedir\? Bağlantı kuruluyor… - Burada her hangi bir Mastodon sunucusunun adresi (mastodon.social, icosahedron.website, social.tchncs.de, ve daha fazla!) girilebiliri. + mastodon.social, icosahedron.website, social.tchncs.de ve daha fazlası gibi herhangi bir sunucunun adresi buraya girilebilir! \n -\nEğer hesabınız henüz yok ise katılmak istediğiniz sunucunun adresini girerek hesap yaratabilirsin. +\nHenüz hesabınız yoksa, katılmak istediğiniz sunucunun adını girebilir ve orada bir hesap oluşturabilirsiniz. \n -\nHer bir sunucu hesaplar ağırlayan bir yer olur ancak diğer sunucularda bulunan insanlarla aynı sitede olmuşcasına iletişime geçip takip edebilirsiniz. +\nSunucu, hesabınızın barındırıldığı tek yerdir, ancak aynı sitedeymişsiniz gibi diğer sunuculardaki kişilerle kolayca iletişim kurabilir ve onları takip edebilirsiniz. \n -\nDaha fazla bilgi için mastodon.social. +\n Daha fazla bilgiyi joinmastodon.org adresinde bulabilirsiniz. Medya yüklemesi tamamlanıyor Yükleniyor… İndir @@ -306,10 +306,10 @@ %1$d maksimum sekme sayısına ulaşıldı - Gizli alanadları - Boostu kaldır + Gizli alan adları + Yinelemekten vazgeç Favoriyi kaldır - Gizli alanadları + Gizli alan adları %s alan adını sessize al Bağlantılar Hashtags\'ler @@ -402,11 +402,11 @@ Bildirim filtresini göster Bahsedenler Yineleyen yayıncıyı aç - Boostları göster + Yinelemeleri göster Bahsedenler #%d medyayı aç Yer imleri - Zamanlanmış iletiler + Zamanlanmış tootlar Yer imi Düzenle Sil ve düzenle @@ -462,9 +462,9 @@ Bildirimleri gizle \@%s sessize al\? \@%s engellensin mi\? - %s senini aç + %s alan adının sesini aç %s gelen bildirimleri yoksay - %s kullanıcısından gelen bildirimleri yoksay + %s kullanıcısından gelen bildirimleri göster %s sesini aç %s seni takip etmek istiyor Ses dosyaları 40 MB\'dan küçük olmalı. @@ -476,4 +476,6 @@ Başlık ayarlanamadı Mastodon\'un minimum 5 dakikalık zamanlama aralığı vardır. Üst araç çubuğunun başlığını gizle + Konuşmayı sil + Duyurular diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 37f2ab257..fc73d1b5e 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -532,4 +532,6 @@ Навіть попри те, що ваш обліковий запис загальнодоступний, співробітники %1$s вважають, що ви, можливо, захочете переглянути запити від цих облікових записів власноруч. Видалити цю бесіду\? Видалити бесіду + Вилучити закладку + Запитувати підтвердження перед додаванням до вподобаних \ No newline at end of file diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index c3842196a..54ec4ab07 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1,7 +1,7 @@ Bạn có muốn xóa toàn bộ thông báo\? - Đã lưu vào nháp một bản sao của tút + Đã lưu tút vào nháp Hủy đăng Đăng Tút Đang đăng… @@ -39,7 +39,7 @@ Truy cập bị từ chối. Xảy ra lỗi khi cố gắng truy cập. Không tìm thấy trình duyệt web. - Tài khoản không đúng + Tài khoản không hợp lệ Không được để trống. Rớt mạng! Xin kiểm tra kết nối và thử lại! Đã có lỗi xảy ra. @@ -58,12 +58,12 @@ Quay lại Tiếp tục Cập nhật - NGƯNG + Xóa TÚT Đăng nhập Mastodon Xóa và viết lại tút này\? Xóa tút này\? - Hủy theo dõi người này\? + Ngưng theo dõi người này\? Hủy yêu cầu theo dõi\? Tải về Đang tải… @@ -116,7 +116,7 @@ Emoji Nội dung nhạy cảm Công khai - Tút đã lên lịch + Đăng tự động Nháp Từ chối Đồng ý @@ -171,7 +171,7 @@ Trượt xuống để tải nội dung! Trống. Thu gọn - Xem thêm + Đọc tiếp Thu gọn Xem thêm Hiển thị @@ -180,7 +180,7 @@ %s chia sẻ \@%s Giấy phép - Lịch đăng + Những tút đã lên lịch Chỉnh sửa trang cá nhân Yêu cầu theo dõi Máy chủ đã ẩn @@ -199,7 +199,7 @@ Máy chủ Thông báo Bảng tin - Nháp + Những tút nháp Những tút đã thích Máy chủ là gì\? Tải xem trước hình ảnh @@ -236,9 +236,9 @@ Báo động Thông báo Thông báo - Nhắn tin: Chỉ người được nhắc tới mới thấy - Riêng tư: Chỉ người theo dõi mới thấy - Bán công: Không hiện trên bảng tin + Nhắn riêng: Chỉ người được nhắc đến thấy + Riêng tư: Chỉ người theo dõi + Hạn chế: Không hiện trên bảng tin Công khai: Mọi người đều có thể thấy Ẩn @%s\? Chặn @%s\? @@ -255,7 +255,7 @@ Nhỏ Phông chữ Riêng tư - Bán công + Hạn chế Công khai Dưới màn hình Trên màn hình @@ -315,7 +315,7 @@ Hiện xem trước của link Mastodon giới hạn tối thiểu 5 phút. Bạn không có tút đã lên lịch. - Bạn không có bản nháp nào. + Bạn không có tút nháp. Sửa Lựa chọn %d Cho phép chọn nhiều lựa chọn @@ -376,9 +376,9 @@ Thêm hashtag Tên danh sách Lượt bình chọn: %1$s, %2$s, %3$s, %4$s; %5$s - Tin nhắn + Nhắn riêng Người theo dõi - Bán công + Hạn chế Công khai Đã lưu Đã thích @@ -401,7 +401,7 @@ Ghim Gỡ ghim - Thông tin có thể hiển thị không đầy đủ. Nhấn để mở xem chi tiết trên trình duyệt. + Nội dung có thể hiển thị không đầy đủ. Nhấn để mở xem chi tiết trên trình duyệt. Sử dụng thời gian thiết bị Nội dung Nhãn @@ -489,14 +489,16 @@ Bạn thật sự muốn xóa danh sách %s\? Đính kèm Âm thanh - Tút bạn lên lịch đã bị hủy bỏ - Tút lên lịch đã xóa + Đã xóa tút trả lời nháp + Đã xóa tút lên lịch Chưa tải được bình luận Đăng tút không thành công! Emoji động Ngưng nhận thông báo Nhận thông báo - Dù biết tài khoản của bạn công khai, quản trị viên %1$s vẫn nghĩ bạn hãy nên xem lại yêu cầu theo dõi từ những tài khoản lạ. - Xoá cuộc thảo luận này\? - Xoá thảo luận + Dù biết tài khoản của bạn công khai, quản trị viên %1$s vẫn nghĩ bạn hãy nên duyệt thủ công yêu cầu theo dõi từ những tài khoản lạ. + Xóa cuộc thảo luận này\? + Xóa thảo luận + Xác nhận trước khi thích + Bỏ lưu \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index d3c9a29b9..aef78bb20 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1,24 +1,24 @@ - 应用程序出现异常 + 应用程序出现异常。 网络请求出错,请检查互联网连接并重试! - 内容不能为空 + 内容不能为空。 该域名无效 - 无法连接此服务器 - 没有可用的浏览器 - 认证过程出现未知错误 - 授权被拒绝 - 无法获取登录信息 + 未能通过该实例的身份验证。 + 找不到可用的浏览器。 + 发生不明授权错误。 + 授权被拒绝。 + 未能获取登录令牌。 嘟文太长了! - 文件大小限制 8MB - 视频文件大小限制 40MB - 无法上传此类型的文件 - 此文件无法打开 - 需要授予 Yuito 读取媒体文件的权限 - 需要授予 Yuito 写入存储空间的权限 - 无法在嘟文中同时插入视频和图片 - 媒体文件上传失败 - 嘟文发送时出错 + 文件大小限制为 8MB。 + 视频文件大小限制为 40MB。 + 无法上传此类型的文件。 + 打不开此文件。 + 需要授予 Yuito 读取媒体文件的权限。 + 需要授予 Yuito 存储媒体的权限。 + 无法在嘟文中同时插入视频和图片。 + 上传失败。 + 嘟文发送时出错。 主页 通知 本站时间轴 @@ -47,7 +47,7 @@ 折叠内容 展开 折叠 - 还没有内容 + 还没有内容。 还没有内容,向下拉动即可刷新! %s 转嘟了你的嘟文 %s 收藏了你的嘟文 @@ -130,8 +130,8 @@ 已解除屏蔽 已取消隐藏 已发送! - 成功发送回复 - 域名 + 成功发送回复。 + 哪个实例? 有什么新鲜事? 内容提醒 昵称 @@ -405,7 +405,7 @@ 剩余 %d 秒 重置 - 音频文件大小限制 40M + 音频文件大小限制为 40M。 书签 隐藏的域名 定时嘟文 @@ -485,7 +485,7 @@ 隐藏顶部工具栏标题 本站暂无公告。 公告 - 已保存 + 已保存! 此账号的备注 取消关注 关注 @@ -495,7 +495,7 @@ 嘟文发送失败! 确认删除列表 %s? - 最多只可上传 %1$d 个媒体附件 + 最多只可上传 %1$d 个媒体附件。 隐藏账号的统计信息 反馈通知 @@ -522,4 +522,6 @@ 关注的人发送了新嘟文 %s 发送了新嘟文 即使您的账号未上锁,管理员 %1$s 认为您可能需要手动处理来自这些账号的关注请求。 + 删除此对话吗? + 删除对话 diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index a94c033a4..039276d05 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -10,6 +10,7 @@ + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 86fe177ff..46bcd4a7d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -77,8 +77,9 @@ Boost Remove boost Favorite - Bookmark Remove favorite + Bookmark + Remove bookmark More Compose Login with Mastodon @@ -623,6 +624,7 @@ Mastodon has a minimum scheduling interval of 5 minutes. Show link previews in timelines Show confirmation dialog before boosting + Show confirmation dialog before favoriting Hide the title of the top toolbar Wellbeing Your private note about this account diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 412541f16..d85106294 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -54,6 +54,7 @@ @color/colorBackground @color/colorBackgroundAccent + @color/colorBackgroundHighlight @color/windowBackground @color/textColorPrimary @@ -144,6 +145,7 @@ @color/tusky_grey_10 @color/tusky_grey_40 + @color/tusky_grey_40 @color/tusky_grey_20 @color/tusky_grey_10 diff --git a/app/src/main/res/values/theme_colors.xml b/app/src/main/res/values/theme_colors.xml index 46ab28fc1..79553135f 100644 --- a/app/src/main/res/values/theme_colors.xml +++ b/app/src/main/res/values/theme_colors.xml @@ -15,6 +15,7 @@ @color/tusky_grey_50 @color/tusky_grey_70 + @color/tusky_grey_50 @color/tusky_grey_80 @color/tusky_orange_light diff --git a/app/src/test/java/com/keylesspalace/tusky/FilterTest.kt b/app/src/test/java/com/keylesspalace/tusky/FilterTest.kt index ca9ee8bd4..4be226cfe 100644 --- a/app/src/test/java/com/keylesspalace/tusky/FilterTest.kt +++ b/app/src/test/java/com/keylesspalace/tusky/FilterTest.kt @@ -2,6 +2,7 @@ package com.keylesspalace.tusky import android.text.SpannedString import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.keylesspalace.tusky.entity.Attachment import com.keylesspalace.tusky.entity.Filter import com.keylesspalace.tusky.entity.Poll import com.keylesspalace.tusky.entity.PollOption @@ -14,6 +15,7 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.robolectric.annotation.Config +import java.util.ArrayList import java.util.Date @Config(sdk = [28]) @@ -125,6 +127,19 @@ class FilterTest { ) } + @Test + fun shouldFilter_whenMediaDescriptionDoesMatch() { + assertTrue( + filterModel.shouldFilterStatus( + mockStatus( + content = "should not be filtered", + spoilerText = "should not be filtered", + attachmentsDescriptions = listOf("should not be filtered", "badWord"), + ) + ) + ) + } + @Test fun shouldFilterPartialWord_whenWholeWordFilterContainsNonAlphanumericCharacters() { assertTrue( @@ -137,7 +152,8 @@ class FilterTest { private fun mockStatus( content: String = "", spoilerText: String = "", - pollOptions: List? = null + pollOptions: List? = null, + attachmentsDescriptions: List? = null ): Status { return Status( id = "123", @@ -157,7 +173,21 @@ class FilterTest { sensitive = false, spoilerText = spoilerText, visibility = Status.Visibility.PUBLIC, - attachments = arrayListOf(), + attachments = if (attachmentsDescriptions != null) { + ArrayList( + attachmentsDescriptions.map { + Attachment( + id = "1234", + url = "", + previewUrl = null, + meta = null, + type = Attachment.Type.IMAGE, + description = it, + blurhash = null + ) + } + ) + } else arrayListOf(), mentions = listOf(), application = null, pinned = false, @@ -173,7 +203,8 @@ class FilterTest { options = pollOptions.map { PollOption(it, 0) }, - voted = false + voted = false, + ownVotes = null ) } else null, card = null, diff --git a/app/src/test/java/com/keylesspalace/tusky/components/timeline/TimelineViewModelTest.kt b/app/src/test/java/com/keylesspalace/tusky/components/timeline/TimelineViewModelTest.kt index 0ec4a9cb2..c259e9beb 100644 --- a/app/src/test/java/com/keylesspalace/tusky/components/timeline/TimelineViewModelTest.kt +++ b/app/src/test/java/com/keylesspalace/tusky/components/timeline/TimelineViewModelTest.kt @@ -695,6 +695,7 @@ class TimelineViewModelTest { votesCount = 1, voted = false, options = listOf(PollOption("1", 1), PollOption("2", 2)), + ownVotes = null ) val status4 = makeStatus("4").copy(poll = poll) val status3 = makeStatus("3") diff --git a/fastlane/metadata/android/pl/changelogs/74.txt b/fastlane/metadata/android/pl/changelogs/74.txt deleted file mode 100644 index 3014b0e29..000000000 --- a/fastlane/metadata/android/pl/changelogs/74.txt +++ /dev/null @@ -1,8 +0,0 @@ -Tusky v12.0 - -- Ulepszony interfejs - teraz można przenieść zakładki na dół ekranu -- Podczas wyciszania użytkownika można teraz wyciszyć wysłane przez niego powiadomienia -- Można teraz obserwować kilka hashtagów w jednej zakładce -- Ulepszono sposób, w jaki są wyświetlane opisy załączników - -Pełna lista zmian: https://github.com/tuskyapp/Tusky/releases diff --git a/fastlane/metadata/android/pl/changelogs/77.txt b/fastlane/metadata/android/pl/changelogs/77.txt deleted file mode 100644 index 5a63eea4f..000000000 --- a/fastlane/metadata/android/pl/changelogs/77.txt +++ /dev/null @@ -1,10 +0,0 @@ -Tusky v13.0 - -- Wsparcie dla opisów profilów (Funkcja dostępna w Mastodonie 3.2.0) -- Wsparcie dla ogłoszeń od administracji (Funkcja dostępna w Mastodonie 3.1.0) - -- Zdjęcie profilowe wybranego konta widnieje teraz w głównym pasku nawigacyjnym -- Kliknięcie nazwy użytkownika na osi czasu teraz otwiera profil tego użytkownika - -- Wiele małych poprawek -- Ulepszone tłumaczenia diff --git a/fastlane/metadata/android/pl/changelogs/80.txt b/fastlane/metadata/android/pl/changelogs/80.txt deleted file mode 100644 index e4d1eea18..000000000 --- a/fastlane/metadata/android/pl/changelogs/80.txt +++ /dev/null @@ -1,7 +0,0 @@ -Tusky v14.0 - -- Otrzymaj powiadomienie gdy użytkownik, którego obserwujesz, prześle wpis - kliknij na ikonkę dzwonka na ich profilu! (Funkcja dostępna w Mastodonie 3.3.0) -- Szkice zostały przeprojektowane, by ułatwić ich używanie. -- Nowy tryb samopoczucia, który pozwala Ci limitować niektóre funkcje. -- Dodano funkcję animowania niestandardowych emoji. -Pełna lista zmian: https://github.com/tuskyapp/Tusky/releases diff --git a/fastlane/metadata/android/pl/changelogs/82.txt b/fastlane/metadata/android/pl/changelogs/82.txt deleted file mode 100644 index 6329da71a..000000000 --- a/fastlane/metadata/android/pl/changelogs/82.txt +++ /dev/null @@ -1,5 +0,0 @@ -Tusky v15.0 - -- Prośby o zezwolenie na obserwowanie są teraz wyświetlane na menu głównym -- Design wyboru czasu wysłania zaplanowanych wpisów jest bardziej zgodny z resztą aplikacji -Pełna lista zmian: https://github.com/tuskyapp/Tusky/releases diff --git a/fastlane/metadata/android/pl/changelogs/83.txt b/fastlane/metadata/android/pl/changelogs/83.txt deleted file mode 100644 index c9038395a..000000000 --- a/fastlane/metadata/android/pl/changelogs/83.txt +++ /dev/null @@ -1,3 +0,0 @@ -Tusky v15.1 - -To wydanie naprawia błąd aplikacji przy dodawaniu opisów do zdjęć diff --git a/fastlane/metadata/android/ru/changelogs/83.txt b/fastlane/metadata/android/ru/changelogs/83.txt deleted file mode 100644 index 4c4ee839e..000000000 --- a/fastlane/metadata/android/ru/changelogs/83.txt +++ /dev/null @@ -1,3 +0,0 @@ -Tusky v15.1 - -В этом выпуске исправлена ошибка при создании подписей к изображениям