fix: Set correct text direction for localised error messages (#601)

Use `unicodeWrap` when inserting placeholders in error messages so they
set the correct text direction.

Update some strings with formatting directives to (a) include `_fmt`
in the name, and (b) use `%1$s` instead of `%s`.
This commit is contained in:
Nik Clayton 2024-04-09 14:26:15 +02:00 committed by GitHub
parent 59c75358e9
commit 7752cf9210
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
35 changed files with 198 additions and 154 deletions

View File

@ -25,6 +25,7 @@ import app.pachli.core.activity.emojify
import app.pachli.core.activity.loadAvatar
import app.pachli.core.common.extensions.hide
import app.pachli.core.common.extensions.show
import app.pachli.core.common.string.unicodeWrap
import app.pachli.core.common.util.AbsoluteTimeFormatter
import app.pachli.core.common.util.formatNumber
import app.pachli.core.database.model.TranslationState
@ -262,7 +263,7 @@ abstract class StatusBaseViewHolder<T : IStatusViewData> protected constructor(i
TranslationState.SHOW_TRANSLATION -> {
translationProvider?.apply {
viewData.translation?.provider?.let {
text = context.getString(R.string.translation_provider_fmt, it)
text = context.getString(R.string.translation_provider_fmt, it.unicodeWrap())
show()
}
}

View File

@ -80,12 +80,14 @@ import app.pachli.core.common.extensions.show
import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.common.extensions.visible
import app.pachli.core.common.string.mastodonLength
import app.pachli.core.common.string.unicodeWrap
import app.pachli.core.data.repository.InstanceInfoRepository
import app.pachli.core.database.model.AccountEntity
import app.pachli.core.designsystem.R as DR
import app.pachli.core.navigation.ComposeActivityIntent
import app.pachli.core.navigation.ComposeActivityIntent.ComposeOptions
import app.pachli.core.navigation.ComposeActivityIntent.ComposeOptions.InitialCursorPosition
import app.pachli.core.network.extensions.getServerErrorMessage
import app.pachli.core.network.model.Attachment
import app.pachli.core.network.model.Emoji
import app.pachli.core.network.model.Status
@ -483,7 +485,7 @@ class ComposeActivity :
displayTransientMessage(
getString(
R.string.error_media_upload_sending_fmt,
throwable.message,
throwable.getServerErrorMessage().unicodeWrap(),
),
)
}

View File

@ -59,6 +59,7 @@ import app.pachli.viewdata.calculatePercent
import app.pachli.worker.NotificationWorker
import com.bumptech.glide.Glide
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import java.util.Locale
import java.util.concurrent.ExecutionException
import java.util.concurrent.TimeUnit
import timber.log.Timber
@ -570,9 +571,12 @@ fun androidNotificationsAreEnabled(context: Context, accountManager: AccountMana
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Timber.d(
"%d >= %d, checking notification manager",
Build.VERSION.SDK_INT,
Build.VERSION_CODES.O,
String.format(
Locale.US,
"%d >= %d, checking notification manager",
Build.VERSION.SDK_INT,
Build.VERSION_CODES.O,
),
)
// on Android >= O notifications are enabled if at least one channel is enabled
val notificationManager =

View File

@ -50,7 +50,9 @@ import app.pachli.core.activity.openLink
import app.pachli.core.common.extensions.hide
import app.pachli.core.common.extensions.show
import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.common.string.unicodeWrap
import app.pachli.core.navigation.AttachmentViewData.Companion.list
import app.pachli.core.network.extensions.getServerErrorMessage
import app.pachli.core.network.model.Filter
import app.pachli.core.network.model.Notification
import app.pachli.core.network.model.Poll
@ -225,8 +227,10 @@ class NotificationsFragment :
viewModel.uiError.collect { error ->
val message = getString(
error.message,
error.throwable.localizedMessage
?: getString(R.string.ui_error_unknown),
(
error.throwable.getServerErrorMessage() ?: error.throwable.localizedMessage
?: getString(R.string.ui_error_unknown)
).unicodeWrap(),
)
Timber.d(error.throwable, message)
val snackbar = Snackbar.make(

View File

@ -247,25 +247,25 @@ sealed interface UiError {
data class Bookmark(
override val throwable: Throwable,
override val action: StatusAction.Bookmark,
override val message: Int = R.string.ui_error_bookmark,
override val message: Int = R.string.ui_error_bookmark_fmt,
) : UiError
data class Favourite(
override val throwable: Throwable,
override val action: StatusAction.Favourite,
override val message: Int = R.string.ui_error_favourite,
override val message: Int = R.string.ui_error_favourite_fmt,
) : UiError
data class Reblog(
override val throwable: Throwable,
override val action: StatusAction.Reblog,
override val message: Int = R.string.ui_error_reblog,
override val message: Int = R.string.ui_error_reblog_fmt,
) : UiError
data class VoteInPoll(
override val throwable: Throwable,
override val action: StatusAction.VoteInPoll,
override val message: Int = R.string.ui_error_vote,
override val message: Int = R.string.ui_error_vote_fmt,
) : UiError
data class AcceptFollowRequest(
@ -283,7 +283,7 @@ sealed interface UiError {
data class GetFilters(
override val throwable: Throwable,
override val action: UiAction? = null,
override val message: Int = R.string.ui_error_filter_v1_load,
override val message: Int = R.string.ui_error_filter_v1_load_fmt,
) : UiError
companion object {

View File

@ -54,10 +54,12 @@ import app.pachli.core.activity.RefreshableFragment
import app.pachli.core.common.extensions.hide
import app.pachli.core.common.extensions.show
import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.common.string.unicodeWrap
import app.pachli.core.database.model.TranslationState
import app.pachli.core.model.Timeline
import app.pachli.core.navigation.AccountListActivityIntent
import app.pachli.core.navigation.AttachmentViewData
import app.pachli.core.network.extensions.getServerErrorMessage
import app.pachli.core.network.model.Poll
import app.pachli.core.network.model.Status
import app.pachli.core.ui.ActionButtonScrollListener
@ -235,8 +237,10 @@ class TimelineFragment :
viewModel.uiError.collect { error ->
val message = getString(
error.message,
error.throwable.localizedMessage
?: getString(R.string.ui_error_unknown),
(
error.throwable.getServerErrorMessage() ?: error.throwable.localizedMessage
?: getString(R.string.ui_error_unknown)
).unicodeWrap(),
)
Timber.d(error.throwable, message)
snackbar = Snackbar.make(

View File

@ -214,37 +214,37 @@ sealed interface UiError {
data class Bookmark(
override val throwable: Throwable,
override val action: StatusAction.Bookmark,
override val message: Int = R.string.ui_error_bookmark,
override val message: Int = R.string.ui_error_bookmark_fmt,
) : UiError
data class Favourite(
override val throwable: Throwable,
override val action: StatusAction.Favourite,
override val message: Int = R.string.ui_error_favourite,
override val message: Int = R.string.ui_error_favourite_fmt,
) : UiError
data class Reblog(
override val throwable: Throwable,
override val action: StatusAction.Reblog,
override val message: Int = R.string.ui_error_reblog,
override val message: Int = R.string.ui_error_reblog_fmt,
) : UiError
data class VoteInPoll(
override val throwable: Throwable,
override val action: StatusAction.VoteInPoll,
override val message: Int = R.string.ui_error_vote,
override val message: Int = R.string.ui_error_vote_fmt,
) : UiError
data class TranslateStatus(
override val throwable: Throwable,
override val action: StatusAction.Translate,
override val message: Int = R.string.ui_error_translate_status,
override val message: Int = R.string.ui_error_translate_status_fmt,
) : UiError
data class GetFilters(
override val throwable: Throwable,
override val action: UiAction? = null,
override val message: Int = R.string.ui_error_filter_v1_load,
override val message: Int = R.string.ui_error_filter_v1_load_fmt,
) : UiError
companion object {

View File

@ -38,9 +38,11 @@ import app.pachli.core.activity.openLink
import app.pachli.core.common.extensions.hide
import app.pachli.core.common.extensions.show
import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.common.string.unicodeWrap
import app.pachli.core.designsystem.R as DR
import app.pachli.core.navigation.AccountListActivityIntent
import app.pachli.core.navigation.AttachmentViewData.Companion.list
import app.pachli.core.network.extensions.getServerErrorMessage
import app.pachli.core.network.model.Poll
import app.pachli.core.network.model.Status
import app.pachli.databinding.FragmentViewThreadBinding
@ -209,7 +211,10 @@ class ViewThreadFragment :
lifecycleScope.launch {
viewModel.errors.collect { throwable ->
Timber.w(throwable, "failed to load status context")
val msg = view.context.getString(app.pachli.core.ui.R.string.error_generic_fmt, throwable)
val msg = view.context.getString(
app.pachli.core.ui.R.string.error_generic_fmt,
throwable.getServerErrorMessage().unicodeWrap(),
)
Snackbar.make(binding.root, msg, Snackbar.LENGTH_INDEFINITE)
.setAction(app.pachli.core.ui.R.string.action_retry) {
viewModel.retry(thisThreadsStatusId)

View File

@ -506,8 +506,8 @@
<string name="compose_unsaved_changes">لديك تعديلات لم تحفظ.</string>
<string name="post_edited">عدَّلَ %s</string>
<string name="notification_report_format">شكوى جديدة عن %s</string>
<string name="status_edit_info">عدّله %1$s</string>
<string name="status_created_info">أنشأه %1$s</string>
<string name="status_edit_info">%1$s :عدّله</string>
<string name="status_created_info">%1$s :أنشأه</string>
<string name="wellbeing_mode_notice">سيتم إخفاء بعض المعلومات التي قد تؤثر على صحتك العقلية. هذا يتضمن:
\n
\n- المفضلة/المشاركات/متابعة الاشعارات
@ -572,7 +572,7 @@
<string name="report_category_violation">انتهاك الشروط</string>
<string name="dialog_push_notification_migration">من أجل استخدام الإشعارات عبر UnifiedPush ، يحتاج Pachli إلى إذن للإشتراك في الإشعارات على خادم Mastodon الخاص بك. يتطلب هذا إعادة تسجيل الدخول لتغيير نطاقات OAuth الممنوحة لـ Pachli. سيؤدي استخدام خيار إعادة تسجيل الدخول هنا أو في اعدادات الحساب إلى الاحتفاظ بجميع المسودات المحلية وذاكرة التخزين المؤقت.</string>
<string name="pref_title_wellbeing_mode">الرفاهية</string>
<string name="account_date_joined">انضم في %1$s</string>
<string name="account_date_joined">%1$s انضم في</string>
<string name="title_migration_relogin">أعد تسجيل الدخول لاستلام الاشعارات</string>
<string name="action_dismiss">تجاهل</string>
<string name="action_details">تفاصيل</string>
@ -587,7 +587,7 @@
<string name="ui_error_unknown">سبب مجهول</string>
<string name="socket_timeout_exception">طال الاتصال بخادمك كثيرًا</string>
<string name="action_add">إضافة</string>
<string name="ui_error_translate_status">فشلت الترجمة: %s</string>
<string name="ui_error_translate_status_fmt">%1$s :فشلت الترجمة</string>
<string name="update_dialog_negative">لا تذكرني أبداً</string>
<string name="translating">الترجمة جارية…</string>
<string name="dialog_delete_filter_positive_action">حذف</string>
@ -612,7 +612,7 @@
<string name="announcement_date">%1$s %2$s</string>
<string name="select_list_manage">إدارة القوائم</string>
<string name="dialog_save_profile_changes_message">أتريد حفظ التغييرات التي طرأت على ملفك الشخصي؟</string>
<string name="ui_error_bookmark">فشل إجراء إضافة المنشور إلى الفواصل المرجعية: %s</string>
<string name="ui_error_bookmark_fmt">%1$s :فشل إجراء إضافة المنشور إلى الفواصل المرجعية</string>
<string name="notification_unknown_name">غير معروف</string>
<string name="pref_update_notification_frequency_always">دائما</string>
<string name="error_media_upload_sending_fmt">اخفق التحميل: %s</string>
@ -651,5 +651,5 @@
<string name="confirmation_hashtag_muted">#%s مخفي</string>
<string name="pref_summary_timeline_filters">خادمك الخاص لا يدعم عوامل التصفية</string>
<string name="load_newest_statuses">تحميل أحدث المنشورات</string>
<string name="announcement_date_updated">(تم تحديثه: %1$s)</string>
<string name="announcement_date_updated">(%1$s :تم تحديثه)</string>
</resources>

View File

@ -572,10 +572,10 @@
<string name="total_accounts">Усяго ўліковых запісаў</string>
<string name="accessibility_talking_about_tag">%1$d людзей кажуць пра хэштэг %2$s</string>
<string name="pref_title_show_stat_inline">Паказваць статыстыку допісаў у стужцы</string>
<string name="ui_error_reblog">Не атрымалася пашырыць допіс: %s</string>
<string name="ui_error_reblog_fmt">Не атрымалася пашырыць допіс: %1$s</string>
<string name="hint_filter_title">Мой фільтр</string>
<string name="filter_description_format">%s: %s</string>
<string name="ui_error_bookmark">Не атрымалася дадаць допіс да закладак: %s</string>
<string name="ui_error_bookmark_fmt">Не атрымалася дадаць допіс да закладак: %1$s</string>
<string name="ui_error_accept_follow_request">Не атрымалася пацвердзіць запыт на падпіску: %s</string>
<string name="ui_success_accepted_follow_request">Запыт на падпіску пацверджаны</string>
<string name="ui_success_rejected_follow_request">Запыт на падпіску заблакіраваны</string>

View File

@ -597,11 +597,11 @@
<string name="pref_title_account_filter_keywords">Proffiliau</string>
<string name="socket_timeout_exception">Cymrodd hi\'n rhy hir i gysylltu â\'ch gweinydd</string>
<string name="ui_error_unknown">rheswm anhysbys</string>
<string name="ui_error_bookmark">Methodd tudalnodi\'r neges: %s</string>
<string name="ui_error_bookmark_fmt">Methodd tudalnodi\'r neges: %1$s</string>
<string name="ui_error_clear_notifications">Methodd clirio hysbysiadau: %s</string>
<string name="ui_error_favourite">Methodd hoffi\'r neges: %s</string>
<string name="ui_error_reblog">Methodd hybu\'r neges: %s</string>
<string name="ui_error_vote">Methodd y pleidleisio: %s</string>
<string name="ui_error_favourite_fmt">Methodd hoffi\'r neges: %1$s</string>
<string name="ui_error_reblog_fmt">Methodd hybu\'r neges: %1$s</string>
<string name="ui_error_vote_fmt">Methodd y pleidleisio: %1$s</string>
<string name="ui_error_accept_follow_request">Methodd derbyn cais i ddilyn: %s</string>
<string name="ui_error_reject_follow_request">Methodd gwrthod cais i ddilyn: %s</string>
<string name="ui_success_accepted_follow_request">Cais i ddilyn wedi\'i dderbyn</string>

View File

@ -552,10 +552,10 @@
<string name="dialog_follow_hashtag_title">Hashtag folgen</string>
<string name="dialog_follow_hashtag_hint">#Hashtag</string>
<string name="socket_timeout_exception">Kontaktaufnahme mit dem Server dauerte zu lange</string>
<string name="ui_error_bookmark">Beitrag konnte nicht als Lesezeichen gespeichert werden: %s</string>
<string name="ui_error_reblog">Beitrag konnte nicht geteilt werden: %s</string>
<string name="ui_error_favourite">Beitrag konnte nicht favorisiert werden: %s</string>
<string name="ui_error_vote">Abstimmen bei der Umfrage schlug fehl: %s</string>
<string name="ui_error_bookmark_fmt">Beitrag konnte nicht als Lesezeichen gespeichert werden: %1$s</string>
<string name="ui_error_reblog_fmt">Beitrag konnte nicht geteilt werden: %1$s</string>
<string name="ui_error_favourite_fmt">Beitrag konnte nicht favorisiert werden: %1$s</string>
<string name="ui_error_vote_fmt">Abstimmen bei der Umfrage schlug fehl: %1$s</string>
<string name="ui_error_accept_follow_request">Akzeptieren der Folgeanfrage schlug fehl: %s</string>
<string name="ui_success_accepted_follow_request">Folgeanfrage akzeptiert</string>
<string name="ui_success_rejected_follow_request">Folgeanfrage blockiert</string>
@ -596,7 +596,7 @@
\n
\nHierbei handelt es sich um <a href="https://github.com/mastodon/mastodon/issues/25398">Mastodon Issue #25398</a>.</string>
<string name="error_media_upload_sending_fmt">Das Hochladen ist fehlgeschlagen: %s</string>
<string name="ui_error_translate_status">Übersetzung fehlgeschlagen: %s</string>
<string name="ui_error_translate_status_fmt">Übersetzung fehlgeschlagen: %1$s</string>
<string name="update_dialog_negative">Erinnere mich nie</string>
<string name="translating">Übersetze…</string>
<string name="dialog_delete_filter_positive_action">Löschen</string>
@ -615,7 +615,7 @@
<string name="pref_update_notification_frequency_always">Immer</string>
<string name="pref_update_notification_frequency_never">Nie</string>
<string name="pref_title_show_self_boosts_description">Jemand teilt einen eigenen Beitrag</string>
<string name="ui_error_filter_v1_load">Filter laden fehlgeschlagen: %s</string>
<string name="ui_error_filter_v1_load_fmt">Filter laden fehlgeschlagen: %1$s</string>
<string name="confirmation_hashtag_muted">#%s ausgeblendet</string>
<string name="confirmation_hashtag_unmuted">#%s nicht mehr ausgeblendet</string>
<string name="pref_title_show_self_boosts">Selbst geteilte Beiträge anzeigen</string>

View File

@ -570,10 +570,10 @@
<string name="help_empty_home">Esta es tu <b> cronología de inicio</b>. Muestra las publicaciones recientes de las cuentas que sigues.
\n
\nPara encontrar cuentas, puedes mirar en alguna de las otras cronologías. Por ejemplo, la cronología local de tu instancia [iconics gmd_group]. O puedes buscarlas por nombre [iconics gmd_search]; por ejemplo, busca Pachli para encontrar nuestra cuenta de Mastodon.</string>
<string name="ui_error_bookmark">Fallo al añadir a marcadores: %s</string>
<string name="ui_error_bookmark_fmt">Fallo al añadir a marcadores: %1$s</string>
<string name="select_list_manage">Gestionar listas</string>
<string name="error_list_load">Error al cargar listas</string>
<string name="ui_error_favourite">Fallo al favoritear publicación: %s</string>
<string name="ui_error_favourite_fmt">Fallo al favoritear publicación: %1$s</string>
<string name="ui_error_clear_notifications">Fallo al limpiar notificaciones: %s</string>
<string name="ui_error_accept_follow_request">Fallo al aceptar solicitud de seguimiento: %s</string>
<string name="ui_error_reject_follow_request">Fallo al rechazar la solicitud de seguimiento: %s</string>
@ -582,8 +582,8 @@
<string name="hint_filter_title">Mi filtro</string>
<string name="filter_edit_keyword_title">Editar palabra</string>
<string name="filter_description_format">%s: %s</string>
<string name="ui_error_reblog">Falló al impulsar publicación: %s</string>
<string name="ui_error_vote">Fallo al votar en la encuesta: %s</string>
<string name="ui_error_reblog_fmt">Falló al impulsar publicación: %1$s</string>
<string name="ui_error_vote_fmt">Fallo al votar en la encuesta: %1$s</string>
<string name="label_filter_title">Título</string>
<string name="filter_action_warn">Aviso</string>
<string name="filter_description_hide">Ocultar completamente</string>
@ -599,7 +599,7 @@
<string name="notification_notification_worker">Obteniendo notificaciones…</string>
<string name="load_newest_notifications">Cargar nuevas notificaciones</string>
<string name="compose_delete_draft">¿Eliminar borrador\?</string>
<string name="ui_error_translate_status">La traducción falló: %s</string>
<string name="ui_error_translate_status_fmt">La traducción falló: %1$s</string>
<string name="update_dialog_negative">Nunca me recuerdas</string>
<string name="translating">Traduciendo…</string>
<string name="dialog_delete_filter_positive_action">Borrar</string>
@ -631,7 +631,7 @@
<string name="error_media_upload_sending_fmt">La carga falló: %s</string>
<string name="pref_update_notification_frequency_never">Nunca</string>
<string name="pref_title_show_self_boosts_description">Alguien impulsa su propia publicación</string>
<string name="ui_error_filter_v1_load">La carga de filtros falló: %s</string>
<string name="ui_error_filter_v1_load_fmt">La carga de filtros falló: %1$s</string>
<string name="confirmation_hashtag_muted">#%s oculto(s)</string>
<string name="janky_animation_title">Es posible que necesite reiniciar su dispositivo</string>
<string name="confirmation_hashtag_unmuted">#%s visible</string>

View File

@ -82,7 +82,7 @@
<string name="action_toggle_visibility">نمایانی فرسته</string>
<string name="action_content_warning">هشدار محتوا</string>
<string name="action_emoji_keyboard">صفحه‌کلید اموجی</string>
<string name="download_image">درحال بارگیری %1$s</string>
<string name="download_image">%1$s درحال بارگیری</string>
<string name="action_copy_link">رونوشت از پیوند</string>
<string name="send_post_link_to">هم‌رسانی نشانی فرسته با…</string>
<string name="send_post_content_to">هم‌رسانی فرسته با…</string>
@ -195,7 +195,7 @@
<string name="replying_to">در حال پاسخ به @%s</string>
<string name="add_account_name">افزودن حساب</string>
<string name="add_account_description">افزودن حساب ماستودون جدید</string>
<string name="compose_active_account_description">فرستادن از طرف %1$s</string>
<string name="compose_active_account_description">%1$s فرستادن از طرف</string>
<plurals name="hint_describe_for_visually_impaired">
<item quantity="one">توصیف محتوا برای کم‌بینایان (کران ۱ نویسه)</item>
<item quantity="other">توصیف محتوا برای کم‌بینایان (کران %d نویسه)</item>
@ -305,7 +305,7 @@
<string name="description_visibility_unlisted">فهرست نشده</string>
<string name="description_visibility_private">پی‌گیران</string>
<string name="description_visibility_direct">مستقیم</string>
<string name="description_poll">نظرسنجی با گزینه‌ها: %1$s، %2$s، %3$s، %4$s؛ %5$s</string>
<string name="description_poll">%1$s, %2$s, %3$s, %4$s, %5$s :نظرسنجی با گزینه‌ها</string>
<string name="edit_hashtag_hint">برچسب بدون #</string>
<string name="notifications_clear">پاک‌سازی</string>
<string name="notifications_apply_filter">پالایش</string>
@ -436,22 +436,22 @@
\n
\n فرستادن آگاهی‌ها تأثیر نمی‌پذیرد، ولی می‌توانید ترجیحات آگاهیتان را به صورت دستی بازبینی کنید.</string>
<plurals name="error_upload_max_media_reached">
<item quantity="one">نمی‌توانید بیش از %1$d رسانه بارگذارید.</item>
<item quantity="other">نمی‌توانید بیش از %1$d رسانه بارگذارید.</item>
<item quantity="one">%1$d نمی‌توانید بیش از رسانه بارگذارید.</item>
<item quantity="other">%1$d نمی‌توانید بیش از رسانه بارگذارید.</item>
</plurals>
<string name="duration_indefinite">نامعیّن</string>
<string name="follow_requests_info">با این که حسابتان قفل نیست، کارکنان %1$s فکر کردند ممکن است بخواهید درخواست‌های پی‌گیری از این حساب‌ها را دستی بازبینی کنید.</string>
<string name="dialog_delete_conversation_warning">حذف این گفت‌وگو؟</string>
<string name="action_delete_conversation">حذف گفت‌وگو</string>
<string name="account_date_joined">در %1$s پیوست</string>
<string name="notification_sign_up_format">%s ثبت‌نام کرد</string>
<string name="account_date_joined">%1$s در پیوست</string>
<string name="notification_sign_up_format">%1$s ثبت‌نام کرد</string>
<string name="pref_title_confirm_favourites">نمایش تأیید پیش از برگزیدن</string>
<string name="pachli_compose_post_quicksetting_label">ایجاد فرسته</string>
<string name="tips_push_notification_migration">ورود دوباره به تمامی حساب‌ها برای به کار انداختن پشتیبانی آگاهی‌های ارسالی.</string>
<string name="notification_update_description">آگاهی‌ها هنگام ویرایش فرسته‌هایی که با آن‌ها تعامل داشته‌اید</string>
<string name="action_unbookmark">برداشن نشانک</string>
<string name="dialog_push_notification_migration_other_accounts">برای اعطای اجازهٔ اشتراک آگاهی‌های ارسالی به تاسکی، دوباره به حسابتان وارد شدید. با این حال هنوز حساب‌هایی دیگر دارید که این‌گونه مهاجرت داده نشده‌اند. به آن‌ها رفته و برای به کار انداختن پشتیبانی آگاهی‌های UnifiedPush یکی‌یکی دوباره وارد شوید.</string>
<string name="action_logout_confirm">مطمئنید که می‌خواهید از %1$s خارج شوید؟ این کار تمامی داده‌های محلی از جمله پیش‌نویس‌ها و ترجیحات را حذف خواهد کرد.</string>
<string name="action_logout_confirm">%1$s مطمئنید که می‌خواهید از خارج شوید؟ این کار تمامی داده‌های محلی از جمله پیش‌نویس‌ها و ترجیحات را حذف خواهد کرد.</string>
<string name="duration_14_days">۱۴ روز</string>
<string name="duration_30_days">۳۰ روز</string>
<string name="duration_60_days">۶۰ روز</string>
@ -519,8 +519,8 @@
<string name="pref_summary_http_proxy_missing">&lt;تنظیم نشده&gt;</string>
<string name="pref_summary_http_proxy_disabled">از کار افتاده</string>
<string name="pref_summary_http_proxy_invalid">&lt;نامعتبر&gt;</string>
<string name="status_edit_info">ویراسته: %1$s</string>
<string name="status_created_info">ایجاد شده: %1$s</string>
<string name="status_edit_info">%1$s :ویراسته</string>
<string name="status_created_info">%1$s :ایجاد شده</string>
<string name="action_post_failed">بارگذاری شکست خورد</string>
<string name="action_post_failed_show_drafts">نمایش پیش‌نویس‌ها</string>
<string name="action_post_failed_do_nothing">رد کردن</string>
@ -550,14 +550,14 @@
<string name="notification_unknown_name">ناشناخته</string>
<string name="socket_timeout_exception">تماس با کارسازتان بیش از حد طول کشید</string>
<string name="ui_error_unknown">دلیل نامعلوم</string>
<string name="ui_error_bookmark">نشانک گذاری فرسته شکست خورد: %s</string>
<string name="ui_error_bookmark_fmt">%1$s: نشانک گذاری فرسته شکست خورد</string>
<string name="ui_error_clear_notifications">پاک سازی آگاهی‌ها شکست خورد: %s</string>
<string name="ui_error_favourite">برگزیدن فرسته شکست خورد: %s</string>
<string name="ui_error_vote">رأی دادن در نظرسنجی شکست خورد: %s</string>
<string name="ui_error_favourite_fmt">%1$s: برگزیدن فرسته شکست خورد</string>
<string name="ui_error_vote_fmt">%1$s: رأی دادن در نظرسنجی شکست خورد</string>
<string name="ui_error_accept_follow_request">پذیرش درخواست پی‌گیری شکست خورد: %s</string>
<string name="ui_success_accepted_follow_request">درخواست پی‌گیری پذیرفته شد</string>
<string name="ui_success_rejected_follow_request">درخواست پی‌گیری مسدود شد</string>
<string name="ui_error_reblog">تقویت فرسته شکست خورد: %s</string>
<string name="ui_error_reblog_fmt">%1$s: تقویت فرسته شکست خورد</string>
<string name="ui_error_reject_follow_request">رد کردن درخواست پی‌گیری شکست خورد: %s</string>
<string name="status_filtered_show_anyway">نمایش به هر روی</string>
<string name="status_filter_placeholder_label_format">پالوده: %s</string>
@ -598,5 +598,5 @@
<string name="error_media_upload_sending_fmt">بارگذاری شکست خورد: %s</string>
<string name="error_media_playback">پخش شکست خورد: %s</string>
<string name="dialog_delete_filter_positive_action">حذف</string>
<string name="dialog_delete_filter_text">حذف پالایهٔ «%1$s»؟</string>
<string name="dialog_delete_filter_text">«%1$s» حذف پالایهٔ ؟</string>
</resources>

View File

@ -429,17 +429,17 @@
<string name="pref_main_nav_position_option_top">Yläreuna</string>
<string name="notification_prune_cache">Välimuistin ylläpito…</string>
<string name="pref_ui_text_size">Käyttöliittymän tekstikoko</string>
<string name="ui_error_translate_status">Kääntäminen epäonnistui: %s</string>
<string name="ui_error_translate_status_fmt">Kääntäminen epäonnistui: %1$s</string>
<string name="update_dialog_negative">Älä muistuta koskaan</string>
<string name="translating">Käännetään…</string>
<string name="dialog_delete_filter_positive_action">Poista</string>
<string name="ui_error_reblog">Julkaisun tehostaminen epäonnistui: %s</string>
<string name="ui_error_reblog_fmt">Julkaisun tehostaminen epäonnistui: %1$s</string>
<string name="review_notifications">Katso ilmoitukset</string>
<string name="action_subscribe_account">Tilaa</string>
<string name="pref_title_update_notification_frequency">Ilmoita Pachlin uusista versioista</string>
<string name="filter_action_warn">Varoita</string>
<string name="action_unfollow_hashtag_format">Lopeta tilin #%s seuraamninen?</string>
<string name="ui_error_vote">Äänestäminen epäonnistui: %s</string>
<string name="ui_error_vote_fmt">Äänestäminen epäonnistui: %1$s</string>
<string name="update_dialog_neutral">Älä muistuta enää tästä versiosta</string>
<string name="ui_error_reject_follow_request">Seuraajapyynnön hylkääminen epäonnistui: %s</string>
<string name="ui_error_clear_notifications">Ilmoitusten nollaaminen epäonnistui: %s</string>
@ -467,9 +467,9 @@
<string name="socket_timeout_exception">Yhteydenotto palvelimeen kesti liian kauan</string>
<string name="load_newest_statuses">Lataa uusimmat julkaisut</string>
<string name="dialog_save_profile_changes_message">Haluatko tallentaa profiilisi muutokset?</string>
<string name="ui_error_favourite">Julkaisun tykkääminen epäonnistui: %s</string>
<string name="ui_error_favourite_fmt">Julkaisun tykkääminen epäonnistui: %1$s</string>
<string name="pachli_compose_post_quicksetting_label">Kirjoita julkaisu</string>
<string name="ui_error_bookmark">Kirjamerkin liittäminen julkaisuun epäonnistui: %s</string>
<string name="ui_error_bookmark_fmt">Kirjamerkin liittäminen julkaisuun epäonnistui: %1$s</string>
<string name="no_scheduled_posts">Sinulla ei ole ajastettuja julkaisuja.</string>
<string name="report_category_spam">Roskapostia</string>
<string name="total_usage">Kokonaiskäyttö</string>
@ -488,7 +488,7 @@
<string name="limit_notifications">Rajoita aikajanan ilmoituksia</string>
<string name="account_date_joined">Liittyi %1$s</string>
<string name="ui_error_unknown">tuntematon syy</string>
<string name="ui_error_filter_v1_load">Suodattimien lataaminen epäonnistui: %s</string>
<string name="ui_error_filter_v1_load_fmt">Suodattimien lataaminen epäonnistui: %1$s</string>
<string name="janky_animation_title">Saatat joutua käynnistämään laitteesi uudelleen</string>
<string name="announcement_date_updated">(Päivitetty: %1$s)</string>
<string name="tips_push_notification_migration">Kirjaudu uudelleen kaikille tileille push-ilmoitusten ottamiseksi käyttöön.</string>

View File

@ -558,9 +558,9 @@
<string name="failed_to_unpin">Échec du détachement</string>
<string name="pref_title_show_self_username">Montrer le nom d\'utilisateur dans la barre d\'outils</string>
<string name="socket_timeout_exception">La connexion à votre serveur a pris trop longtemps</string>
<string name="ui_error_bookmark">Échec de l\'ajout aux signets : %s</string>
<string name="ui_error_vote">Échec du vote : %s</string>
<string name="ui_error_reblog">Échec de la mise en signet : %s</string>
<string name="ui_error_bookmark_fmt">Échec de l\'ajout aux signets : %1$s</string>
<string name="ui_error_vote_fmt">Échec du vote : %1$s</string>
<string name="ui_error_reblog_fmt">Échec de la mise en signet : %1$s</string>
<string name="ui_error_accept_follow_request">N\'a pas pu accepter la demande d\'abonnement : %s</string>
<string name="ui_error_reject_follow_request">N\'a pas pu rejeter la demande d\'abonnement : %s</string>
<string name="ui_success_accepted_follow_request">Demande d\'abonnement acceptée</string>
@ -577,7 +577,7 @@
<string name="error_status_source_load">Le texte d\'origine du statut n\'a pas pu être chargé.</string>
<string name="ui_error_unknown">raison inconnue</string>
<string name="ui_error_clear_notifications">Échec du nettoyage des notifications : %s</string>
<string name="ui_error_favourite">Échec de la mise en favori : %s</string>
<string name="ui_error_favourite_fmt">Échec de la mise en favori : %1$s</string>
<string name="label_filter_title">Nom</string>
<string name="hint_filter_title">Mon filtre</string>
<string name="pref_title_show_stat_inline">Montrer les statistiques des statuts dans les fils</string>
@ -625,7 +625,7 @@
<string name="compose_delete_draft">Supprimer le brouillon?</string>
<string name="announcement_date_updated">(Mis à jour: %1$s)</string>
<string name="load_newest_notifications">Charger les nouvelles notifications</string>
<string name="ui_error_translate_status">Traduction échouée: %s</string>
<string name="ui_error_translate_status_fmt">Traduction échouée: %1$s</string>
<string name="load_newest_statuses">Charger les publications les plus récentes</string>
<string name="error_media_playback">La lecture a échoué: %s</string>
<string name="dialog_save_profile_changes_message">Voulez-vous sauvegarder les changements apportés à votre profil?</string>

View File

@ -565,11 +565,11 @@
<string name="notification_unknown_name">Neo-aithnichte</string>
<string name="socket_timeout_exception">Thug conaltradh ris an fhrithealaiche ro fhada</string>
<string name="ui_error_unknown">chan eil fhios dè an t-adhbhar</string>
<string name="ui_error_bookmark">Cha deach leinn comharra-lìn a chur ris a phost: %s</string>
<string name="ui_error_bookmark_fmt">Cha deach leinn comharra-lìn a chur ris a phost: %1$s</string>
<string name="ui_error_clear_notifications">Dhfhàillig falamhachadh nam brathan: %s</string>
<string name="ui_error_favourite">Cha deach leinn am post a chur ris na h-annsachdan: %s</string>
<string name="ui_error_reblog">Dhfhàillig brosnachadh a phuist: %s</string>
<string name="ui_error_vote">Dhfhàillig bhòtadh sa chunntas-bheachd: %s</string>
<string name="ui_error_favourite_fmt">Cha deach leinn am post a chur ris na h-annsachdan: %1$s</string>
<string name="ui_error_reblog_fmt">Dhfhàillig brosnachadh a phuist: %1$s</string>
<string name="ui_error_vote_fmt">Dhfhàillig bhòtadh sa chunntas-bheachd: %1$s</string>
<string name="ui_error_accept_follow_request">Dhfhàillig le gabhail ris an iarrtas leantainn: %s</string>
<string name="ui_error_reject_follow_request">Dhfhàillig le diùltadh an iarrtais leantainn: %s</string>
<string name="ui_success_accepted_follow_request">Chaidh gabhail ris an iarrtas leantainn</string>

View File

@ -549,11 +549,11 @@
<string name="notification_unknown_name">Descoñecido</string>
<string name="socket_timeout_exception">Estamos tardando demasiado en conectar co servidor</string>
<string name="ui_error_unknown">razón descoñecida</string>
<string name="ui_error_bookmark">Fallou engadir a marcadores: %s</string>
<string name="ui_error_bookmark_fmt">Fallou engadir a marcadores: %1$s</string>
<string name="ui_error_clear_notifications">Fallou a limpeza das notificacións: %s</string>
<string name="ui_error_vote">Fallou a votación na enquisa: %s</string>
<string name="ui_error_favourite">Fallou favorecer a publicación: %s</string>
<string name="ui_error_reblog">Fallou promover a publicación: %s</string>
<string name="ui_error_vote_fmt">Fallou a votación na enquisa: %1$s</string>
<string name="ui_error_favourite_fmt">Fallou favorecer a publicación: %1$s</string>
<string name="ui_error_reblog_fmt">Fallou promover a publicación: %1$s</string>
<string name="ui_error_accept_follow_request">Fallou a aceptación da solicitude de seguimento: %s</string>
<string name="ui_error_reject_follow_request">Fallou o rexeitamento da solicitude de seguimento: %s</string>
<string name="ui_success_accepted_follow_request">Aceptado o seguimento</string>

View File

@ -548,16 +548,16 @@
<string name="dialog_follow_hashtag_title">Hashtag követése</string>
<string name="dialog_follow_hashtag_hint">#hashtag</string>
<string name="notification_unknown_name">Ismeretlen</string>
<string name="ui_error_favourite">Bejegyzés kedvencnek jelölése sikertelen: %s</string>
<string name="ui_error_reblog">Bejegyzés megtolása sikertelen: %s</string>
<string name="ui_error_vote">Szavazat leadása a szavazásba sikertelen: %s</string>
<string name="ui_error_favourite_fmt">Bejegyzés kedvencnek jelölése sikertelen: %1$s</string>
<string name="ui_error_reblog_fmt">Bejegyzés megtolása sikertelen: %1$s</string>
<string name="ui_error_vote_fmt">Szavazat leadása a szavazásba sikertelen: %1$s</string>
<string name="ui_error_accept_follow_request">Követési kérelem elfogadása sikertelen: %s</string>
<string name="status_filtered_show_anyway">Mutatás mindenképpen</string>
<string name="status_filter_placeholder_label_format">Szűrve: %s</string>
<string name="pref_title_account_filter_keywords">Profil</string>
<string name="socket_timeout_exception">A kapcsolatfelvétel a kiszolgálóddal túl sokáig tartott</string>
<string name="ui_error_unknown">ismeretlen ok</string>
<string name="ui_error_bookmark">Bejegyzés könyvjelzőzése sikertelen: %s</string>
<string name="ui_error_bookmark_fmt">Bejegyzés könyvjelzőzése sikertelen: %1$s</string>
<string name="ui_error_clear_notifications">Értesítések törlése sikertelen: %s</string>
<string name="filter_action_warn">Figyelmeztetés</string>
<string name="filter_action_hide">Elrejtés</string>

View File

@ -545,9 +545,9 @@
<string name="status_filter_placeholder_label_format">Síað: %s</string>
<string name="pref_title_account_filter_keywords">Notendasnið</string>
<string name="pref_title_show_stat_inline">Sýna tölfræði færslu í tímalínu</string>
<string name="ui_error_favourite">Mistókst að setja færslu í eftirlæti: %s</string>
<string name="ui_error_reblog">Mistókst að endurbirta færslu: %s</string>
<string name="ui_error_vote">Mistókst að greiða atkvæði í könnun: %s</string>
<string name="ui_error_favourite_fmt">Mistókst að setja færslu í eftirlæti: %1$s</string>
<string name="ui_error_reblog_fmt">Mistókst að endurbirta færslu: %1$s</string>
<string name="ui_error_vote_fmt">Mistókst að greiða atkvæði í könnun: %1$s</string>
<string name="ui_error_accept_follow_request">Mistókst að samþykkja fylgjendabeiðni: %s</string>
<string name="hint_filter_title">Sían mín</string>
<string name="label_filter_title">Titill</string>
@ -555,7 +555,7 @@
<string name="filter_action_hide">Fela</string>
<string name="filter_description_warn">Fela með aðvörun</string>
<string name="filter_description_hide">Fela alveg</string>
<string name="ui_error_bookmark">Mistókst að bókamerkja færslu: %s</string>
<string name="ui_error_bookmark_fmt">Mistókst að bókamerkja færslu: %1$s</string>
<string name="socket_timeout_exception">Rann út á tíma við að tengjast netþjóninum þínum</string>
<string name="ui_error_unknown">óþekkt ástæða</string>
<string name="ui_error_clear_notifications">Vandamál með hreinsun á tilkynningum: %s</string>

View File

@ -586,16 +586,16 @@
<string name="label_filter_title">Titolo</string>
<string name="filter_action_warn">Avvisa</string>
<string name="filter_action_hide">Nascondi</string>
<string name="ui_error_bookmark">Salvataggio nei segnalibri fallito: %s</string>
<string name="ui_error_bookmark_fmt">Salvataggio nei segnalibri fallito: %1$s</string>
<string name="socket_timeout_exception">Contattare il tuo server ha richiesto troppo tempo</string>
<string name="ui_error_unknown">Motivo sconosciuto</string>
<string name="ui_error_clear_notifications">Cancellazione notifiche fallita: %s</string>
<string name="ui_error_favourite">Apprezzamento post fallito: %s</string>
<string name="ui_error_reblog">Condivisione del post fallita: %s</string>
<string name="ui_error_favourite_fmt">Apprezzamento post fallito: %1$s</string>
<string name="ui_error_reblog_fmt">Condivisione del post fallita: %1$s</string>
<string name="ui_error_reject_follow_request">Rifiuto richiesta di follow fallita: %s</string>
<string name="ui_error_vote">Votazione al sondaggio fallita: %s</string>
<string name="ui_error_vote_fmt">Votazione al sondaggio fallita: %1$s</string>
<string name="ui_error_accept_follow_request">Accettazione richiesta di follow fallita: %s</string>
<string name="ui_error_filter_v1_load">Caricamento filtri fallito: %s</string>
<string name="ui_error_filter_v1_load_fmt">Caricamento filtri fallito: %1$s</string>
<string name="ui_success_accepted_follow_request">Richiesta di follow accettata</string>
<string name="ui_success_rejected_follow_request">Richiesta di follow bloccata</string>
<string name="select_list_empty">Non hai ancora alcuna lista</string>

View File

@ -554,13 +554,13 @@
<string name="filter_description_warn">警告付きで隠す</string>
<string name="filter_description_hide">完全に隠す</string>
<string name="label_filter_action">フィルターアクション</string>
<string name="ui_error_reblog">投稿のブーストに失敗しました: %s</string>
<string name="ui_error_reblog_fmt">投稿のブーストに失敗しました: %1$s</string>
<string name="ui_error_clear_notifications">通知の消去に失敗しました: %s</string>
<string name="ui_error_favourite">投稿のお気に入りに失敗しました: %s</string>
<string name="ui_error_bookmark">投稿のブックマークに失敗しました: %s</string>
<string name="ui_error_favourite_fmt">投稿のお気に入りに失敗しました: %1$s</string>
<string name="ui_error_bookmark_fmt">投稿のブックマークに失敗しました: %1$s</string>
<string name="ui_success_rejected_follow_request">フォローリクエストがブロックされました</string>
<string name="ui_success_accepted_follow_request">フォローリクエストが許可されました</string>
<string name="ui_error_vote">投票に失敗しました: %s</string>
<string name="ui_error_vote_fmt">投票に失敗しました: %1$s</string>
<string name="action_add">追加</string>
<string name="filter_keyword_display_format">%s (単語全体)</string>
<string name="filter_keyword_addition_title">キーワードを追加</string>
@ -595,7 +595,7 @@
<string name="announcement_date">%1$s %2$s</string>
<string name="socket_timeout_exception">サーバーへの接続に時間がかかりすぎました</string>
<string name="load_newest_statuses">最新のポストを読み込む</string>
<string name="ui_error_filter_v1_load">フィルターの読み込みに失敗しました: %s</string>
<string name="ui_error_filter_v1_load_fmt">フィルターの読み込みに失敗しました: %1$s</string>
<string name="confirmation_hashtag_muted">#%s を非表示にしました</string>
<string name="announcement_date_updated">(更新済み: %1$s)</string>
<string name="help_empty_home">これはあなたの<b>ホームタイムライン</b>です。あなたがフォローしているアカウントの最新のポストが表示されます。
@ -609,7 +609,7 @@
<string name="confirmation_hashtag_unmuted">%s を非表示にしました</string>
<string name="pref_title_show_self_boosts">セルフブーストを表示</string>
<string name="notification_summary_report_format">%sさん・%d件のポストが添付されています</string>
<string name="ui_error_translate_status">翻訳に失敗しました: %s</string>
<string name="ui_error_translate_status_fmt">翻訳に失敗しました: %1$s</string>
<string name="update_dialog_negative">通知しない</string>
<string name="translating">翻訳中です…</string>
<string name="pref_title_update_notification_frequency">Pachli最新バージョンへの更新頻度</string>

View File

@ -527,7 +527,7 @@
<string name="hint_media_description_missing">Media bør ha en beskrivelse.</string>
<string name="hint_description">Beskrivelse</string>
<string name="post_media_image">Bilde</string>
<string name="ui_error_bookmark">Å bokmerke innlegget misslyktes: %s</string>
<string name="ui_error_bookmark_fmt">Å bokmerke innlegget misslyktes: %1$s</string>
<string name="hint_filter_title">Mitt filter</string>
<string name="filter_edit_keyword_title">Endre nøkkelord</string>
<string name="filter_description_format">%s: %s</string>
@ -558,10 +558,10 @@
<string name="select_list_empty">Du har ingen lister, enda</string>
<string name="error_list_load">Feil under lading av lister</string>
<string name="select_list_manage">Forvalte lister</string>
<string name="ui_error_reblog">Deling av innlegget feilet: %s</string>
<string name="ui_error_reblog_fmt">Deling av innlegget feilet: %1$s</string>
<string name="ui_error_unknown">ukjent grunn</string>
<string name="ui_error_favourite">Favorisering av innlegg feilet: %s</string>
<string name="ui_error_vote">Stemming mislykkes: %s</string>
<string name="ui_error_favourite_fmt">Favorisering av innlegg feilet: %1$s</string>
<string name="ui_error_vote_fmt">Stemming mislykkes: %1$s</string>
<string name="filter_description_hide">Gjem helt</string>
<string name="label_filter_action">Filterhandling</string>
<string name="filter_action_hide">Gjem</string>

View File

@ -540,8 +540,8 @@
<string name="pref_summary_http_proxy_missing">&lt;niet ingesteld&gt;</string>
<string name="pref_summary_http_proxy_invalid">&lt;ongeldig&gt;</string>
<string name="post_media_image">Afbeelding</string>
<string name="ui_error_reblog">Boosten bericht mislukt: %s</string>
<string name="ui_error_vote">Stemmen in peiling mislukt: %s</string>
<string name="ui_error_reblog_fmt">Boosten bericht mislukt: %1$s</string>
<string name="ui_error_vote_fmt">Stemmen in peiling mislukt: %1$s</string>
<string name="pref_title_http_proxy_port_message">Poort moet liggen tussen %d en %d</string>
<string name="notification_unknown_name">Onbekend</string>
<string name="ui_error_clear_notifications">Wissen meldingen mislukt: %s</string>
@ -578,7 +578,7 @@
<string name="socket_timeout_exception">Contact zoeken met je server duurde te lang</string>
<string name="dialog_delete_filter_positive_action">Verwijder</string>
<string name="dialog_delete_filter_text">Verwijder filter \'%1$s\'\?</string>
<string name="ui_error_translate_status">Vertaling faalde: %s</string>
<string name="ui_error_translate_status_fmt">Vertaling faalde: %1$s</string>
<string name="update_dialog_negative">Herinner mij nooit</string>
<string name="translating">Vertalen…</string>
<string name="pref_title_update_notification_frequency">Vertel mij over nieuwe versies van Pachli</string>
@ -606,15 +606,15 @@
<string name="load_newest_statuses">Laad nieuwe posts</string>
<string name="notification_report_description">Notificaties over moderatie rapporten</string>
<string name="dialog_save_profile_changes_message">Wil je je profiel wijzigingen opslaan?</string>
<string name="ui_error_favourite">Post als favoriet markeren faalde: %s</string>
<string name="ui_error_bookmark">Bookmarken van post faalde: %s</string>
<string name="ui_error_favourite_fmt">Post als favoriet markeren faalde: %1$s</string>
<string name="ui_error_bookmark_fmt">Bookmarken van post faalde: %1$s</string>
<string name="compose_save_draft_loses_media">Voorlopige versie opslaan? (Bijlagen zullen worden geupload als je de versie herstelt.)</string>
<string name="pref_update_notification_frequency_always">Altijd</string>
<string name="pref_update_notification_frequency_never">Nooit</string>
<string name="filter_keyword_addition_title">Voeg sleutelwoord toe</string>
<string name="label_filter_keywords">Sleutelwoorden of zinnen om te filteren</string>
<string name="pref_title_show_self_boosts_description">Iemand die hun eigen post boost</string>
<string name="ui_error_filter_v1_load">Laden van filters faalde: %s</string>
<string name="ui_error_filter_v1_load_fmt">Laden van filters faalde: %1$s</string>
<string name="confirmation_hashtag_muted">#%s verborgen</string>
<string name="janky_animation_title">Mogelijk is het noodzakelijk om je apparaat opnieuw op te starten</string>
<string name="confirmation_hashtag_unmuted">#%s niet meer verborgen</string>

View File

@ -549,7 +549,7 @@
<string name="title_public_trending_hashtags">Hashtags populars</string>
<string name="notification_unknown_name">Desconegut</string>
<string name="socket_timeout_exception">La connexion al vòstre servidor a pres tròp de temps</string>
<string name="ui_error_bookmark">Marcatge impossibla de la publicacion : %s</string>
<string name="ui_error_bookmark_fmt">Marcatge impossibla de la publicacion : %1$s</string>
<string name="ui_error_clear_notifications">Netejatge de las notificacions fracassat : %s</string>
<string name="ui_success_accepted_follow_request">Demanda dabonament acceptada</string>
<string name="ui_success_rejected_follow_request">Demanda dabonament blocada</string>
@ -576,9 +576,9 @@
<string name="select_list_empty">Avètz pas encara de lista</string>
<string name="select_list_manage">Gerir las listas</string>
<string name="error_list_load">Error en cargant las litas</string>
<string name="ui_error_favourite">Fracàs de la mes en favorit: %s</string>
<string name="ui_error_reblog">Fracàs en partejant: %s</string>
<string name="ui_error_vote">Fracàs del vòt: %s</string>
<string name="ui_error_favourite_fmt">Fracàs de la mes en favorit: %1$s</string>
<string name="ui_error_reblog_fmt">Fracàs en partejant: %1$s</string>
<string name="ui_error_vote_fmt">Fracàs del vòt: %1$s</string>
<string name="ui_error_accept_follow_request">Fracàs de lacceptacion de la demanda: %s</string>
<string name="ui_error_reject_follow_request">Fracàs del refús de la demanda: %s</string>
<string name="pref_title_show_stat_inline">Mostrar las estatisticas dins la cronologia</string>

View File

@ -526,12 +526,12 @@
<string name="action_edit_image">Editar imagem</string>
<string name="pref_title_notification_filter_sign_ups">alguém se inscreveu</string>
<string name="saving_draft">Salvando rascunho…</string>
<string name="ui_error_translate_status">A tradução falhou: %s</string>
<string name="ui_error_translate_status_fmt">A tradução falhou: %1$s</string>
<string name="update_dialog_negative">Nunca me lembre</string>
<string name="translating">Traduzindo…</string>
<string name="action_post_failed_do_nothing">Dispensar</string>
<string name="dialog_delete_filter_positive_action">Excluir</string>
<string name="ui_error_reblog">Falhou dar Boost: %s</string>
<string name="ui_error_reblog_fmt">Falhou dar Boost: %1$s</string>
<string name="notification_listenable_worker_name">Atividade em segundo plano</string>
<string name="error_status_source_load">Falha ao carregar a fonte do estado da instância.</string>
<string name="pref_title_update_notification_frequency">Avise-me sobre as novas versões do Pachli</string>
@ -541,7 +541,7 @@
<string name="title_public_trending_hashtags">Hashtags em alta</string>
<string name="status_filter_placeholder_label_format">Filtrado(s): %s</string>
<string name="confirmation_hashtag_unfollowed">#%s deixado de seguir</string>
<string name="ui_error_vote">Votar na enquete falhou: %s</string>
<string name="ui_error_vote_fmt">Votar na enquete falhou: %1$s</string>
<string name="update_dialog_neutral">Não me lembre desta versão</string>
<string name="ui_error_reject_follow_request">Falha ao rejeitar solicitação de seguir: %s</string>
<string name="ui_error_clear_notifications">Limpar notificações falhou: %s</string>
@ -585,8 +585,8 @@
<string name="notification_report_description">Notificações sobre denúncias da moderação</string>
<string name="dialog_save_profile_changes_message">Quer salvar as alterações do teu perfil?</string>
<string name="action_add_reaction">reagir</string>
<string name="ui_error_favourite">Favoritar o Toot falhou: %s</string>
<string name="ui_error_bookmark">Salvar Toot falhou: %s</string>
<string name="ui_error_favourite_fmt">Favoritar o Toot falhou: %1$s</string>
<string name="ui_error_bookmark_fmt">Salvar Toot falhou: %1$s</string>
<string name="notification_unknown_name">Desconhecido</string>
<string name="total_usage">Uso total</string>
<string name="pref_update_notification_frequency_always">Sempre</string>
@ -601,7 +601,7 @@
<string name="notification_report_format">Nova denúncia sobre %s</string>
<string name="pref_title_show_stat_inline">Mostrar estatísticas do Toot na linha do tempo</string>
<string name="ui_error_unknown">causa desconhecida</string>
<string name="ui_error_filter_v1_load">Falha ao carregar os filtros: %s</string>
<string name="ui_error_filter_v1_load_fmt">Falha ao carregar os filtros: %1$s</string>
<string name="notification_sign_up_name">Inscrições</string>
<string name="confirmation_hashtag_muted">#%s oculto</string>
<string name="janky_animation_title">Pode ser necessário reiniciar o teu dispositivo</string>

View File

@ -586,12 +586,12 @@
<string name="notification_listenable_worker_description">Aviseringar när Pachli arbetar i bakgrunden</string>
<string name="notification_notification_worker">Hämtar aviseringar…</string>
<string name="notification_prune_cache">Cacheunderhåll…</string>
<string name="ui_error_reblog">Att knuffa inlägg misslyckades: %s</string>
<string name="ui_error_vote">Rösta i omröstning misslyckades: %s</string>
<string name="ui_error_reblog_fmt">Att knuffa inlägg misslyckades: %1$s</string>
<string name="ui_error_vote_fmt">Rösta i omröstning misslyckades: %1$s</string>
<string name="ui_error_accept_follow_request">Acceptera följarförfrågan misslyckades: %s</string>
<string name="ui_error_bookmark">Att bokmärka inlägg misslyckades: %s</string>
<string name="ui_error_bookmark_fmt">Att bokmärka inlägg misslyckades: %1$s</string>
<string name="ui_error_clear_notifications">Rensing av aviseringar misslyckades: %s</string>
<string name="ui_error_favourite">Att favoritmarkera inlägg misslyckades: %s</string>
<string name="ui_error_favourite_fmt">Att favoritmarkera inlägg misslyckades: %1$s</string>
<string name="error_list_load">Fel vid laddning av listor</string>
<string name="ui_error_reject_follow_request">Avacceptera följarförgrågan misslyckades: %s</string>
<string name="label_filter_context">Filtrera sammanhang</string>
@ -601,7 +601,7 @@
<string name="error_missing_edits">Din server vet att det här inlägget har redigerats, men har ingen kopia av ändringarna, så de kan inte visas för dig.
\n
\nDet är <a href="https://github.com/mastodon/mastodon/issues/25398">Mastodon problem #25398</a>.</string>
<string name="ui_error_translate_status">Översättning misslyckades: %s</string>
<string name="ui_error_translate_status_fmt">Översättning misslyckades: %1$s</string>
<string name="update_dialog_negative">Påminna mig aldrig</string>
<string name="translating">Översätter…</string>
<string name="dialog_delete_filter_positive_action">Radera</string>
@ -624,7 +624,7 @@
<string name="error_media_upload_sending_fmt">Uppladdning misslyckades: %s</string>
<string name="pref_update_notification_frequency_never">Aldrig</string>
<string name="pref_title_show_self_boosts_description">Någon som knuffar sin toot</string>
<string name="ui_error_filter_v1_load">Laddning av filter misslyckades: %s</string>
<string name="ui_error_filter_v1_load_fmt">Laddning av filter misslyckades: %1$s</string>
<string name="confirmation_hashtag_muted">#%s dold</string>
<string name="janky_animation_title">Du behöver kanske starta om din enhet</string>
<string name="confirmation_hashtag_unmuted">#%s avdold</string>

View File

@ -547,13 +547,13 @@
<string name="notification_unknown_name">Bilinmeyen</string>
<string name="socket_timeout_exception">Sunucuyla bağlantı kurmak çok uzun sürdü</string>
<string name="ui_error_unknown">bilinmeyen sebep</string>
<string name="ui_error_bookmark">Yer imi gönderisi başarısız oldu: %s</string>
<string name="ui_error_vote">Ankete oy gönderilemedi: %s</string>
<string name="ui_error_bookmark_fmt">Yer imi gönderisi başarısız oldu: %1$s</string>
<string name="ui_error_vote_fmt">Ankete oy gönderilemedi: %1$s</string>
<string name="ui_error_clear_notifications">Bildirimler temizlenemedi: %s</string>
<string name="ui_error_favourite">Gönderi gözdelere eklenemedi: %s</string>
<string name="ui_error_favourite_fmt">Gönderi gözdelere eklenemedi: %1$s</string>
<string name="ui_error_accept_follow_request">Takip isteği kabul edilemedi: %s</string>
<string name="ui_error_reject_follow_request">Takip isteği reddedilemedi: %s</string>
<string name="ui_error_reblog">Gönderi yeniden paylaşılamadı: %s</string>
<string name="ui_error_reblog_fmt">Gönderi yeniden paylaşılamadı: %1$s</string>
<string name="ui_success_accepted_follow_request">Takip isteği kabul edildi</string>
<string name="ui_success_rejected_follow_request">Takip isteği engellendi</string>
<string name="description_login">Çoğu durumda çalışır. Diğer uygulamalara veri sızmaz.</string>

View File

@ -565,11 +565,11 @@
<string name="notification_unknown_name">Невідомо</string>
<string name="socket_timeout_exception">Надто тривала спроба з\'єднання з вашим сервером</string>
<string name="ui_error_unknown">невідома причина</string>
<string name="ui_error_bookmark">Не вдалося додати допис до закладок: %s</string>
<string name="ui_error_bookmark_fmt">Не вдалося додати допис до закладок: %1$s</string>
<string name="ui_error_clear_notifications">Не вдалося очистити сповіщення: %s</string>
<string name="ui_error_favourite">Не вдалося вподобати допис: %s</string>
<string name="ui_error_reblog">Не вдалося поширити допис: %s</string>
<string name="ui_error_vote">Не вдалося проголосувати: %s</string>
<string name="ui_error_favourite_fmt">Не вдалося вподобати допис: %1$s</string>
<string name="ui_error_reblog_fmt">Не вдалося поширити допис: %1$s</string>
<string name="ui_error_vote_fmt">Не вдалося проголосувати: %1$s</string>
<string name="ui_error_accept_follow_request">Не вдалося погодити запит на стеження: %s</string>
<string name="ui_error_reject_follow_request">Не вдалося відхилити запит на стеження: %s</string>
<string name="ui_success_accepted_follow_request">Запит на стеження погоджено</string>

View File

@ -533,11 +533,11 @@
<string name="notification_unknown_name">Chưa biết</string>
<string name="socket_timeout_exception">Mất thời gian kết nối quá lâu</string>
<string name="ui_error_unknown">chưa rõ lý do</string>
<string name="ui_error_bookmark">Lưu tút không thành công: %s</string>
<string name="ui_error_bookmark_fmt">Lưu tút không thành công: %1$s</string>
<string name="ui_error_clear_notifications">Xóa thông báo không thành công: %s</string>
<string name="ui_error_favourite">Thích tút không thành công: %s</string>
<string name="ui_error_reblog">Đăng lại tút không thành công: %s</string>
<string name="ui_error_vote">Bình chọn không thành công: %s</string>
<string name="ui_error_favourite_fmt">Thích tút không thành công: %1$s</string>
<string name="ui_error_reblog_fmt">Đăng lại tút không thành công: %1$s</string>
<string name="ui_error_vote_fmt">Bình chọn không thành công: %1$s</string>
<string name="ui_error_accept_follow_request">Chấp nhận theo dõi không thành công: %s</string>
<string name="ui_error_reject_follow_request">Từ chối theo dõi không thành công: %s</string>
<string name="ui_success_accepted_follow_request">Đã chấp nhận yêu cầu theo dõi</string>

View File

@ -548,10 +548,10 @@
<string name="socket_timeout_exception">联系你的服务器花了太长时间</string>
<string name="ui_error_unknown">未知原因</string>
<string name="ui_error_clear_notifications">未能清除通知:%s</string>
<string name="ui_error_bookmark">未能将嘟文将入书签:%s</string>
<string name="ui_error_favourite">收藏嘟文失败:%s</string>
<string name="ui_error_reblog">转发嘟文失败:%s</string>
<string name="ui_error_vote">投票失败:%s</string>
<string name="ui_error_bookmark_fmt">未能将嘟文将入书签:%1$s</string>
<string name="ui_error_favourite_fmt">收藏嘟文失败:%1$s</string>
<string name="ui_error_reblog_fmt">转发嘟文失败:%1$s</string>
<string name="ui_error_vote_fmt">投票失败:%1$s</string>
<string name="ui_error_accept_follow_request">未能接受关注请求:%s</string>
<string name="ui_error_reject_follow_request">未能拒绝关注请求:%s</string>
<string name="ui_success_accepted_follow_request">关注请求被接受</string>

View File

@ -638,15 +638,15 @@
<string name="socket_timeout_exception">Contacting your server took too long</string>
<!-- Error messages, displayed in snackbars, when something failed -->
<string name="ui_error_unknown">unknown reason</string>
<string name="ui_error_bookmark">Bookmarking post failed: %s</string>
<string name="ui_error_bookmark_fmt">Bookmarking post failed: %1$s</string>
<string name="ui_error_clear_notifications">Clearing notifications failed: %s</string>
<string name="ui_error_favourite">Favoriting post failed: %s</string>
<string name="ui_error_reblog">Boosting post failed: %s</string>
<string name="ui_error_vote">Voting in poll failed: %s</string>
<string name="ui_error_translate_status">Translation failed: %s</string>
<string name="ui_error_favourite_fmt">Favoriting post failed: %1$s</string>
<string name="ui_error_reblog_fmt">Boosting post failed: %1$s</string>
<string name="ui_error_vote_fmt">Voting in poll failed: %1$s</string>
<string name="ui_error_translate_status_fmt">Translation failed: %1$s</string>
<string name="ui_error_accept_follow_request">Accepting follow request failed: %s</string>
<string name="ui_error_reject_follow_request">Rejecting follow request failed: %s</string>
<string name="ui_error_filter_v1_load">Loading filters failed: %s</string>
<string name="ui_error_filter_v1_load_fmt">Loading filters failed: %1$s</string>
<!-- Success messages, displayed in snackbars, when an action succeeded -->
<string name="ui_success_accepted_follow_request">Follow request accepted</string>
<string name="ui_success_rejected_follow_request">Follow request blocked</string>

View File

@ -18,6 +18,7 @@
package app.pachli.core.ui.extensions
import android.content.Context
import app.pachli.core.common.string.unicodeWrap
import app.pachli.core.network.extensions.getServerErrorMessage
import app.pachli.core.ui.R
import com.squareup.moshi.JsonDataException
@ -39,8 +40,8 @@ fun Throwable.getDrawableRes(): Int = when (this) {
/** @return A string error message for this throwable */
fun Throwable.getErrorString(context: Context): String = getServerErrorMessage() ?: when (this) {
is IOException -> context.getString(R.string.error_network_fmt, this.message)
is HttpException -> if (this.code() == 404) context.getString(R.string.error_404_not_found_fmt, this.message) else context.getString(R.string.error_generic_fmt, this.message)
is JsonDataException -> context.getString(R.string.error_json_data_fmt, this.message)
else -> context.getString(R.string.error_generic_fmt, this.message)
is IOException -> String.format(context.getString(R.string.error_network_fmt), this.localizedMessage.unicodeWrap())
is HttpException -> if (this.code() == 404) String.format(context.getString(R.string.error_404_not_found_fmt), this.message.unicodeWrap()) else String.format(context.getString(R.string.error_generic_fmt), this.message.unicodeWrap())
is JsonDataException -> String.format(context.getString(R.string.error_json_data_fmt), this.message.unicodeWrap())
else -> String.format(context.getString(R.string.error_generic_fmt), this.message.unicodeWrap())
}

View File

@ -42,6 +42,7 @@ import app.pachli.core.activity.BaseActivity
import app.pachli.core.common.extensions.hide
import app.pachli.core.common.extensions.show
import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.common.string.unicodeWrap
import app.pachli.core.data.repository.Lists
import app.pachli.core.data.repository.ListsRepository.Companion.compareByListTitle
import app.pachli.core.navigation.TimelineActivityIntent
@ -112,9 +113,27 @@ class ListsActivity : BaseActivity(), MenuProvider {
lifecycleScope.launch {
viewModel.errors.collect { error ->
when (error) {
is Error.Create -> showMessage(getString(R.string.error_create_list_fmt, error.title, error.throwable.message))
is Error.Delete -> showMessage(getString(R.string.error_delete_list_fmt, error.title, error.throwable.message))
is Error.Update -> showMessage(getString(R.string.error_rename_list_fmt, error.title, error.throwable.message))
is Error.Create -> showMessage(
String.format(
getString(R.string.error_create_list_fmt),
error.title.unicodeWrap(),
error.throwable.message.unicodeWrap(),
),
)
is Error.Delete -> showMessage(
String.format(
getString(R.string.error_delete_list_fmt),
error.title.unicodeWrap(),
error.throwable.message.unicodeWrap(),
),
)
is Error.Update -> showMessage(
String.format(
getString(R.string.error_rename_list_fmt),
error.title.unicodeWrap(),
error.throwable.message.unicodeWrap(),
),
)
}
}
}

View File

@ -31,6 +31,7 @@ import androidx.lifecycle.lifecycleScope
import app.pachli.core.activity.BaseActivity
import app.pachli.core.activity.openLinkInCustomTab
import app.pachli.core.common.extensions.viewBinding
import app.pachli.core.common.string.unicodeWrap
import app.pachli.core.designsystem.R as DR
import app.pachli.core.navigation.LoginActivityIntent
import app.pachli.core.navigation.MainActivityIntent
@ -198,7 +199,10 @@ class LoginActivity : BaseActivity() {
{ e ->
binding.loginButton.isEnabled = true
binding.domainTextInputLayout.error =
getString(R.string.error_failed_app_registration_fmt, e.getServerErrorMessage() ?: e.localizedMessage)
String.format(
getString(R.string.error_failed_app_registration_fmt),
(e.getServerErrorMessage() ?: e.localizedMessage).unicodeWrap(),
)
setLoading(false)
Timber.e(e, "Error when creating/registing app")
return@launch