Compare commits

...

14 Commits

Author SHA1 Message Date
Isak Alexander f5110420a8 Translated using Weblate (Swedish)
Currently translated at 61.9% (39 of 63 strings)

Translation: Husky/Husky translations
Translate-URL: https://l10n.mentality.rip/projects/husky/husky-translations/sv/
2020-07-26 02:12:35 +02:00
Criss a239dc3638 Translated using Weblate (German)
Currently translated at 100.0% (63 of 63 strings)

Translation: Husky/Husky translations
Translate-URL: https://l10n.mentality.rip/projects/husky/husky-translations/de/
2020-07-26 02:12:35 +02:00
Karol Kosek ba7f71742f Translated using Weblate (Polish)
Currently translated at 87.3% (55 of 63 strings)

Translation: Husky/Husky translations
Translate-URL: https://l10n.mentality.rip/projects/husky/husky-translations/pl/
2020-07-26 02:12:35 +02:00
Isak Alexander d551a2eb3f Translated using Weblate (Swedish)
Currently translated at 47.6% (30 of 63 strings)

Translation: Husky/Husky translations
Translate-URL: https://l10n.mentality.rip/projects/husky/husky-translations/sv/
2020-07-26 02:12:35 +02:00
Isak Alexander 318c9b49ef Added translation using Weblate (Swedish) 2020-07-26 02:12:35 +02:00
Alibek Omarov 1e26196e9e ViewImageFragment: finalize transition to BigImageViewer. Now it should correctly handle EXIF rotation, do not stuck at transition and pick preview image if it's in cache but full image isn't 2020-07-26 03:12:25 +03:00
Konrad Pozniak 08780eade8 remove scrolling from notification options bar (#1858) 2020-07-25 23:25:31 +03:00
Mélanie Chauvel 9d2da9e79e Make account views clickable instead of avatar only (#1855)
Affects:
- New follower request and New follower notifications
- Accounts in Blocked users and Muted users pages
2020-07-25 23:25:31 +03:00
Alibek Omarov 918ca049bf l10n: merge translations from upstream 2020-07-25 23:24:25 +03:00
Alibek Omarov 23e602e3d1 Merge remote-tracking branch 'weblate/develop' into develop 2020-07-25 23:20:35 +03:00
Alibek Omarov 9c29cf1640 ViewImageFragment: replace TouchImageView by BigImageView based on SSIV and with proper GIF support 2020-06-30 19:22:52 +03:00
Alibek Omarov ef6343faaa AccountActivity: show Open in browser button on action bar 2020-06-29 16:43:41 +03:00
Alibek Omarov 205e3b8863 ViewMediaActivity: always show these action buttons 2020-06-29 16:35:31 +03:00
Alibek Omarov dddd6554f9 l10n: fix appearing toots in strings 2020-06-29 16:21:52 +03:00
47 changed files with 501 additions and 421 deletions

View File

@ -178,7 +178,9 @@ dependencies {
implementation "com.github.connyduck:sparkbutton:4.0.0" implementation "com.github.connyduck:sparkbutton:4.0.0"
implementation 'com.github.MikeOrtiz:TouchImageView:3.0.1' implementation 'com.github.piasy:BigImageViewer:1.6.5'
implementation 'com.github.piasy:GlideImageLoader:1.6.5'
implementation 'com.github.piasy:GlideImageViewFactory:1.6.5'
implementation "com.mikepenz:materialdrawer:$materialdrawerVersion" implementation "com.mikepenz:materialdrawer:$materialdrawerVersion"
implementation "com.mikepenz:materialdrawer-iconics:$materialdrawerVersion" implementation "com.mikepenz:materialdrawer-iconics:$materialdrawerVersion"

View File

@ -1,8 +1,6 @@
<resources> <resources>
<string name="about_tusky_license">Husky ist freie Open-Source-Software. <string name="about_tusky_license">Husky ist freie eine quelloffene Software. Es ist lizenziert unter der GNU General Public License Version 3. Du kannst dir die Lizenz hier anschauen: https://www.gnu.org/licenses/gpl-3.0.de.html</string>
Es ist lizenziert unter der GNU General Public License Version 3.
Du kannst dir die Lizenz hier anschauen: https://www.gnu.org/licenses/gpl-3.0.de.html</string>
<string name="about_tusky_account">Huskys Profil</string> <string name="about_tusky_account">Huskys Profil</string>
@ -17,15 +15,14 @@
<string name="about_tusky_version">Husky %s</string> <string name="about_tusky_version">Husky %s</string>
<string name="about_powered_by_tusky">Powered by Husky</string> <string name="about_powered_by_tusky">Angetrieben durch Husky</string>
<string name="about_project_site"> Webseite des Projekts:\n <string name="about_project_site">Website des Projekts:
https://husky.fwgs.ru \n https://husky.fwgs.ru</string>
</string>

View File

@ -18,4 +18,52 @@
<string name="pref_title_hide_muted_users">Ignorierte Nutzer verstecken</string> <string name="pref_title_hide_muted_users">Ignorierte Nutzer verstecken</string>
<string name="pref_title_notification_filter_emoji">Reaktionen auf meine Nachrichten</string> <string name="pref_title_notification_filter_emoji">Reaktionen auf meine Nachrichten</string>
<string name="action_reply_to">Antwort auf</string> <string name="action_reply_to">Antwort auf</string>
</resources> <string name="action_sticker">Sticker</string>
<string name="pref_title_enable_big_emojis">Große eigene Emoji aktivieren</string>
<string name="pref_title_enable_experimental_stickers">Experimentelle Pleroma-FE Sticker aktiveren (wenn verfügbar)</string>
<string name="action_send">POSTEN</string>
<string name="action_send_public">POSTEN!</string>
<string name="action_toggle_visibility">Beitragssichtbarkeit</string>
<string name="action_reblog">Wiederholen</string>
<string name="action_hide_reblogs">Widerholungen verbergen</string>
<string name="action_show_reblogs">Wiederholungen anzeigen</string>
<string name="action_open_reblogger">Wiederholungsauthor anzeigen</string>
<string name="action_open_reblogged_by">Wiederholungen anzeigen</string>
<string name="action_schedule_toot">Beitrag planen</string>
<string name="error_sticker_fetch">Es passierte ein Fehler bei dem Empfang des Stickers</string>
<string name="send_status_link_to">Beitrags-URL teilen mit…</string>
<string name="send_status_content_to">Beitrag teilen mit…</string>
<string name="send_toot_notification_title">Beitrag wird gesendet…</string>
<string name="send_toot_notification_error_title">Fehler beim Senden des Beitrages</string>
<string name="send_toot_notification_channel_name">Beiträge werden gesendet</string>
<string name="send_toot_notification_saved_content">Eine Kopier des Beitrages wurde in den Entwurfen gesichert</string>
<string name="status_share_content">Inhalt des Beitrages teilen</string>
<string name="action_unreblog">Wiederholung entfernen</string>
<string name="action_access_scheduled_toot">Geplante Beiträe</string>
<string name="dialog_redraft_toot_warning">Löschen und Beitrag neu verfassen\?</string>
<string name="notification_boost_description">Benachrichtigungen, wenn deine Beiträge wiederholt werden</string>
<string name="status_boosted_format">%s wiederholte</string>
<string name="compose_shortcut_long_label">Beitrag verfassen</string>
<string name="unreblog_private">Wiederholung entfernen</string>
<string name="action_open_toot">Beitrag öffnen</string>
<string name="reblog_private">Für originale Audienz wiederholen</string>
<string name="description_status_reblogged">Wiederholt</string>
<string name="dialog_delete_toot_warning">Diesen Beitrag löschen\?</string>
<string name="error_sender_account_gone">Fehler beim Senden des Beitrages.</string>
<string name="notification_reblog_format">%s hat deinen Beitrag wiederholt</string>
<string name="notification_favourite_format">%s hat deinen Beitrag favorisiert</string>
<string name="notification_boost_name">Wiederholt</string>
<string name="notification_favourite_description">Benachrichigungen, wenn deine Beiträge favorisiert wurden</string>
<string name="pref_title_confirm_reblogs">Bestätigung vor dem Löschen anzeigen</string>
<string name="pref_title_notification_filter_reblogs">Meine Beiträge wurden wiederholt</string>
<string name="pref_title_show_boosts">Wiederholungen anzeigen</string>
<string name="pref_title_alway_open_spoiler">Beiträge mit sensiblen Inhalten immer anzeigen</string>
<plurals name="reblogs">
<item quantity="one"><b>%s</b> wiederholt</item>
<item quantity="other"><b>%s</b> wiederholten</item>
</plurals>
<string name="status_share_link">Link zum Beitrag teilen</string>
<string name="title_scheduled_toot">Geplante Beiträge</string>
<string name="title_reblogged_by">Wiederholt von</string>
<string name="title_view_thread">Beitrag</string>
</resources>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="notification_favourite_format">%s favourited your post</string>
</resources>

View File

@ -60,4 +60,5 @@
<string name="send_toot_notification_saved_content">Kopia postu została zapisana jako szkic</string> <string name="send_toot_notification_saved_content">Kopia postu została zapisana jako szkic</string>
<string name="error_sender_account_gone">Wysyłanie postu nie powiodło się.</string> <string name="error_sender_account_gone">Wysyłanie postu nie powiodło się.</string>
<string name="pref_title_alway_open_spoiler">Nie ukrywaj zawartości multimedialnej oznaczonej jako wrażliwa</string> <string name="pref_title_alway_open_spoiler">Nie ukrywaj zawartości multimedialnej oznaczonej jako wrażliwa</string>
<string name="action_access_scheduled_toot">Zaplanowane posty</string>
</resources> </resources>

View File

@ -11,7 +11,7 @@
<string name="about_tusky_account">Perfil do Husky</string> <string name="about_tusky_account">Perfil do Husky</string>
<string name="restart_emoji">É preciso reiniciar o Husky para aplicar essas mudanças</string> <string name="restart_emoji">É necessário reiniciar o Husky para aplicar essas mudanças</string>
<string name="license_description">O Husky contém código e recursos dos seguintes projetos de código aberto:</string> <string name="license_description">O Husky contém código e recursos dos seguintes projetos de código aberto:</string>
@ -29,8 +29,8 @@
<string name="about_bug_feature_request_site">Reporte bugs &amp; requisite funcionalidades:\n <string name="about_bug_feature_request_site">Reporte bugs e solicite funcionalidades:
https://git.mentality.rip/FWGS/Husky/issues</string> \n https://git.mentality.rip/FWGS/Husky/issues</string>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="action_emoji_react">Reagera</string>
<string name="action_emoji_unreact">Ta bort reaktion</string>
<string name="action_emoji_reacted_by">Vem reagerade</string>
<string name="action_enable_formatting_syntax">Aktivera %s</string>
<string name="action_disable_formatting_syntax">Avaktivera %s</string>
<string name="title_emoji_reacted_by">%s reagerade av</string>
<string name="hint_appname">Applikationsmanamn</string>
<string name="admin">Administratör</string>
<string name="action_sticker">Klistermärken</string>
<string name="error_media_upload_size">Filstorleken är större än vad instanser tillåter</string>
<string name="error_sticker_fetch">Ett fel inträffade vid hämtning av klistermärke</string>
<string name="notification_emoji_name">Emoji Reaktioner</string>
<string name="pref_title_hide_muted_users">Dölj tystade användare</string>
<string name="pref_title_enable_big_emojis">Aktivera större anpassade emojis</string>
<string name="action_toggle_visibility">Inläggssynlighet</string>
<string name="action_schedule_toot">Schemalägg inlägg</string>
<string name="action_reblog">Repetera</string>
<string name="action_unreblog">Ta bort repetering</string>
<string name="action_hide_reblogs">Dölj repeteringar</string>
<string name="action_show_reblogs">Visa repeteringar</string>
<string name="action_send">SKICKA</string>
<string name="action_send_public">SKICKA!</string>
<string name="action_reply_to">Svara till</string>
<string name="hint_website">Applikationswebbplats</string>
<string name="moderator">Moderator</string>
<string name="notification_emoji_format">%s reagerade med %s på ditt inlägg</string>
<string name="notification_emoji_description">Aviseringar på nya emoji-reaktioner</string>
<string name="pref_title_default_formatting">Syntax på formatteringsstandard (om instansen stödjer det)</string>
<string name="pref_title_notification_filter_emoji">reaktioner på mina inlägg med emojis</string>
<string name="pref_title_enable_experimental_stickers">Aktivera experimentell Pleroma-FE klistermärke (om möjligt)</string>
<string name="action_open_reblogged_by">Visa repeteringar</string>
<string name="action_access_scheduled_toot">Schemalagda inlägg</string>
<string name="reblog_private">Repetera till den ursprungliga målgruppen</string>
<string name="unreblog_private">Ta bort repetering</string>
<string name="action_open_toot">Öppna inlägg</string>
<string name="compose_shortcut_long_label">Skriv inlägg</string>
<string name="dialog_delete_toot_warning">Ta bort detta inlägg\?</string>
<string name="action_open_reblogger">Öppna avsändaren av repeteringen</string>
<string name="description_status_reblogged">Repeterat</string>
</resources>

View File

@ -9,7 +9,7 @@
<string name="about_tusky_account">บัญชีทางการของ Husky</string> <string name="about_tusky_account">บัญชีทางการของ Husky</string>
<string name="about_tusky_license">Husky คือซอฟต์แวร์เสรีและโอเพนซอร์ส &lt;!-- --&gt; ภายใต้สัญญาอนุญาต GNU General Public License Version 3 &lt;!-- --&gt;ดูสัญญาที่ : https://www.gnu.org/licenses/gpl-3.0.ja.html</string> <string name="about_tusky_license">Husky คือซอฟต์แวร์เสรีและโอเพนซอร์ส ภายใต้สัญญาอนุญาต GNU General Public License Version 3 ดูสัญญาที่ : https://www.gnu.org/licenses/gpl-3.0.ja.html</string>
<string name="about_powered_by_tusky">ขับเคลื่อนด้วย Husky</string> <string name="about_powered_by_tusky">ขับเคลื่อนด้วย Husky</string>
@ -44,19 +44,13 @@
<string name="dialog_whats_an_instance">"ใส่ที่อยู่หรือโดเมนของ Instance ได้ที่นี่ เช่น shitposter.club blob.cat expired.mentality.rip และ &lt;a href=\"https://fediverse.network/pleroma?count=peers\"&gt;อีกมากมาย!&lt;/a&gt; <string name="dialog_whats_an_instance">ใส่ที่อยู่หรือโดเมนของ Instance ได้ที่นี่ เช่น shitposter.club blob.cat expired.mentality.rip และ <a href="https://fediverse.network/pleroma?count=peers">อีกมากมาย!</a>
\n \n
\nถ้ายังไม่มีบัญชี สามารถใส่ชื่อ Instance ที่ต้องการจะร่วมแล้วสร้างบัญชีที่นั่น \nถ้ายังไม่มีบัญชี สามารถใส่ชื่อ Instance ที่ต้องการจะร่วมแล้วสร้างบัญชีที่นั่น
\n \n
\nInstance คือที่ที่หนึ่งไว้โฮสต์บัญชีคุณ แต่คุณยังสามารถสื่อสาร ติดตามบุคคลบน Instance อื่นได้เหมือนอยู่บนไซต์เดียวกัน \nInstance คือที่ที่หนึ่งไว้โฮสต์บัญชีคุณ แต่คุณยังสามารถสื่อสาร ติดตามบุคคลบน Instance อื่นได้เหมือนอยู่บนไซต์เดียวกัน
\n \n
\nพบข้อมูลเพิ่มเติมได้ที่ &lt;a href=\"https://joinmastodon.org\"&gt;joinmastodon.org&lt;/a&gt; "<a href="https://fediverse.network/pleroma?count=peers">more!</a> \nพบข้อมูลเพิ่มเติมได้ที่ <a href="https://joinmastodon.org">joinmastodon.org</a> </string>
\n\nIf you don\'t yet have an account, you can enter the name of the instance you\'d like to
join and create an account there.\n\nAn instance is a single place where your account is
hosted, but you can easily communicate with and follow folks on other instances as though
you were on the same site.
\n\nMore info can be found at <a href="https://joinmastodon.org">joinmastodon.org</a>.
</string>
</resources> </resources>

View File

@ -33,13 +33,14 @@
<string name="action_toggle_visibility">Post visibility</string> <string name="action_toggle_visibility">Post visibility</string>
<string name="action_schedule_toot">Schedule post</string> <string name="action_schedule_toot">Schedule post</string>
<string name="action_reblog">Repeat</string> <string name="action_reblog">Repeat</string>
<string name="action_unreblog">Remove repeats</string> <string name="action_unreblog">Remove repeat</string>
<string name="action_hide_reblogs">Hide repeats</string> <string name="action_hide_reblogs">Hide repeats</string>
<string name="action_show_reblogs">Show repeats</string> <string name="action_show_reblogs">Show repeats</string>
<string name="action_send">POST</string> <string name="action_send">POST</string>
<string name="action_send_public">POST!</string> <string name="action_send_public">POST!</string>
<string name="action_open_reblogger">Open repeat author</string> <string name="action_open_reblogger">Open repeat author</string>
<string name="action_open_reblogged_by">Show repeats</string> <string name="action_open_reblogged_by">Show repeats</string>
<string name="action_access_scheduled_toot">Scheduled posts</string>
<string name="reblog_private">Repeat to original audience</string> <string name="reblog_private">Repeat to original audience</string>
<string name="unreblog_private">Remove repeat</string> <string name="unreblog_private">Remove repeat</string>
<string name="action_open_toot">Open post</string> <string name="action_open_toot">Open post</string>

View File

@ -22,6 +22,8 @@ import android.util.Log
import androidx.emoji.text.EmojiCompat import androidx.emoji.text.EmojiCompat
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import androidx.work.WorkManager import androidx.work.WorkManager
import com.github.piasy.biv.BigImageViewer
import com.github.piasy.biv.loader.glide.GlideCustomImageLoader
import com.keylesspalace.tusky.components.notifications.NotificationWorkerFactory import com.keylesspalace.tusky.components.notifications.NotificationWorkerFactory
import com.keylesspalace.tusky.di.AppInjector import com.keylesspalace.tusky.di.AppInjector
import com.keylesspalace.tusky.util.* import com.keylesspalace.tusky.util.*
@ -73,6 +75,8 @@ class TuskyApplication : Application(), HasAndroidInjector {
RxJavaPlugins.setErrorHandler { RxJavaPlugins.setErrorHandler {
Log.w("RxJava", "undeliverable exception", it) Log.w("RxJava", "undeliverable exception", it)
} }
BigImageViewer.initialize(GlideCustomImageLoader.with(this))
} }
override fun attachBaseContext(base: Context) { override fun attachBaseContext(base: Context) {

View File

@ -103,7 +103,7 @@ public class BlocksAdapter extends AccountAdapter {
listener.onBlock(false, id, position); listener.onBlock(false, id, position);
} }
}); });
avatar.setOnClickListener(v -> listener.onViewAccount(id)); itemView.setOnClickListener(v -> listener.onViewAccount(id));
} }
} }
} }

View File

@ -44,6 +44,6 @@ internal class FollowRequestViewHolder(itemView: View, private val showHeader: B
listener.onRespondToFollowRequest(false, id, position) listener.onRespondToFollowRequest(false, id, position)
} }
} }
itemView.avatar.setOnClickListener { listener.onViewAccount(id) } itemView.setOnClickListener { listener.onViewAccount(id) }
} }
} }

View File

@ -83,7 +83,7 @@ public class MutesAdapter extends AccountAdapter {
void setupActionListener(final AccountActionListener listener) { void setupActionListener(final AccountActionListener listener) {
unmute.setOnClickListener(v -> listener.onMute(false, id, getAdapterPosition())); unmute.setOnClickListener(v -> listener.onMute(false, id, getAdapterPosition()));
avatar.setOnClickListener(v -> listener.onViewAccount(id)); itemView.setOnClickListener(v -> listener.onViewAccount(id));
} }
} }
} }

View File

@ -366,7 +366,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
} }
void setupButtons(final NotificationActionListener listener, final String accountId) { void setupButtons(final NotificationActionListener listener, final String accountId) {
avatar.setOnClickListener(v -> listener.onViewAccount(accountId)); itemView.setOnClickListener(v -> listener.onViewAccount(accountId));
} }
} }

View File

@ -33,9 +33,11 @@ import at.connyduck.sparkbutton.helpers.Utils
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.request.target.CustomTarget import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition import com.bumptech.glide.request.transition.Transition
import com.github.piasy.biv.loader.glide.GlideCustomImageLoader
import com.github.piasy.biv.view.BigImageView
import com.github.piasy.biv.view.GlideImageViewFactory
import com.keylesspalace.tusky.R import com.keylesspalace.tusky.R
import com.keylesspalace.tusky.util.withLifecycleContext import com.keylesspalace.tusky.util.withLifecycleContext
import com.ortiz.touchview.TouchImageView
// https://github.com/tootsuite/mastodon/blob/1656663/app/models/media_attachment.rb#L94 // https://github.com/tootsuite/mastodon/blob/1656663/app/models/media_attachment.rb#L94
private const val MEDIA_DESCRIPTION_CHARACTER_LIMIT = 420 private const val MEDIA_DESCRIPTION_CHARACTER_LIMIT = 420
@ -50,9 +52,9 @@ fun <T> T.makeCaptionDialog(existingDescription: String?,
dialogLayout.setPadding(padding, padding, padding, padding) dialogLayout.setPadding(padding, padding, padding, padding)
dialogLayout.orientation = LinearLayout.VERTICAL dialogLayout.orientation = LinearLayout.VERTICAL
val imageView = TouchImageView(this).apply { val imageView = BigImageView(this)
maxZoom = 6f // imageView.ssiv.maxScale = 6f
} imageView.setImageViewFactory(GlideImageViewFactory())
val displayMetrics = DisplayMetrics() val displayMetrics = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(displayMetrics) windowManager.defaultDisplay.getMetrics(displayMetrics)
@ -98,18 +100,9 @@ fun <T> T.makeCaptionDialog(existingDescription: String?,
// Load the image and manually set it into the ImageView because it doesn't have a fixed // Load the image and manually set it into the ImageView because it doesn't have a fixed
// size. Maybe we should limit the size of CustomTarget // size. Maybe we should limit the size of CustomTarget
Glide.with(this) imageView.showImage(previewUri)
.load(previewUri)
.into(object : CustomTarget<Drawable>() {
override fun onLoadCleared(placeholder: Drawable?) {}
override fun onResourceReady(resource: Drawable, transition: Transition<in Drawable>?) {
imageView.setImageDrawable(resource)
}
})
} }
private fun Activity.showFailedCaptionMessage() { private fun Activity.showFailedCaptionMessage() {
Toast.makeText(this, R.string.error_failed_set_caption, Toast.LENGTH_SHORT).show() Toast.makeText(this, R.string.error_failed_set_caption, Toast.LENGTH_SHORT).show()
} }

View File

@ -20,15 +20,22 @@ import android.animation.AnimatorListenerAdapter
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.* import android.view.*
import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.exifinterface.media.ExifInterface
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.DataSource
import com.bumptech.glide.load.engine.GlideException import com.bumptech.glide.load.engine.GlideException
import com.bumptech.glide.request.RequestListener import com.bumptech.glide.request.RequestListener
import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.target.Target import com.bumptech.glide.request.target.Target
import com.bumptech.glide.request.transition.Transition
import com.github.piasy.biv.BigImageViewer
import com.github.piasy.biv.loader.ImageLoader
import com.github.piasy.biv.view.GlideImageViewFactory
import com.keylesspalace.tusky.R import com.keylesspalace.tusky.R
import com.keylesspalace.tusky.entity.Attachment import com.keylesspalace.tusky.entity.Attachment
import com.keylesspalace.tusky.util.hide import com.keylesspalace.tusky.util.hide
@ -36,7 +43,11 @@ import com.keylesspalace.tusky.util.visible
import io.reactivex.subjects.BehaviorSubject import io.reactivex.subjects.BehaviorSubject
import kotlinx.android.synthetic.main.activity_view_media.* import kotlinx.android.synthetic.main.activity_view_media.*
import kotlinx.android.synthetic.main.fragment_view_image.* import kotlinx.android.synthetic.main.fragment_view_image.*
import java.io.File
import java.lang.Exception
import kotlin.math.abs import kotlin.math.abs
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
class ViewImageFragment : ViewMediaFragment() { class ViewImageFragment : ViewMediaFragment() {
interface PhotoActionsListener { interface PhotoActionsListener {
@ -47,7 +58,6 @@ class ViewImageFragment : ViewMediaFragment() {
private lateinit var photoActionsListener: PhotoActionsListener private lateinit var photoActionsListener: PhotoActionsListener
private lateinit var toolbar: View private lateinit var toolbar: View
private var transition = BehaviorSubject.create<Unit>()
private var shouldStartTransition = false private var shouldStartTransition = false
// Volatile: Image requests happen on background thread and we want to see updates to it // Volatile: Image requests happen on background thread and we want to see updates to it
@ -55,6 +65,10 @@ class ViewImageFragment : ViewMediaFragment() {
@Volatile @Volatile
private var startedTransition = false private var startedTransition = false
private var uri = Uri.EMPTY
private var previewUri = Uri.EMPTY
private var showingPreview = false
override lateinit var descriptionView: TextView override lateinit var descriptionView: TextView
override fun onAttach(context: Context) { override fun onAttach(context: Context) {
super.onAttach(context) super.onAttach(context)
@ -65,73 +79,78 @@ class ViewImageFragment : ViewMediaFragment() {
descriptionView = mediaDescription descriptionView = mediaDescription
photoView.transitionName = url photoView.transitionName = url
startedTransition = false startedTransition = false
loadImageFromNetwork(url, previewUrl, photoView) uri = Uri.parse(url)
if(previewUrl != null && !previewUrl.equals(url)) {
previewUri = Uri.parse(previewUrl)
}
loadImageFromNetwork()
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
toolbar = activity!!.toolbar toolbar = activity!!.toolbar
this.transition = BehaviorSubject.create()
return inflater.inflate(R.layout.fragment_view_image, container, false) return inflater.inflate(R.layout.fragment_view_image, container, false)
} }
private lateinit var gestureDetector : GestureDetector
private val imageOnTouchListener = object : View.OnTouchListener {
private var lastY = 0.0f
private var swipeStartedWithOneFinger = false
override fun onTouch(v: View, event: MotionEvent): Boolean {
// This part is for scaling/translating on vertical move.
// We use raw coordinates to get the correct ones during scaling
gestureDetector.onTouchEvent(event)
if(event.pointerCount != 1) {
swipeStartedWithOneFinger = false
return false
}
when(event.action) {
MotionEvent.ACTION_DOWN -> {
swipeStartedWithOneFinger = true
lastY = event.rawY
}
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
onGestureEnd()
swipeStartedWithOneFinger = false
}
MotionEvent.ACTION_MOVE -> {
if(swipeStartedWithOneFinger && photoView.ssiv.scale <= photoView.ssiv.minScale) {
val diff = event.rawY - lastY
// This code is to prevent transformations during page scrolling
// If we are already translating or we reached the threshold, then transform.
if (photoView.translationY != 0f || abs(diff) > 40) {
photoView.translationY += (diff)
val scale = (-abs(photoView.translationY) / 720 + 1).coerceAtLeast(0.5f)
photoView.scaleY = scale
photoView.scaleX = scale
lastY = event.rawY
}
}
}
}
return false
}
}
@SuppressLint("ClickableViewAccessibility") @SuppressLint("ClickableViewAccessibility")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
val gestureDetector = GestureDetector(requireContext(), object : GestureDetector.SimpleOnGestureListener() { gestureDetector = GestureDetector(requireContext(), object : GestureDetector.SimpleOnGestureListener() {
override fun onSingleTapConfirmed(e: MotionEvent?): Boolean { override fun onSingleTapConfirmed(e: MotionEvent?): Boolean {
onMediaTap() onMediaTap()
return true return true
} }
}) })
var lastY = 0f // photoView.setOnTouchListener(this)
photoView.setOnTouchListener { _, event -> photoView.setImageLoaderCallback(imageLoaderCallback)
// This part is for scaling/translating on vertical move. photoView.setImageViewFactory(GlideImageViewFactory())
// We use raw coordinates to get the correct ones during scaling
var result = true
gestureDetector.onTouchEvent(event)
if (event.action == MotionEvent.ACTION_DOWN) {
lastY = event.rawY
} else if (!photoView.isZoomed && event.action == MotionEvent.ACTION_MOVE) {
val diff = event.rawY - lastY
// This code is to prevent transformations during page scrolling
// If we are already translating or we reached the threshold, then transform.
if (photoView.translationY != 0f || abs(diff) > 40) {
photoView.translationY += (diff)
val scale = (-abs(photoView.translationY) / 720 + 1).coerceAtLeast(0.5f)
photoView.scaleY = scale
photoView.scaleX = scale
lastY = event.rawY
}
return@setOnTouchListener true
} else if (event.action == MotionEvent.ACTION_UP || event.action == MotionEvent.ACTION_CANCEL) {
onGestureEnd()
} else if (event.pointerCount >= 2 || photoView.canScrollHorizontally(1) && photoView.canScrollHorizontally(-1)) {
// Starting from here is adapted code from TouchImageView to play nice with pager.
// Can scroll horizontally checks if there's still a part of the image.
// That can be scrolled until you reach the edge multi-touch event.
val parent = view.parent
result = when (event.action) {
MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE -> {
// Disallow RecyclerView to intercept touch events.
parent.requestDisallowInterceptTouchEvent(true)
// Disable touch on view
false
}
MotionEvent.ACTION_UP -> {
// Allow RecyclerView to intercept touch events.
parent.requestDisallowInterceptTouchEvent(false)
true
}
else -> true
}
}
result
}
val arguments = this.requireArguments() val arguments = this.requireArguments()
val attachment = arguments.getParcelable<Attachment>(ARG_ATTACHMENT) val attachment = arguments.getParcelable<Attachment>(ARG_ATTACHMENT)
@ -181,99 +200,92 @@ class ViewImageFragment : ViewMediaFragment() {
} }
override fun onDestroyView() { override fun onDestroyView() {
Glide.with(this).clear(photoView)
transition.onComplete()
super.onDestroyView() super.onDestroyView()
photoView.ssiv?.recycle()
} }
private fun loadImageFromNetwork(url: String, previewUrl: String?, photoView: ImageView) { private inner class DummyCacheTarget(val ctx: Context, val requestPreview : Boolean) : CustomTarget<File>() {
val glide = Glide.with(this) override fun onLoadCleared(placeholder: Drawable?) {}
// Request image from the any cache override fun onLoadFailed(errorDrawable: Drawable?) {
glide if(requestPreview) {
.load(url) // no preview, no full image in cache, load full image
.dontAnimate() // forget about fancy transition
.onlyRetrieveFromCache(true) showingPreview = false
.let { photoView.showImage(uri)
if (previewUrl != null)
it.thumbnail(glide
.load(previewUrl)
.dontAnimate()
.onlyRetrieveFromCache(true)
.addListener(ImageRequestListener(true, isThumnailRequest = true)))
else it
}
//Request image from the network on fail load image from cache
.error(glide.load(url)
.centerInside()
.addListener(ImageRequestListener(false, isThumnailRequest = false))
)
.addListener(ImageRequestListener(true, isThumnailRequest = false))
.into(photoView)
}
/**
* We start transition as soon as we think reasonable but we must take care about couple of
* things>
* - Do not change image in the middle of transition. It messes up the view.
* - Do not transition for the views which don't require it. Starting transition from
* multiple fragments does weird things
* - Do not wait to transition until the image loads from network
*
* Preview, cached image, network image, x - failed, o - succeeded
* P C N - start transition after...
* x x x - the cache fails
* x x o - the cache fails
* x o o - the cache succeeds
* o x o - the preview succeeds. Do not start on cache.
* o o o - the preview succeeds. Do not start on cache.
*
* So start transition after the first success or after anything with the cache
*
* @param isCacheRequest - is this listener for request image from cache or from the network
*/
private inner class ImageRequestListener(
private val isCacheRequest: Boolean,
private val isThumnailRequest: Boolean) : RequestListener<Drawable> {
override fun onLoadFailed(e: GlideException?, model: Any, target: Target<Drawable>,
isFirstResource: Boolean): Boolean {
// If cache for full image failed complete transition
if (isCacheRequest && !isThumnailRequest && shouldStartTransition
&& !startedTransition) {
photoActionsListener.onBringUp()
}
// Hide progress bar only on fail request from internet
if (!isCacheRequest) progressBar?.hide()
// We don't want to overwrite preview with null when main image fails to load
return !isCacheRequest
}
@SuppressLint("CheckResult")
override fun onResourceReady(resource: Drawable, model: Any, target: Target<Drawable>,
dataSource: DataSource, isFirstResource: Boolean): Boolean {
progressBar?.hide() // Always hide the progress bar on success
if (!startedTransition || !shouldStartTransition) {
// Set this right away so that we don't have to concurrent post() requests
startedTransition = true
// post() because load() replaces image with null. Sometimes after we set
// the thumbnail.
photoView.post {
target.onResourceReady(resource, null)
if (shouldStartTransition) photoActionsListener.onBringUp()
}
} else { } else {
// This wait for transition. If there's no transition then we should hit // let's start downloading full image that we supposedly don't have
// another branch. take() will unsubscribe after we have it to not leak menmory BigImageViewer.prefetch(uri)
transition
.take(1) // meanwhile poke cache about preview image
.subscribe { target.onResourceReady(resource, null) } Glide.with(ctx).asFile()
.load(previewUri)
.dontAnimate()
.onlyRetrieveFromCache(true)
.into(DummyCacheTarget(ctx, true))
} }
return true
} }
override fun onResourceReady(resource: File, transition: Transition<in File>?) {
showingPreview = requestPreview
if(requestPreview) {
// have preview cached but not full image
photoView.showImage(previewUri, uri, true)
} else {
photoView.showImage(uri)
}
}
}
private fun loadImageFromNetwork() {
Glide.with(this).asFile()
.load(uri)
.onlyRetrieveFromCache(true)
.dontAnimate()
.into(DummyCacheTarget(context!!, false))
} }
override fun onTransitionEnd() { override fun onTransitionEnd() {
this.transition.onNext(Unit) // if we had preview, load full image, as transition has ended
if (showingPreview) {
showingPreview = false
photoView.loadMainImageNow()
}
}
private val imageLoaderCallback = object : ImageLoader.Callback {
override fun onSuccess(image: File?) {
if(!showingPreview) {
progressBar?.hide()
photoView.ssiv?.let {
it.orientation = SubsamplingScaleImageView.ORIENTATION_USE_EXIF
it.setOnTouchListener(imageOnTouchListener)
}
}
}
override fun onFail(error: Exception?) {
progressBar?.hide()
}
override fun onCacheHit(imageType: Int, image: File?) {
// image is here, bring up the activity!
photoActionsListener.onBringUp()
}
override fun onStart() {
// cache miss but image is downloading, bring up the activity
photoActionsListener.onBringUp()
}
override fun onCacheMiss(imageType: Int, image: File?) {
// this callback is useless because it's called after
// image is downloaded or pulled from cache
// so in case of cache miss, onStart is used
}
override fun onFinish() {}
override fun onProgress(progress: Int) {
// TODO: make use of it :)
}
} }
} }

View File

@ -1,74 +0,0 @@
/* Copyright 2019 Joel Pyska
*
* This file is a part of Tusky.
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with Tusky; if not,
* see <http://www.gnu.org/licenses>. */
package com.keylesspalace.tusky.util
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import com.google.android.material.appbar.AppBarLayout
import androidx.coordinatorlayout.widget.CoordinatorLayout
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
/**
* Disable AppBar scroll if content view empty or don't need to scroll
*/
class AppBarLayoutNoEmptyScrollBehavior : AppBarLayout.Behavior {
constructor() : super()
constructor (context: Context, attrs: AttributeSet) : super(context, attrs)
private fun isRecyclerViewScrollable(appBar: AppBarLayout, recyclerView: RecyclerView?): Boolean {
if (recyclerView == null)
return false
var recyclerViewHeight = recyclerView.height // Height includes RecyclerView plus AppBarLayout at same level
val appCompatHeight = appBar.height
recyclerViewHeight -= appCompatHeight
return recyclerView.computeVerticalScrollRange() > recyclerViewHeight
}
override fun onStartNestedScroll(parent: CoordinatorLayout, child: AppBarLayout, directTargetChild: View, target: View, nestedScrollAxes: Int, type: Int): Boolean {
return if (isRecyclerViewScrollable(child, getRecyclerView(parent))) {
super.onStartNestedScroll(parent, child, directTargetChild, target, nestedScrollAxes, type)
} else false
}
override fun onTouchEvent(parent: CoordinatorLayout, child: AppBarLayout, ev: MotionEvent): Boolean {
//Prevent scroll on app bar drag
return if (child.isShown && !isRecyclerViewScrollable(child, getRecyclerView(parent)))
true
else
super.onTouchEvent(parent, child, ev)
}
private fun getRecyclerView(parent: ViewGroup): RecyclerView? {
for (i in 0 until parent.childCount) {
val child = parent.getChildAt(i)
if (child is RecyclerView)
return child
else if (child is ViewGroup) {
val childRecyclerView = getRecyclerView(child)
if (childRecyclerView is RecyclerView)
return childRecyclerView
}
}
return null
}
}

View File

@ -17,15 +17,13 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?attr/colorSurface" android:background="?attr/colorSurface"
app:elevation="0dp" app:elevation="0dp">
app:layout_behavior="com.keylesspalace.tusky.util.AppBarLayoutNoEmptyScrollBehavior">
<LinearLayout <LinearLayout
android:id="@+id/topButtonsLayout" android:id="@+id/topButtonsLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal">
app:layout_scrollFlags="scroll|enterAlways">
<Button <Button
android:id="@+id/buttonClear" android:id="@+id/buttonClear"

View File

@ -11,15 +11,13 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?attr/colorSurface" android:background="?attr/colorSurface"
app:elevation="0dp" app:elevation="0dp">
app:layout_behavior="com.keylesspalace.tusky.util.AppBarLayoutNoEmptyScrollBehavior">
<LinearLayout <LinearLayout
android:id="@+id/topButtonsLayout" android:id="@+id/topButtonsLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal">
app:layout_scrollFlags="scroll|enterAlways">
<Button <Button
android:id="@+id/buttonClear" android:id="@+id/buttonClear"

View File

@ -7,10 +7,12 @@
android:clickable="true" android:clickable="true"
android:focusable="true"> android:focusable="true">
<com.ortiz.touchview.TouchImageView <com.github.piasy.biv.view.BigImageView
android:id="@+id/photoView" android:id="@+id/photoView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent"
app:initScaleType="fitCenter"
app:optimizeDisplay="false" />
<ProgressBar <ProgressBar
android:id="@+id/progressBar" android:id="@+id/progressBar"

View File

@ -2,14 +2,16 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android" <menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/action_open_in_web"
android:icon="@drawable/ic_exit_to_app_24px"
android:iconTint="@color/textColorPrimary"
android:title="@string/action_open_in_web"
app:showAsAction="always" />
<item android:id="@+id/action_mention" <item android:id="@+id/action_mention"
android:title="@string/action_mention" android:title="@string/action_mention"
app:showAsAction="never" /> app:showAsAction="never" />
<item android:id="@+id/action_open_in_web"
android:title="@string/action_open_in_web"
app:showAsAction="never" />
<item android:id="@+id/action_follow" <item android:id="@+id/action_follow"
android:title="@string/action_follow" android:title="@string/action_follow"
app:showAsAction="never" /> app:showAsAction="never" />
@ -32,5 +34,6 @@
<item <item
android:id="@+id/action_report" android:id="@+id/action_report"
android:title="@string/action_report" /> android:title="@string/action_report"
app:showAsAction="never" />
</menu> </menu>

View File

@ -5,17 +5,17 @@
android:id="@+id/action_open_in_external_app" android:id="@+id/action_open_in_external_app"
android:icon="@drawable/ic_exit_to_app_24px" android:icon="@drawable/ic_exit_to_app_24px"
android:title="@string/action_open_in_external_app" android:title="@string/action_open_in_external_app"
app:showAsAction="ifRoom" /> app:showAsAction="always" />
<item <item
android:id="@+id/action_download" android:id="@+id/action_download"
android:icon="@drawable/ic_file_download_black_24dp" android:icon="@drawable/ic_file_download_black_24dp"
android:title="@string/dialog_download_image" android:title="@string/dialog_download_image"
app:showAsAction="ifRoom" /> app:showAsAction="always" />
<item <item
android:id="@+id/action_share_media" android:id="@+id/action_share_media"
android:icon="@drawable/ic_menu_share_24dp" android:icon="@drawable/ic_menu_share_24dp"
android:title="@string/action_share" android:title="@string/action_share"
app:showAsAction="ifRoom" /> app:showAsAction="always" />
<item <item
android:id="@+id/action_copy_media_link" android:id="@+id/action_copy_media_link"
android:title="@string/action_copy_link" android:title="@string/action_copy_link"

View File

@ -468,7 +468,6 @@
<string name="description_status_bookmarked">أضيف إلى الفواصل المرجعية</string> <string name="description_status_bookmarked">أضيف إلى الفواصل المرجعية</string>
<string name="select_list_title">اختر قائمة</string> <string name="select_list_title">اختر قائمة</string>
<string name="list">القائمة</string> <string name="list">القائمة</string>
<string name="gradient_for_media">اظهر ألوانا متدرّجة للوسائط المخفية</string>
<string name="no_saved_status">ليس لديك أية مسودات.</string> <string name="no_saved_status">ليس لديك أية مسودات.</string>
<string name="no_scheduled_status">ليس لديك أية منشورات مُبرمَجة للنشر.</string> <string name="no_scheduled_status">ليس لديك أية منشورات مُبرمَجة للنشر.</string>
<string name="error_audio_upload_size">يجب أن يكون حجم الملفات الصوتية أقل مِن 40 ميغابايت.</string> <string name="error_audio_upload_size">يجب أن يكون حجم الملفات الصوتية أقل مِن 40 ميغابايت.</string>
@ -494,4 +493,9 @@
<string name="notification_follow_request_format">%s طلبَ متابعتك</string> <string name="notification_follow_request_format">%s طلبَ متابعتك</string>
<string name="hashtags">الوسوم</string> <string name="hashtags">الوسوم</string>
<string name="add_hashtag_title">إضافة وسم</string> <string name="add_hashtag_title">إضافة وسم</string>
<string name="pref_title_gradient_for_media">اظهر ألوانا متدرّجة للوسائط المخفية</string>
<string name="pref_main_nav_position">موضع التنقل الرئيسي</string>
<string name="pref_main_nav_position_option_bottom">الأسفل</string>
<string name="pref_main_nav_position_option_top">الأعلى</string>
<string name="action_unmute_domain">إلغاء كتم %s</string>
</resources> </resources>

View File

@ -442,7 +442,6 @@
<string name="select_list_title">Seleccionar la llista</string> <string name="select_list_title">Seleccionar la llista</string>
<string name="list">Llista</string> <string name="list">Llista</string>
<string name="post_lookup_error_format">S\'ha produït un error en cercar la publicació %s</string> <string name="post_lookup_error_format">S\'ha produït un error en cercar la publicació %s</string>
<string name="gradient_for_media">Mostra degradats de colors per a contingut multimèdia ocult</string>
<string name="no_scheduled_status">No tens cap estat planificat.</string> <string name="no_scheduled_status">No tens cap estat planificat.</string>
<string name="error_audio_upload_size">Els fitxers d\'àudio han de ser més petits que 40MB.</string> <string name="error_audio_upload_size">Els fitxers d\'àudio han de ser més petits que 40MB.</string>
<string name="no_saved_status">No tens cap esborrany.</string> <string name="no_saved_status">No tens cap esborrany.</string>

View File

@ -8,10 +8,10 @@
<string name="error_no_web_browser_found">Kein Webbrowser gefunden.</string> <string name="error_no_web_browser_found">Kein Webbrowser gefunden.</string>
<string name="error_authorization_unknown">Ein undefinierbarer Autorisierungsfehler ist aufgetreten.</string> <string name="error_authorization_unknown">Ein undefinierbarer Autorisierungsfehler ist aufgetreten.</string>
<string name="error_authorization_denied">Autorisierung fehlgeschlagen.</string> <string name="error_authorization_denied">Autorisierung fehlgeschlagen.</string>
<string name="error_retrieving_oauth_token">Es konnte kein Login-Token abgerufen werden.</string> <string name="error_retrieving_oauth_token">Es konnte kein Anmeldungstoken abgerufen werden.</string>
<string name="error_compose_character_limit">Der Beitrag ist zu lang!</string> <string name="error_compose_character_limit">Der Beitrag ist zu lang!</string>
<string name="error_image_upload_size">Die Datei muss kleiner als 8MB sein.</string> <string name="error_image_upload_size">Die Datei muss kleiner als 8 MB sein.</string>
<string name="error_video_upload_size">Videodateien müssen kleiner als 40MB sein.</string> <string name="error_video_upload_size">Videodateien müssen kleiner als 40 MB sein.</string>
<string name="error_media_upload_type">Dieser Dateityp darf nicht hochgeladen werden.</string> <string name="error_media_upload_type">Dieser Dateityp darf nicht hochgeladen werden.</string>
<string name="error_media_upload_opening">Die Datei konnte nicht geöffnet werden.</string> <string name="error_media_upload_opening">Die Datei konnte nicht geöffnet werden.</string>
<string name="error_media_upload_permission">Leseberechtigung für die Mediendatei wird benötigt.</string> <string name="error_media_upload_permission">Leseberechtigung für die Mediendatei wird benötigt.</string>
@ -63,8 +63,8 @@
<string name="action_more">Mehr</string> <string name="action_more">Mehr</string>
<string name="action_compose">Schreiben</string> <string name="action_compose">Schreiben</string>
<string name="action_login">Anmelden mit Mastodon</string> <string name="action_login">Anmelden mit Mastodon</string>
<string name="action_logout">Ausloggen</string> <string name="action_logout">Abmelden</string>
<string name="action_logout_confirm">Bist du sicher, dass du dich aus dem Konto %1$s ausloggen möchtest?</string> <string name="action_logout_confirm">Bist du sicher, dass du dich aus dem Konto %1$s abmelden möchtest\?</string>
<string name="action_follow">Folgen</string> <string name="action_follow">Folgen</string>
<string name="action_unfollow">Entfolgen</string> <string name="action_unfollow">Entfolgen</string>
<string name="action_block">Blockieren</string> <string name="action_block">Blockieren</string>
@ -92,7 +92,7 @@
<string name="action_mute">Stummschalten</string> <string name="action_mute">Stummschalten</string>
<string name="action_unmute">Lautschalten</string> <string name="action_unmute">Lautschalten</string>
<string name="action_mention">Erwähnen</string> <string name="action_mention">Erwähnen</string>
<string name="action_hide_media">Verstecke Medien</string> <string name="action_hide_media">Medien verstecken</string>
<string name="action_open_drawer">Drawer öffnen</string> <string name="action_open_drawer">Drawer öffnen</string>
<string name="action_save">Speichern</string> <string name="action_save">Speichern</string>
<string name="action_edit_profile">Profil bearbeiten</string> <string name="action_edit_profile">Profil bearbeiten</string>
@ -138,7 +138,7 @@
<string name="label_avatar">Profilbild</string> <string name="label_avatar">Profilbild</string>
<string name="label_header">Titelbild</string> <string name="label_header">Titelbild</string>
<string name="link_whats_an_instance">Was ist eine Instanz?</string> <string name="link_whats_an_instance">Was ist eine Instanz?</string>
<string name="login_connection">Verbinden…</string> <string name="login_connection">Verbinden </string>
<string name="dialog_whats_an_instance">Die Adresse einer Instanz oder Domain kann <string name="dialog_whats_an_instance">Die Adresse einer Instanz oder Domain kann
hier eingegeben werden, wie z.B. mastodon.social, icosahedron.website, social.tchncs.de, und hier eingegeben werden, wie z.B. mastodon.social, icosahedron.website, social.tchncs.de, und
<a href="https://instances.social">mehr!</a> <a href="https://instances.social">mehr!</a>
@ -149,7 +149,7 @@
\n\nWeitere Informationen gibt es auf <a href="https://joinmastodon.org">joinmastodon.org</a>. \n\nWeitere Informationen gibt es auf <a href="https://joinmastodon.org">joinmastodon.org</a>.
</string> </string>
<string name="dialog_title_finishing_media_upload">Stelle Medienupload fertig</string> <string name="dialog_title_finishing_media_upload">Stelle Medienupload fertig</string>
<string name="dialog_message_uploading_media">Lade hoch…</string> <string name="dialog_message_uploading_media">Lade hoch </string>
<string name="dialog_download_image">Herunterladen</string> <string name="dialog_download_image">Herunterladen</string>
<string name="dialog_message_cancel_follow_request">Folgeanfrage zurückziehen?</string> <string name="dialog_message_cancel_follow_request">Folgeanfrage zurückziehen?</string>
<string name="dialog_unfollow_warning">Willst du diesem Profil wirklich nicht mehr folgen?</string> <string name="dialog_unfollow_warning">Willst du diesem Profil wirklich nicht mehr folgen?</string>
@ -220,18 +220,15 @@
<string name="notification_title_summary">%d neue Interaktionen</string> <string name="notification_title_summary">%d neue Interaktionen</string>
<string name="description_account_locked">Gesperrtes Profil</string> <string name="description_account_locked">Gesperrtes Profil</string>
<string name="about_title_activity">Über</string> <string name="about_title_activity">Über</string>
<string name="about_tusky_license">Tusky ist freie Open-Source-Software. <string name="about_tusky_license">Tusky ist freie eine quelloffene Software. Es ist lizenziert unter der GNU General Public License Version 3. Du kannst dir die Lizenz hier anschauen: https://www.gnu.org/licenses/gpl-3.0.de.html</string>
Es ist lizenziert unter der GNU General Public License Version 3.
Du kannst dir die Lizenz hier anschauen: https://www.gnu.org/licenses/gpl-3.0.de.html</string>
<!-- note to translators: <!-- note to translators:
* you should think of “free” as in “free speech,” not as in “free beer”. * you should think of “free” as in “free speech,” not as in “free beer”.
We sometimes call it “libre software,” borrowing the French or Spanish word for “free” as in freedom, We sometimes call it “libre software,” borrowing the French or Spanish word for “free” as in freedom,
to show we do not mean the software is gratis. Source: https://www.gnu.org/philosophy/free-sw.html to show we do not mean the software is gratis. Source: https://www.gnu.org/philosophy/free-sw.html
* the url can be changed to link to the localized version of the license. * the url can be changed to link to the localized version of the license.
--> -->
<string name="about_project_site"> Webseite des Projekts:\n <string name="about_project_site">Website des Projekts:
https://tusky.app \n https://tusky.app</string>
</string>
<string name="about_bug_feature_request_site"> Fehlermeldungen &amp; Verbesserungsvorschläge:\n <string name="about_bug_feature_request_site"> Fehlermeldungen &amp; Verbesserungsvorschläge:\n
https://github.com/tuskyapp/Tusky/issues https://github.com/tuskyapp/Tusky/issues
</string> </string>
@ -407,7 +404,7 @@
<string name="poll_duration_1_day">1 Tag</string> <string name="poll_duration_1_day">1 Tag</string>
<string name="poll_duration_3_days">3 Tage</string> <string name="poll_duration_3_days">3 Tage</string>
<string name="poll_duration_7_days">7 Tage</string> <string name="poll_duration_7_days">7 Tage</string>
<string name="edit_poll">Editieren</string> <string name="edit_poll">Bearbeiten</string>
<string name="about_tusky_version">Tusky %s</string> <string name="about_tusky_version">Tusky %s</string>
<string name="action_add_poll">Umfrage hinzufügen</string> <string name="action_add_poll">Umfrage hinzufügen</string>
<string name="pref_title_alway_open_spoiler">Beiträge mit Inhaltswarnungen immer ausklappen</string> <string name="pref_title_alway_open_spoiler">Beiträge mit Inhaltswarnungen immer ausklappen</string>
@ -424,13 +421,11 @@
<string name="action_access_scheduled_toot">Geplante Beiträge</string> <string name="action_access_scheduled_toot">Geplante Beiträge</string>
<string name="action_schedule_toot">Plane Beitrag</string> <string name="action_schedule_toot">Plane Beitrag</string>
<string name="action_reset_schedule">Zurücksetzen</string> <string name="action_reset_schedule">Zurücksetzen</string>
<string name="error_audio_upload_size">Audiodateien müssen kleiner als 40MB sein.</string> <string name="error_audio_upload_size">Audiodateien müssen kleiner als 40 MB sein.</string>
<string name="title_bookmarks">Lesezeichen</string> <string name="title_bookmarks">Lesezeichen</string>
<string name="action_bookmark">Lesezeichen</string> <string name="action_bookmark">Lesezeichen</string>
<string name="action_view_bookmarks">Lesezeichen</string> <string name="action_view_bookmarks">Lesezeichen</string>
<string name="gradient_for_media">Bunten Farbverlauf für versteckte Medien anzeigen</string> <string name="about_powered_by_tusky">Angetrieben durch Tusky</string>
<string name="about_powered_by_tusky">Powered by Tusky</string>
<string name="description_status_bookmarked">Als Lesezeichen gespeichert</string> <string name="description_status_bookmarked">Als Lesezeichen gespeichert</string>
<string name="select_list_title">Liste auswählen</string> <string name="select_list_title">Liste auswählen</string>
<string name="list">Liste</string> <string name="list">Liste</string>
@ -448,4 +443,25 @@
<string name="notification_follow_request_format">"%s möchte dir folgen"</string> <string name="notification_follow_request_format">"%s möchte dir folgen"</string>
<string name="hashtags">Hashtags</string> <string name="hashtags">Hashtags</string>
<string name="add_hashtag_title">Hashtag hinzufügen</string> <string name="add_hashtag_title">Hashtag hinzufügen</string>
<string name="pref_title_confirm_reblogs">Bestätigungsdialog vor dem Teilen eines Beitrags</string>
<string name="pref_title_show_cards_in_timelines">Linkvorschauen in Timelines anzeigen</string>
<string name="pref_title_enable_swipe_for_tabs">Wischgeste zum Wechseln zwischen Tabs</string>
<plurals name="poll_info_people">
<item quantity="one">%s Person</item>
<item quantity="other">%s Personen</item>
</plurals>
<string name="pref_title_gradient_for_media">Farbverlauf für versteckte Medien anzeigen</string>
<string name="abbreviated_seconds_ago">%dSek.</string>
<string name="abbreviated_hours_ago">%dSt.</string>
<string name="abbreviated_years_ago">%dJ.</string>
<string name="abbreviated_in_days">in %dT.</string>
<string name="abbreviated_in_years">in %dJ.</string>
<string name="abbreviated_minutes_ago">%dMin.</string>
<string name="abbreviated_days_ago">%dT.</string>
<string name="abbreviated_in_seconds">in %dSek.</string>
<string name="abbreviated_in_minutes">in %dMin.</string>
<string name="abbreviated_in_hours">in %dSt.</string>
<string name="pref_main_nav_position_option_bottom">Unten</string>
<string name="pref_main_nav_position_option_top">Oben</string>
<string name="action_unmute_domain">%s nicht mehr verstecken</string>
</resources> </resources>

View File

@ -18,4 +18,6 @@
<string name="title_favourites">Favourites</string> <string name="title_favourites">Favourites</string>
<string name="error_authorization_denied">Authorisation was denied.</string> <string name="error_authorization_denied">Authorisation was denied.</string>
<string name="error_authorization_unknown">An unidentified authorisation error occurred.</string> <string name="error_authorization_unknown">An unidentified authorisation error occurred.</string>
<string name="action_logout">Log out</string>
<string name="pref_title_gradient_for_media">Show colourful gradients for hidden media</string>
</resources> </resources>

View File

@ -363,7 +363,6 @@
<string name="pref_title_animate_gif_avatars">Moviĝi GIF profilbildojn</string> <string name="pref_title_animate_gif_avatars">Moviĝi GIF profilbildojn</string>
<string name="notification_poll_name">Enketoj</string> <string name="notification_poll_name">Enketoj</string>
<string name="notification_poll_description">Sciigoj pri enketoj kiuj finiĝis</string> <string name="notification_poll_description">Sciigoj pri enketoj kiuj finiĝis</string>
<string name="edit_hashtag_hint">Kradvortoj sen #</string> <string name="edit_hashtag_hint">Kradvortoj sen #</string>
<string name="notifications_clear">Viŝi</string> <string name="notifications_clear">Viŝi</string>
<string name="notifications_apply_filter">Filtri</string> <string name="notifications_apply_filter">Filtri</string>
@ -450,7 +449,6 @@
<string name="list">Listo</string> <string name="list">Listo</string>
<string name="post_lookup_error_format">Eraro dum elserĉo de la mesaĝo %s</string> <string name="post_lookup_error_format">Eraro dum elserĉo de la mesaĝo %s</string>
<string name="error_audio_upload_size">Aŭdia dosiero devas esti malpli ol 40MB.</string> <string name="error_audio_upload_size">Aŭdia dosiero devas esti malpli ol 40MB.</string>
<string name="gradient_for_media">Montri buntajn transirojn por kaŝitaj aŭdovidaĵoj</string>
<string name="no_saved_status">Vi ne havas iun ajn malneton.</string> <string name="no_saved_status">Vi ne havas iun ajn malneton.</string>
<string name="no_scheduled_status">Vi ne havas iun ajn planitan mesaĝon.</string> <string name="no_scheduled_status">Vi ne havas iun ajn planitan mesaĝon.</string>
<string name="notification_follow_request_name">Petoj de sekvado</string> <string name="notification_follow_request_name">Petoj de sekvado</string>

View File

@ -3,7 +3,7 @@
<string name="error_generic">Ha ocurrido un error.</string> <string name="error_generic">Ha ocurrido un error.</string>
<string name="error_network">¡Se ha producido un error de red! ¡Por favor, comprueba tu conexión e inténtalo de nuevo!</string> <string name="error_network">¡Se ha producido un error de red! ¡Por favor, comprueba tu conexión e inténtalo de nuevo!</string>
<string name="error_empty">Este campo no puede estar vacío.</string> <string name="error_empty">Este campo no puede estar vacío.</string>
<string name="error_invalid_domain">Nombre de dominio incorrecto</string> <string name="error_invalid_domain">Nombre de dominio no válido</string>
<string name="error_failed_app_registration">Fallo de autenticación con esta instancia.</string> <string name="error_failed_app_registration">Fallo de autenticación con esta instancia.</string>
<string name="error_no_web_browser_found">No se ha encontrado ningún navegador web.</string> <string name="error_no_web_browser_found">No se ha encontrado ningún navegador web.</string>
<string name="error_authorization_unknown">Ocurrió un error de autorización no identificado.</string> <string name="error_authorization_unknown">Ocurrió un error de autorización no identificado.</string>
@ -446,7 +446,6 @@
<string name="select_list_title">Seleccionar lista</string> <string name="select_list_title">Seleccionar lista</string>
<string name="list">Lista</string> <string name="list">Lista</string>
<string name="error_audio_upload_size">Los ficheros de audio deben ser menores de 40MB.</string> <string name="error_audio_upload_size">Los ficheros de audio deben ser menores de 40MB.</string>
<string name="gradient_for_media">Mostrar degradados coloridos para el contenido multimedia oculto</string>
<string name="no_saved_status">No tienes ningún borrador.</string> <string name="no_saved_status">No tienes ningún borrador.</string>
<string name="no_scheduled_status">No tienes ningún estado programado.</string> <string name="no_scheduled_status">No tienes ningún estado programado.</string>
<string name="warning_scheduling_interval">Mastodon tiene un intervalo de programación mínimo de 5 minutos.</string> <string name="warning_scheduling_interval">Mastodon tiene un intervalo de programación mínimo de 5 minutos.</string>
@ -467,4 +466,9 @@
<string name="hashtags">Etiquetas</string> <string name="hashtags">Etiquetas</string>
<string name="add_hashtag_title">Añadir etiqueta</string> <string name="add_hashtag_title">Añadir etiqueta</string>
<string name="notification_follow_request_format">%s solicita seguirte</string> <string name="notification_follow_request_format">%s solicita seguirte</string>
<string name="pref_main_nav_position_option_bottom">Fondo</string>
<string name="pref_main_nav_position_option_top">Arriba</string>
<string name="pref_main_nav_position">Posición de navegación principal</string>
<string name="pref_title_gradient_for_media">Mostrar degradados colorido para los medios ocultos</string>
<string name="action_unmute_domain">Dejar de silenciar %s</string>
</resources> </resources>

View File

@ -441,7 +441,6 @@
<string name="description_status_bookmarked">Laster-markatuta</string> <string name="description_status_bookmarked">Laster-markatuta</string>
<string name="poll_info_time_relative">%s geratzen da</string> <string name="poll_info_time_relative">%s geratzen da</string>
<string name="error_audio_upload_size">Audioak 40MB baino gutxiago izan behar ditu.</string> <string name="error_audio_upload_size">Audioak 40MB baino gutxiago izan behar ditu.</string>
<string name="gradient_for_media">Erakutsi degradatu koloretsuak ezkutuko multimedia-edukirako</string>
<string name="select_list_title">Aukeratu zerrenda</string> <string name="select_list_title">Aukeratu zerrenda</string>
<string name="list">Zerrenda</string> <string name="list">Zerrenda</string>
<string name="no_saved_status">Ez duzu zirriborrorik.</string> <string name="no_saved_status">Ez duzu zirriborrorik.</string>

View File

@ -437,7 +437,6 @@
<string name="title_bookmarks">نشانک‌ها</string> <string name="title_bookmarks">نشانک‌ها</string>
<string name="action_bookmark">نشانک</string> <string name="action_bookmark">نشانک</string>
<string name="action_view_bookmarks">نشانک‌ها</string> <string name="action_view_bookmarks">نشانک‌ها</string>
<string name="gradient_for_media">نمایش گرادیان رنگی برای رسانهٔ نهفته</string>
<string name="description_status_bookmarked">نشان‌شده</string> <string name="description_status_bookmarked">نشان‌شده</string>
<string name="select_list_title">گزینش فهرست</string> <string name="select_list_title">گزینش فهرست</string>
<string name="list">فهرست</string> <string name="list">فهرست</string>

View File

@ -12,12 +12,12 @@
<string name="error_compose_character_limit">Votre pouet est trop long !</string> <string name="error_compose_character_limit">Votre pouet est trop long !</string>
<string name="error_image_upload_size">Le fichier doit faire moins de 8 Mo.</string> <string name="error_image_upload_size">Le fichier doit faire moins de 8 Mo.</string>
<string name="error_video_upload_size">Les fichiers vidéos doivent faire moins de 40 Mo.</string> <string name="error_video_upload_size">Les fichiers vidéos doivent faire moins de 40 Mo.</string>
<string name="error_media_upload_type">Ce type de fichier nest pas accepté.</string> <string name="error_media_upload_type">Ce type de fichier ne peut pas être téléversé.</string>
<string name="error_media_upload_opening">Le fichier ne peut pas être ouvert.</string> <string name="error_media_upload_opening">Le fichier ne peut pas être ouvert.</string>
<string name="error_media_upload_permission">Permission requise pour lire le média.</string> <string name="error_media_upload_permission">Permission requise pour lire le média.</string>
<string name="error_media_download_permission">Permission requise pour enregistrer le média.</string> <string name="error_media_download_permission">Permission requise pour enregistrer le média.</string>
<string name="error_media_upload_image_or_video">Un même pouet ne peut contenir à la fois une vidéo et une image.</string> <string name="error_media_upload_image_or_video">Un même pouet ne peut contenir à la fois une vidéo et une image.</string>
<string name="error_media_upload_sending">Échec denvoi du média.</string> <string name="error_media_upload_sending">Échec du téléversement du média.</string>
<string name="error_sender_account_gone">Erreur lors de lenvoi du pouet.</string> <string name="error_sender_account_gone">Erreur lors de lenvoi du pouet.</string>
<string name="title_home">Accueil</string> <string name="title_home">Accueil</string>
<string name="title_notifications">Notifications</string> <string name="title_notifications">Notifications</string>
@ -152,7 +152,7 @@
\n\nPour plus dinformations, consultez <a href="https://joinmastodon.org">joinmastodon.org</a>. \n\nPour plus dinformations, consultez <a href="https://joinmastodon.org">joinmastodon.org</a>.
</string> </string>
<string name="dialog_title_finishing_media_upload">Mise en ligne des médias</string> <string name="dialog_title_finishing_media_upload">Mise en ligne des médias</string>
<string name="dialog_message_uploading_media">Envoi en cours…</string> <string name="dialog_message_uploading_media">Téléversement en cours…</string>
<string name="dialog_download_image">Télécharger</string> <string name="dialog_download_image">Télécharger</string>
<string name="dialog_message_cancel_follow_request">Révoquer la demande dabonnement ?</string> <string name="dialog_message_cancel_follow_request">Révoquer la demande dabonnement ?</string>
<string name="dialog_unfollow_warning">Ne plus suivre ce compte ?</string> <string name="dialog_unfollow_warning">Ne plus suivre ce compte ?</string>
@ -246,16 +246,16 @@
<string name="status_media_video">Vidéo</string> <string name="status_media_video">Vidéo</string>
<string name="state_follow_requested">Demande de suivi effectuée</string> <string name="state_follow_requested">Demande de suivi effectuée</string>
<!--These are for timestamps on statuses. For example: "16s" or "2d"--> <!--These are for timestamps on statuses. For example: "16s" or "2d"-->
<string name="abbreviated_in_years">en %da</string> <string name="abbreviated_in_years">en %da</string>
<string name="abbreviated_in_days">en %dj</string> <string name="abbreviated_in_days">en %dj</string>
<string name="abbreviated_in_hours">en %dh</string> <string name="abbreviated_in_hours">en %dh</string>
<string name="abbreviated_in_minutes">en %dm</string> <string name="abbreviated_in_minutes">en %dmin</string>
<string name="abbreviated_in_seconds">en %ds</string> <string name="abbreviated_in_seconds">en %ds</string>
<string name="abbreviated_years_ago">%da</string> <string name="abbreviated_years_ago">%da</string>
<string name="abbreviated_days_ago">%dj</string> <string name="abbreviated_days_ago">%dj</string>
<string name="abbreviated_hours_ago">%dh</string> <string name="abbreviated_hours_ago">%dh</string>
<string name="abbreviated_minutes_ago">%dm</string> <string name="abbreviated_minutes_ago">%dmin</string>
<string name="abbreviated_seconds_ago">%ds</string> <string name="abbreviated_seconds_ago">%ds</string>
<string name="follows_you">Vous suit</string> <string name="follows_you">Vous suit</string>
<string name="pref_title_alway_show_sensitive_media">Toujours afficher le contenu sensible</string> <string name="pref_title_alway_show_sensitive_media">Toujours afficher le contenu sensible</string>
<string name="title_media">Média</string> <string name="title_media">Média</string>
@ -404,7 +404,7 @@
<string name="compose_preview_image_description">Actions pour limage %s</string> <string name="compose_preview_image_description">Actions pour limage %s</string>
<string name="poll_info_format"> <!-- 15 votes • 1 heure restante --> %1$s • %2$s</string> <string name="poll_info_format"> <!-- 15 votes • 1 heure restante --> %1$s • %2$s</string>
<string name="poll_ended_voted">Un sondage auquel vous avez participé vient de se terminer</string> <string name="poll_ended_voted">Un sondage auquel vous avez participé vient de se terminer</string>
<string name="description_poll">Sondage avec des choix : %1$s, %2$s, %3$s, %4$s; %5$s</string> <string name="description_poll">Sondage avec des choix: %1$s, %2$s, %3$s, %4$s; %5$s</string>
<string name="title_domain_mutes">Domaines cachés</string> <string name="title_domain_mutes">Domaines cachés</string>
<string name="action_view_domain_mutes">Domaines cachés</string> <string name="action_view_domain_mutes">Domaines cachés</string>
<string name="action_mute_domain">Masquer %s</string> <string name="action_mute_domain">Masquer %s</string>
@ -440,7 +440,7 @@
<string name="add_poll_choice">Ajouter un choix</string> <string name="add_poll_choice">Ajouter un choix</string>
<string name="poll_allow_multiple_choices">Choix multiples</string> <string name="poll_allow_multiple_choices">Choix multiples</string>
<string name="poll_new_choice_hint">Choix %d</string> <string name="poll_new_choice_hint">Choix %d</string>
<string name="edit_poll">Éditer</string> <string name="edit_poll">Modifier</string>
<string name="title_scheduled_toot">Pouets programmés</string> <string name="title_scheduled_toot">Pouets programmés</string>
<string name="action_edit">Éditer</string> <string name="action_edit">Éditer</string>
<string name="action_access_scheduled_toot">Pouets planifiés</string> <string name="action_access_scheduled_toot">Pouets planifiés</string>
@ -455,7 +455,6 @@
<string name="select_list_title">Sélectionner la liste</string> <string name="select_list_title">Sélectionner la liste</string>
<string name="list">Liste</string> <string name="list">Liste</string>
<string name="error_audio_upload_size">Les fichiers audio doivent être inférieurs à 40 Mo.</string> <string name="error_audio_upload_size">Les fichiers audio doivent être inférieurs à 40 Mo.</string>
<string name="gradient_for_media">Afficher des dégradés en couleur pour les médias cachés</string>
<string name="no_saved_status">Vous navez aucun brouillon.</string> <string name="no_saved_status">Vous navez aucun brouillon.</string>
<string name="no_scheduled_status">Vous navez aucun pouet planifié.</string> <string name="no_scheduled_status">Vous navez aucun pouet planifié.</string>
<string name="warning_scheduling_interval">Lintervalle minimum de planification sur Mastodon est de 5 minutes.</string> <string name="warning_scheduling_interval">Lintervalle minimum de planification sur Mastodon est de 5 minutes.</string>
@ -476,4 +475,9 @@
<string name="pref_title_enable_swipe_for_tabs">Activer les gestes de glissement pour passer dun onglet à lautre</string> <string name="pref_title_enable_swipe_for_tabs">Activer les gestes de glissement pour passer dun onglet à lautre</string>
<string name="hashtags">Hashtags</string> <string name="hashtags">Hashtags</string>
<string name="add_hashtag_title">Ajouter hashtag</string> <string name="add_hashtag_title">Ajouter hashtag</string>
<string name="pref_title_gradient_for_media">Afficher des dégradés colorés pour les médias cachés</string>
<string name="pref_main_nav_position_option_bottom">Bas</string>
<string name="pref_main_nav_position_option_top">Haut</string>
<string name="pref_main_nav_position">Position de navigation principale</string>
<string name="action_unmute_domain">Ne plus masquer %s</string>
</resources> </resources>

View File

@ -367,7 +367,6 @@
<string name="description_visiblity_direct">Közvetlen</string> <string name="description_visiblity_direct">Közvetlen</string>
<string name="description_poll">Szavazás válaszokkal: %1$s, %2$s, %3$s, %4$s; %5$s</string> <string name="description_poll">Szavazás válaszokkal: %1$s, %2$s, %3$s, %4$s; %5$s</string>
<string name="hint_list_name">Lista neve</string> <string name="hint_list_name">Lista neve</string>
<string name="edit_hashtag_hint">Hashtag # nélkül</string> <string name="edit_hashtag_hint">Hashtag # nélkül</string>
<string name="notifications_clear">Törlés</string> <string name="notifications_clear">Törlés</string>
<string name="notifications_apply_filter">Szűrés</string> <string name="notifications_apply_filter">Szűrés</string>
@ -378,8 +377,8 @@
<string name="compose_preview_image_description">Műveletek a %s képpel</string> <string name="compose_preview_image_description">Műveletek a %s képpel</string>
<string name="poll_info_format"> <!-- 15 szavazat • 1 óra maradt --> %1$s • %2$s</string> <string name="poll_info_format"> <!-- 15 szavazat • 1 óra maradt --> %1$s • %2$s</string>
<plurals name="poll_info_votes"> <plurals name="poll_info_votes">
<item quantity="one"></item> <item quantity="one"/>
<item quantity="other"></item> <item quantity="other"/>
</plurals> </plurals>
<string name="poll_info_time_relative">%s maradt</string> <string name="poll_info_time_relative">%s maradt</string>
<string name="poll_info_time_absolute">vége %s</string> <string name="poll_info_time_absolute">vége %s</string>
@ -444,7 +443,6 @@
<string name="select_list_title">Lista kiválasztása</string> <string name="select_list_title">Lista kiválasztása</string>
<string name="list">Lista</string> <string name="list">Lista</string>
<string name="error_audio_upload_size">A hangfájlok mérete 40MB-nál kisebb kell legyen.</string> <string name="error_audio_upload_size">A hangfájlok mérete 40MB-nál kisebb kell legyen.</string>
<string name="gradient_for_media">Színes átmenet mutatása rejtett médiánál</string>
<string name="no_saved_status">Nincs egy vázlatod sem.</string> <string name="no_saved_status">Nincs egy vázlatod sem.</string>
<string name="no_scheduled_status">Nincs egy ütemezett tülköd sem.</string> <string name="no_scheduled_status">Nincs egy ütemezett tülköd sem.</string>
<string name="warning_scheduling_interval">A Mastodonban a legrövidebb ütemezhető időintervallum 5 perc.</string> <string name="warning_scheduling_interval">A Mastodonban a legrövidebb ütemezhető időintervallum 5 perc.</string>

View File

@ -206,7 +206,6 @@
<string name="pref_title_language">Tungumál</string> <string name="pref_title_language">Tungumál</string>
<string name="pref_title_bot_overlay">Birta merki á róbótum</string> <string name="pref_title_bot_overlay">Birta merki á róbótum</string>
<string name="pref_title_animate_gif_avatars">Sýna hreyfingar GIF-auðkennismynda</string> <string name="pref_title_animate_gif_avatars">Sýna hreyfingar GIF-auðkennismynda</string>
<string name="gradient_for_media">Sýna skæra litstigla í stað falins myndefnis</string>
<string name="pref_title_status_filter">Síun tímalínu</string> <string name="pref_title_status_filter">Síun tímalínu</string>
<string name="pref_title_status_tabs">Flipar</string> <string name="pref_title_status_tabs">Flipar</string>
<string name="pref_title_show_boosts">Sýna endurbirtingar</string> <string name="pref_title_show_boosts">Sýna endurbirtingar</string>
@ -345,7 +344,6 @@
<string name="label_remote_account">Ekki er víst að upplýsingarnar hér að neðan endurspegli notandasniðið að fullu. Opnaðu fullt notandasnið í vafra.</string> <string name="label_remote_account">Ekki er víst að upplýsingarnar hér að neðan endurspegli notandasniðið að fullu. Opnaðu fullt notandasnið í vafra.</string>
<string name="unpin_action">Losa</string> <string name="unpin_action">Losa</string>
<string name="pin_action">Festa</string> <string name="pin_action">Festa</string>
<string name="title_reblogged_by">Endurbirt af</string> <string name="title_reblogged_by">Endurbirt af</string>
<string name="title_favourited_by">Sett í eftirlæti af</string> <string name="title_favourited_by">Sett í eftirlæti af</string>
<string name="conversation_1_recipients">%1$s</string> <string name="conversation_1_recipients">%1$s</string>
@ -364,7 +362,6 @@
<string name="description_visiblity_direct">Beint</string> <string name="description_visiblity_direct">Beint</string>
<string name="description_poll">Könnun með valkostunum: %1$s, %2$s, %3$s, %4$s; %5$s</string> <string name="description_poll">Könnun með valkostunum: %1$s, %2$s, %3$s, %4$s; %5$s</string>
<string name="hint_list_name">Heiti á lista</string> <string name="hint_list_name">Heiti á lista</string>
<string name="edit_hashtag_hint">Myllumerki án #</string> <string name="edit_hashtag_hint">Myllumerki án #</string>
<string name="select_list_title">Veldu lista</string> <string name="select_list_title">Veldu lista</string>
<string name="list">Listi</string> <string name="list">Listi</string>

View File

@ -10,8 +10,8 @@
<string name="error_authorization_denied">L\'autorizzazione è stata negata.</string> <string name="error_authorization_denied">L\'autorizzazione è stata negata.</string>
<string name="error_retrieving_oauth_token">Errore nell\'acquisizione del token di accesso.</string> <string name="error_retrieving_oauth_token">Errore nell\'acquisizione del token di accesso.</string>
<string name="error_compose_character_limit">Lo stato è troppo lungo!</string> <string name="error_compose_character_limit">Lo stato è troppo lungo!</string>
<string name="error_image_upload_size">La dimensione dei file immagine deve essere inferiore a 8MB.</string> <string name="error_image_upload_size">La dimensione dei file immagine deve essere inferiore a 8 MB.</string>
<string name="error_video_upload_size">La dimensione dei file video deve essere inferiore a 40MB.</string> <string name="error_video_upload_size">La dimensione dei file video deve essere inferiore a 40 MB.</string>
<string name="error_media_upload_type">Questo tipo di file non può essere caricato.</string> <string name="error_media_upload_type">Questo tipo di file non può essere caricato.</string>
<string name="error_media_upload_opening">Questo file non può essere aperto.</string> <string name="error_media_upload_opening">Questo file non può essere aperto.</string>
<string name="error_media_upload_permission">Il permesso di lettura della scheda sd è richiesto.</string> <string name="error_media_upload_permission">Il permesso di lettura della scheda sd è richiesto.</string>
@ -240,16 +240,16 @@
<string name="status_media_video">Video</string> <string name="status_media_video">Video</string>
<string name="state_follow_requested">In attesa di approvazione</string> <string name="state_follow_requested">In attesa di approvazione</string>
<!--These are for timestamps on statuses. For example: "16s" or "2d"--> <!--These are for timestamps on statuses. For example: "16s" or "2d"-->
<string name="abbreviated_in_years">in %da</string> <string name="abbreviated_in_years">in %da</string>
<string name="abbreviated_in_days">in %dg</string> <string name="abbreviated_in_days">in %dg</string>
<string name="abbreviated_in_hours">in %do</string> <string name="abbreviated_in_hours">in %do</string>
<string name="abbreviated_in_minutes">in %dm</string> <string name="abbreviated_in_minutes">in %dmin</string>
<string name="abbreviated_in_seconds">in %ds</string> <string name="abbreviated_in_seconds">in %ds</string>
<string name="abbreviated_years_ago">%da</string> <string name="abbreviated_years_ago">%da</string>
<string name="abbreviated_days_ago">%dg</string> <string name="abbreviated_days_ago">%dg</string>
<string name="abbreviated_hours_ago">%do</string> <string name="abbreviated_hours_ago">%do</string>
<string name="abbreviated_minutes_ago">%dm</string> <string name="abbreviated_minutes_ago">%dmin</string>
<string name="abbreviated_seconds_ago">%ds</string> <string name="abbreviated_seconds_ago">%ds</string>
<string name="follows_you">Seguono te</string> <string name="follows_you">Seguono te</string>
<string name="pref_title_alway_show_sensitive_media">Mostra sempre tutto il contenuto sensibile</string> <string name="pref_title_alway_show_sensitive_media">Mostra sempre tutto il contenuto sensibile</string>
<string name="title_media">Media</string> <string name="title_media">Media</string>
@ -358,11 +358,8 @@
<string name="hint_list_name">Nome della lista</string> <string name="hint_list_name">Nome della lista</string>
<string name="download_media">Scarica media</string> <string name="download_media">Scarica media</string>
<string name="downloading_media">Scaricando media</string> <string name="downloading_media">Scaricando media</string>
<string name="compose_shortcut_long_label">Componi Toot</string> <string name="compose_shortcut_long_label">Componi Toot</string>
<string name="edit_hashtag_hint">Hashtag senza #</string> <string name="edit_hashtag_hint">Hashtag senza #</string>
<string name="compose_shortcut_short_label">Componi</string> <string name="compose_shortcut_short_label">Componi</string>
<string name="notifications_clear">Pulisci</string> <string name="notifications_clear">Pulisci</string>
<string name="notifications_apply_filter">Filtra</string> <string name="notifications_apply_filter">Filtra</string>
@ -451,6 +448,20 @@
<string name="title_scheduled_toot">Toot programmati</string> <string name="title_scheduled_toot">Toot programmati</string>
<string name="action_access_scheduled_toot">Toot programmati</string> <string name="action_access_scheduled_toot">Toot programmati</string>
<string name="action_schedule_toot">Programma un toot</string> <string name="action_schedule_toot">Programma un toot</string>
<string name="action_reset_schedule">RIpristina</string> <string name="action_reset_schedule">Ripristina</string>
<string name="poll_info_format"> <!-- 15 votes • 1 hour left --> %1$s • %2$s</string> <string name="poll_info_format"> <!-- 15 votes • 1 hour left --> %1$s • %2$s</string>
<string name="no_saved_status">Non hai bozze.</string>
<plurals name="poll_info_people">
<item quantity="one">%s persona</item>
<item quantity="other">%s persone</item>
</plurals>
<string name="hashtags">Hashtag</string>
<string name="add_hashtag_title">Aggiungi hashtag</string>
<string name="dialog_mute_warning">Silenziare @%s\?</string>
<string name="dialog_block_warning">Bloccare @%s\?</string>
<string name="action_unmute_domain">Smetti di silenziare %s</string>
<string name="action_unmute_conversation">Smetti di silenziare conversazione</string>
<string name="action_mute_conversation">Silenzia conversazione</string>
<string name="notification_follow_request_format">%s ha chiesto di seguirti</string>
<string name="error_audio_upload_size">La dimensione dei file audio deve essere inferiore a 40 MB.</string>
</resources> </resources>

View File

@ -22,12 +22,12 @@
<string name="status_content_warning_show_more">Zeṛ ugar</string> <string name="status_content_warning_show_more">Zeṛ ugar</string>
<string name="status_content_warning_show_less">Zeṛ kra kan</string> <string name="status_content_warning_show_less">Zeṛ kra kan</string>
<string name="message_empty">Ulac walu da.</string> <string name="message_empty">Ulac walu da.</string>
<string name="notification_follow_format">%s yeṭafar-ik-id</string> <string name="notification_follow_format">%s yeṭafar-ik·ikem-id</string>
<string name="action_reply">Err</string> <string name="action_reply">Err</string>
<string name="action_more">Ugar</string> <string name="action_more">Ugar</string>
<string name="action_compose">Azen</string> <string name="action_compose">Azen</string>
<string name="action_follow">Ḍfeṛ</string> <string name="action_follow">Ḍfeṛ</string>
<string name="action_unfollow">Ur ṭafaṛ ara</string> <string name="action_unfollow">Ur ṭṭafar ara</string>
<string name="action_edit">Ẓreg</string> <string name="action_edit">Ẓreg</string>
<string name="action_delete">Kkes</string> <string name="action_delete">Kkes</string>
<string name="action_delete_and_redraft">Kkes tɛiwdeḍ tira</string> <string name="action_delete_and_redraft">Kkes tɛiwdeḍ tira</string>
@ -87,7 +87,7 @@
<string name="about_tusky_account">Amaɣnu n Tusky</string> <string name="about_tusky_account">Amaɣnu n Tusky</string>
<string name="status_media_images">Tugniwin</string> <string name="status_media_images">Tugniwin</string>
<string name="status_media_video">Tibidyutin</string> <string name="status_media_video">Tibidyutin</string>
<string name="follows_you">Yeṭafaṛ-ik-id</string> <string name="follows_you">Yeṭṭafar-ik·ikem-id</string>
<string name="filter_dialog_remove_button">Kkes</string> <string name="filter_dialog_remove_button">Kkes</string>
<string name="filter_dialog_update_button">Lqem</string> <string name="filter_dialog_update_button">Lqem</string>
<string name="add_account_name">Rnu amiḍan</string> <string name="add_account_name">Rnu amiḍan</string>
@ -136,8 +136,8 @@
<string name="notifications_apply_filter">Sizdeg</string> <string name="notifications_apply_filter">Sizdeg</string>
<string name="title_accounts">Imiḍanen</string> <string name="title_accounts">Imiḍanen</string>
<string name="add_poll_choice">Rnu yiwen wefran</string> <string name="add_poll_choice">Rnu yiwen wefran</string>
<string name="report_username_format">Ccetki ɣef @%s</string> <string name="report_username_format">Cetki ɣef @%s</string>
<string name="action_report">Ccetki fell-as</string> <string name="action_report">Cetki fell-as</string>
<string name="action_reject">Ggami</string> <string name="action_reject">Ggami</string>
<string name="download_image">Yessidired %1$s</string> <string name="download_image">Yessidired %1$s</string>
<string name="send_media_to">Bḍu tugna s…</string> <string name="send_media_to">Bḍu tugna s…</string>
@ -145,7 +145,7 @@
<string name="dialog_message_uploading_media">Issalay…</string> <string name="dialog_message_uploading_media">Issalay…</string>
<string name="pref_title_notification_filter_poll">fukken kran n wadɣaren</string> <string name="pref_title_notification_filter_poll">fukken kran n wadɣaren</string>
<string name="pref_title_timeline_filters">Imzizdigen</string> <string name="pref_title_timeline_filters">Imzizdigen</string>
<string name="app_theme_auto">Akken yella yiṭij</string> <string name="app_theme_auto">Awurman akken yella yiṭij</string>
<string name="pref_title_browser_settings">Iminig</string> <string name="pref_title_browser_settings">Iminig</string>
<string name="pref_title_show_replies">Sken-d tiririyin</string> <string name="pref_title_show_replies">Sken-d tiririyin</string>
<string name="pref_title_http_proxy_settings">Apṛuksi HTTP</string> <string name="pref_title_http_proxy_settings">Apṛuksi HTTP</string>
@ -194,7 +194,7 @@
</plurals> </plurals>
<string name="button_continue">Kemmel</string> <string name="button_continue">Kemmel</string>
<string name="button_back">Uɣal</string> <string name="button_back">Uɣal</string>
<string name="failed_report">Tella-d tuccḍa deg ccetki</string> <string name="failed_report">Tella-d tuccḍa deg cetki</string>
<string name="failed_search">Tucḍa n unadi</string> <string name="failed_search">Tucḍa n unadi</string>
<string name="create_poll_title">Assenqed</string> <string name="create_poll_title">Assenqed</string>
<string name="poll_duration_5_min">5 n tisdidin</string> <string name="poll_duration_5_min">5 n tisdidin</string>
@ -205,7 +205,7 @@
<string name="poll_duration_3_days">3 n wussan</string> <string name="poll_duration_3_days">3 n wussan</string>
<string name="poll_duration_7_days">7 n wussan</string> <string name="poll_duration_7_days">7 n wussan</string>
<string name="poll_new_choice_hint">Tafrant %d</string> <string name="poll_new_choice_hint">Tafrant %d</string>
<string name="title_follows">Ig ṭafaṛ</string> <string name="title_follows">Ig ṭṭafar</string>
<string name="title_followers">Imeḍfaṛen</string> <string name="title_followers">Imeḍfaṛen</string>
<string name="hint_search_people_list">Nadi ɣef medden ar at ḍfereḍ</string> <string name="hint_search_people_list">Nadi ɣef medden ar at ḍfereḍ</string>
<string name="description_visiblity_private">Imeḍfaṛen</string> <string name="description_visiblity_private">Imeḍfaṛen</string>
@ -213,7 +213,7 @@
<string name="action_mentions">Tibdarin</string> <string name="action_mentions">Tibdarin</string>
<string name="title_mentions_dialog">Tibdarin</string> <string name="title_mentions_dialog">Tibdarin</string>
<string name="title_links_dialog">Iseɣwan</string> <string name="title_links_dialog">Iseɣwan</string>
<string name="confirmation_reported">Yettwaceyyaɛ!</string> <string name="confirmation_reported">Yettwaceyyeɛ!</string>
<string name="status_sent">Yettwaceyyaɛ!</string> <string name="status_sent">Yettwaceyyaɛ!</string>
<string name="search_no_results">Ula d yiwen n ugmuḍ</string> <string name="search_no_results">Ula d yiwen n ugmuḍ</string>
<string name="post_privacy_followers_only">I yimeḍfaṛen kan</string> <string name="post_privacy_followers_only">I yimeḍfaṛen kan</string>
@ -267,4 +267,6 @@
<item quantity="one">%s n wemdan</item> <item quantity="one">%s n wemdan</item>
<item quantity="other">%s n yemdanen</item> <item quantity="other">%s n yemdanen</item>
</plurals> </plurals>
<string name="report_remote_instance">Bren-it ɣer %s</string>
<string name="pref_title_app_theme">Asentel n wesnas</string>
</resources> </resources>

View File

@ -80,7 +80,7 @@
<string name="action_retry">다시 시도</string> <string name="action_retry">다시 시도</string>
<string name="action_close">닫기</string> <string name="action_close">닫기</string>
<string name="action_view_profile">프로필</string> <string name="action_view_profile">프로필</string>
<string name="action_view_preferences">환경설정</string> <string name="action_view_preferences">설정</string>
<string name="action_view_account_preferences">계정 설정</string> <string name="action_view_account_preferences">계정 설정</string>
<string name="action_view_favourites">즐겨찾기</string> <string name="action_view_favourites">즐겨찾기</string>
<string name="action_view_mutes">뮤트한 유저</string> <string name="action_view_mutes">뮤트한 유저</string>

View File

@ -440,7 +440,6 @@
<string name="action_access_scheduled_toot">Ingeplande toots</string> <string name="action_access_scheduled_toot">Ingeplande toots</string>
<string name="action_schedule_toot">Ingeplande toot</string> <string name="action_schedule_toot">Ingeplande toot</string>
<string name="action_reset_schedule">Herstellen</string> <string name="action_reset_schedule">Herstellen</string>
<string name="gradient_for_media">Wazige kleurovergangen voor verborgen media tonen</string>
<string name="about_powered_by_tusky">Powered by Tusky</string> <string name="about_powered_by_tusky">Powered by Tusky</string>
<string name="pref_title_alway_open_spoiler">Altijd toots met tekstwaarschuwingen uitklappen</string> <string name="pref_title_alway_open_spoiler">Altijd toots met tekstwaarschuwingen uitklappen</string>
<string name="description_status_bookmarked">Als bladwijzer toegevoegd</string> <string name="description_status_bookmarked">Als bladwijzer toegevoegd</string>

View File

@ -433,7 +433,6 @@
<string name="description_status_bookmarked">Bokmerke lagt til</string> <string name="description_status_bookmarked">Bokmerke lagt til</string>
<string name="select_list_title">Velg liste</string> <string name="select_list_title">Velg liste</string>
<string name="list">Liste</string> <string name="list">Liste</string>
<string name="gradient_for_media">Vis fargegradienter for skjult media</string>
<string name="no_scheduled_status">Du har ingen planlagte statuser.</string> <string name="no_scheduled_status">Du har ingen planlagte statuser.</string>
<string name="no_saved_status">Du har ikke lagret noen kladder.</string> <string name="no_saved_status">Du har ikke lagret noen kladder.</string>
<string name="error_audio_upload_size">Lydfiler må være mindre enn 40MB.</string> <string name="error_audio_upload_size">Lydfiler må være mindre enn 40MB.</string>
@ -454,4 +453,10 @@
<string name="action_mute_conversation">Demp samtale</string> <string name="action_mute_conversation">Demp samtale</string>
<string name="hashtags">Stikkord</string> <string name="hashtags">Stikkord</string>
<string name="add_hashtag_title">Legg til stikkord</string> <string name="add_hashtag_title">Legg til stikkord</string>
<string name="notification_follow_request_format">%s ønsker å følge deg</string>
<string name="pref_title_gradient_for_media">Vis fargerike gradienter for skjult media</string>
<string name="pref_main_nav_position_option_bottom">Bunn</string>
<string name="pref_main_nav_position_option_top">Topp</string>
<string name="pref_main_nav_position">Plassering av hovednavigasjon</string>
<string name="action_unmute_domain">Fjern demping av %s</string>
</resources> </resources>

View File

@ -445,7 +445,6 @@
<string name="select_list_title">Seleccionar la list</string> <string name="select_list_title">Seleccionar la list</string>
<string name="list">Lista</string> <string name="list">Lista</string>
<string name="error_audio_upload_size">Los fichièrs àudio devon èsser inferiors a 40 Mo.</string> <string name="error_audio_upload_size">Los fichièrs àudio devon èsser inferiors a 40 Mo.</string>
<string name="gradient_for_media">Mostrar los degradats de colors pels contenguts resconduts</string>
<string name="no_saved_status">Avètz pas cap de borrolhon.</string> <string name="no_saved_status">Avètz pas cap de borrolhon.</string>
<string name="no_scheduled_status">Avètz pas cap de tut planificat.</string> <string name="no_scheduled_status">Avètz pas cap de tut planificat.</string>
<string name="warning_scheduling_interval">Linterval minimum de planificacion sus Mastodon e de 5 minutas.</string> <string name="warning_scheduling_interval">Linterval minimum de planificacion sus Mastodon e de 5 minutas.</string>

View File

@ -452,7 +452,6 @@
<string name="select_list_title">Wybierz listę</string> <string name="select_list_title">Wybierz listę</string>
<string name="list">Lista</string> <string name="list">Lista</string>
<string name="error_audio_upload_size">Pliki audio muszą być mniejsze niż 40MB.</string> <string name="error_audio_upload_size">Pliki audio muszą być mniejsze niż 40MB.</string>
<string name="gradient_for_media">Pokaż kolorowe gradienty dla ukrytych mediów</string>
<string name="no_saved_status">Nie masz żadnych szkiców.</string> <string name="no_saved_status">Nie masz żadnych szkiców.</string>
<string name="no_scheduled_status">Nie masz żadnych zaplanowanych wpisów.</string> <string name="no_scheduled_status">Nie masz żadnych zaplanowanych wpisów.</string>
<string name="warning_scheduling_interval">Mastodon umożliwia wysłanie minimalnie 5 minut od zaplanowania</string> <string name="warning_scheduling_interval">Mastodon umożliwia wysłanie minimalnie 5 minut od zaplanowania</string>
@ -463,4 +462,10 @@
<string name="dialog_block_warning">Zablokować @%s\?</string> <string name="dialog_block_warning">Zablokować @%s\?</string>
<string name="action_unmute_conversation">Cofnij wyciszenie rozmowy</string> <string name="action_unmute_conversation">Cofnij wyciszenie rozmowy</string>
<string name="action_mute_conversation">Wycisz rozmowę</string> <string name="action_mute_conversation">Wycisz rozmowę</string>
<plurals name="poll_info_people">
<item quantity="one">%s osoba</item>
<item quantity="few">%s osoby</item>
<item quantity="many">%s osób</item>
<item quantity="other">%s osób</item>
</plurals>
</resources> </resources>

View File

@ -3,11 +3,11 @@
<string name="error_generic">Ocorreu um erro.</string> <string name="error_generic">Ocorreu um erro.</string>
<string name="error_empty">Não pode estar vazio.</string> <string name="error_empty">Não pode estar vazio.</string>
<string name="error_invalid_domain">Instância inválida</string> <string name="error_invalid_domain">Instância inválida</string>
<string name="error_failed_app_registration">Falha ao autenticar com esta instância.</string> <string name="error_failed_app_registration">Erro ao autenticar com esta instância.</string>
<string name="error_no_web_browser_found">Navegador não foi encontrado.</string> <string name="error_no_web_browser_found">Nenhum navegador foi encontrado.</string>
<string name="error_authorization_unknown">Ocorreu um erro não-identificado de autorização.</string> <string name="error_authorization_unknown">Ocorreu um erro não identificado de autorização.</string>
<string name="error_authorization_denied">Autorização negada.</string> <string name="error_authorization_denied">Autorização negada.</string>
<string name="error_retrieving_oauth_token">Falha ao adquirir token de entrada.</string> <string name="error_retrieving_oauth_token">Erro ao adquirir token de entrada.</string>
<string name="error_compose_character_limit">O toot é muito longo!</string> <string name="error_compose_character_limit">O toot é muito longo!</string>
<string name="error_image_upload_size">O arquivo deve ser menor que 8MB.</string> <string name="error_image_upload_size">O arquivo deve ser menor que 8MB.</string>
<string name="error_video_upload_size">Vídeos devem ser menores que 40MB.</string> <string name="error_video_upload_size">Vídeos devem ser menores que 40MB.</string>
@ -16,7 +16,7 @@
<string name="error_media_upload_permission">Permissão para ler mídia é necessária.</string> <string name="error_media_upload_permission">Permissão para ler mídia é necessária.</string>
<string name="error_media_download_permission">Permissão para armazenar mídia é necessária.</string> <string name="error_media_download_permission">Permissão para armazenar mídia é necessária.</string>
<string name="error_media_upload_image_or_video">Imagens e vídeos não podem ser anexados no mesmo toot.</string> <string name="error_media_upload_image_or_video">Imagens e vídeos não podem ser anexados no mesmo toot.</string>
<string name="error_media_upload_sending">Falha no envio.</string> <string name="error_media_upload_sending">Erro ao enviar.</string>
<string name="error_sender_account_gone">Erro ao enviar toot.</string> <string name="error_sender_account_gone">Erro ao enviar toot.</string>
<string name="title_home">Página inicial</string> <string name="title_home">Página inicial</string>
<string name="title_notifications">Editar notificações</string> <string name="title_notifications">Editar notificações</string>
@ -33,24 +33,24 @@
<string name="title_mutes">Usuários silenciados</string> <string name="title_mutes">Usuários silenciados</string>
<string name="title_blocks">Usuários bloqueados</string> <string name="title_blocks">Usuários bloqueados</string>
<string name="title_follow_requests">Seguidores pendentes</string> <string name="title_follow_requests">Seguidores pendentes</string>
<string name="title_edit_profile">Editar seu perfil</string> <string name="title_edit_profile">Editar perfil</string>
<string name="title_saved_toot">Rascunhos</string> <string name="title_saved_toot">Rascunhos</string>
<string name="title_licenses">Licenças</string> <string name="title_licenses">Licenças</string>
<string name="status_boosted_format">%s deu boost</string> <string name="status_boosted_format">%s deu boost</string>
<string name="status_sensitive_media_title">Mídia sensível</string> <string name="status_sensitive_media_title">Mídia sensível</string>
<string name="status_media_hidden_title">Mídia oculta</string> <string name="status_media_hidden_title">Mídia sensível</string>
<string name="status_sensitive_media_directions">Toque para ver</string> <string name="status_sensitive_media_directions">Toque para ver</string>
<string name="status_content_warning_show_more">Mostrar mais</string> <string name="status_content_warning_show_more">Mostrar mais</string>
<string name="status_content_warning_show_less">Mostrar menos</string> <string name="status_content_warning_show_less">Mostrar menos</string>
<string name="footer_empty">Nada aqui. Arraste para atualizar!</string> <string name="footer_empty">Nada aqui. Arraste para atualizar!</string>
<string name="notification_reblog_format">%s compartilhou o seu toot</string> <string name="notification_reblog_format">%s deu boost no seu toot</string>
<string name="notification_favourite_format">%s favoritou seu toot</string> <string name="notification_favourite_format">%s favoritou seu toot</string>
<string name="notification_follow_format">%s te seguiu</string> <string name="notification_follow_format">%s te seguiu</string>
<string name="report_username_format">Denunciar @%s</string> <string name="report_username_format">Denunciar @%s</string>
<string name="report_comment_hint">Comentários adicionais?</string> <string name="report_comment_hint">Comentários adicionais?</string>
<string name="action_quick_reply">Resposta rápida</string> <string name="action_quick_reply">Resposta rápida</string>
<string name="action_reply">Responder</string> <string name="action_reply">Responder</string>
<string name="action_reblog">Boost</string> <string name="action_reblog">Dar boost</string>
<string name="action_unreblog">Desfazer boost</string> <string name="action_unreblog">Desfazer boost</string>
<string name="action_favourite">Favoritar</string> <string name="action_favourite">Favoritar</string>
<string name="action_unfavourite">Desfavoritar</string> <string name="action_unfavourite">Desfavoritar</string>
@ -83,7 +83,7 @@
<string name="action_photo_take">Tirar foto</string> <string name="action_photo_take">Tirar foto</string>
<string name="action_share">Compartilhar</string> <string name="action_share">Compartilhar</string>
<string name="action_mute">Silenciar</string> <string name="action_mute">Silenciar</string>
<string name="action_unmute">Desativar silêncio</string> <string name="action_unmute">Desfazer silêncio</string>
<string name="action_mention">Mencionar</string> <string name="action_mention">Mencionar</string>
<string name="action_hide_media">Ocultar mídia</string> <string name="action_hide_media">Ocultar mídia</string>
<string name="action_open_drawer">Abrir gaveta</string> <string name="action_open_drawer">Abrir gaveta</string>
@ -109,8 +109,8 @@
<string name="action_copy_link">Copiar link</string> <string name="action_copy_link">Copiar link</string>
<string name="action_open_as">Abrir como %s</string> <string name="action_open_as">Abrir como %s</string>
<string name="action_share_as">Compartilhar como …</string> <string name="action_share_as">Compartilhar como …</string>
<string name="send_status_link_to">Compartilhar link do toot no</string> <string name="send_status_link_to">Compartilhar link do toot em</string>
<string name="send_status_content_to">Compartilhar toot no</string> <string name="send_status_content_to">Compartilhar toot em</string>
<string name="send_media_to">Compartilhar mídia via…</string> <string name="send_media_to">Compartilhar mídia via…</string>
<string name="confirmation_reported">Enviado!</string> <string name="confirmation_reported">Enviado!</string>
<string name="confirmation_unblocked">Usuário desbloqueado</string> <string name="confirmation_unblocked">Usuário desbloqueado</string>
@ -142,20 +142,20 @@
<string name="dialog_message_cancel_follow_request">Recusar o seguidor pendente\?</string> <string name="dialog_message_cancel_follow_request">Recusar o seguidor pendente\?</string>
<string name="dialog_unfollow_warning">Deixar de seguir esta conta?</string> <string name="dialog_unfollow_warning">Deixar de seguir esta conta?</string>
<string name="dialog_delete_toot_warning">Excluir este toot?</string> <string name="dialog_delete_toot_warning">Excluir este toot?</string>
<string name="visibility_public">Público: Postar em timelines públicas</string> <string name="visibility_public">Público: Postar em linhas públicas</string>
<string name="visibility_unlisted">Não-listado: Não postar em timelines públicas</string> <string name="visibility_unlisted">Não-listado: Não postar em linhas públicas</string>
<string name="visibility_private">Privado: Postar apenas para seguidores</string> <string name="visibility_private">Privado: Postar só para seguidores</string>
<string name="visibility_direct">Direto: Postar para apenas usuários mencionados</string> <string name="visibility_direct">Direto: Postar para mencionados</string>
<string name="pref_title_edit_notification_settings">Editar Notificações</string> <string name="pref_title_edit_notification_settings">Editar notificações</string>
<string name="pref_title_notifications_enabled">Notificações</string> <string name="pref_title_notifications_enabled">Notificações</string>
<string name="pref_title_notification_alerts">Alertas</string> <string name="pref_title_notification_alerts">Alertas</string>
<string name="pref_title_notification_alert_sound">Notificar com som</string> <string name="pref_title_notification_alert_sound">Notificar com som</string>
<string name="pref_title_notification_alert_vibrate">Notificar com vibração</string> <string name="pref_title_notification_alert_vibrate">Notificar com vibração</string>
<string name="pref_title_notification_alert_light">Notificar com luz</string> <string name="pref_title_notification_alert_light">Notificar com luz</string>
<string name="pref_title_notification_filters">Notifique-me quando</string> <string name="pref_title_notification_filters">Notifique-me quando</string>
<string name="pref_title_notification_filter_mentions">mencionado</string> <string name="pref_title_notification_filter_mentions">me mencionarem</string>
<string name="pref_title_notification_filter_follows">seguido</string> <string name="pref_title_notification_filter_follows">me seguirem</string>
<string name="pref_title_notification_filter_reblogs">minhas postagens forem compartilhadas</string> <string name="pref_title_notification_filter_reblogs">derem boosts nos meus toots</string>
<string name="pref_title_notification_filter_favourites">favoritarem meus toots</string> <string name="pref_title_notification_filter_favourites">favoritarem meus toots</string>
<string name="pref_title_appearance_settings">Aparência</string> <string name="pref_title_appearance_settings">Aparência</string>
<string name="pref_title_app_theme">Temas</string> <string name="pref_title_app_theme">Temas</string>
@ -167,7 +167,7 @@
<string name="app_theme_system">Usar o tema do sistema</string> <string name="app_theme_system">Usar o tema do sistema</string>
<string name="pref_title_browser_settings">Navegador</string> <string name="pref_title_browser_settings">Navegador</string>
<string name="pref_title_custom_tabs">Usar abas do Chrome</string> <string name="pref_title_custom_tabs">Usar abas do Chrome</string>
<string name="pref_title_hide_follow_button">Esconder compositor ao rolar a página</string> <string name="pref_title_hide_follow_button">Ocultar compositor ao rolar a tela</string>
<string name="pref_title_status_filter">Filtro da linha do tempo</string> <string name="pref_title_status_filter">Filtro da linha do tempo</string>
<string name="pref_title_status_tabs">Abas</string> <string name="pref_title_status_tabs">Abas</string>
<string name="pref_title_show_boosts">Mostrar boosts</string> <string name="pref_title_show_boosts">Mostrar boosts</string>
@ -181,10 +181,10 @@
<string name="pref_default_post_privacy">Privacidade padrão dos toots</string> <string name="pref_default_post_privacy">Privacidade padrão dos toots</string>
<string name="pref_default_media_sensitivity">Sempre marcar mídia como sensível</string> <string name="pref_default_media_sensitivity">Sempre marcar mídia como sensível</string>
<string name="pref_publishing">Publicação</string> <string name="pref_publishing">Publicação</string>
<string name="pref_failed_to_sync">Falha ao sincronizar configurações</string> <string name="pref_failed_to_sync">Erro ao sincronizar configurações</string>
<string name="post_privacy_public">Público</string> <string name="post_privacy_public">Público</string>
<string name="post_privacy_unlisted">Não-listado</string> <string name="post_privacy_unlisted">Não-listado</string>
<string name="pref_status_text_size">Tamanho da fonte dos toots</string> <string name="pref_status_text_size">Tamanho da fonte</string>
<string name="status_text_size_smallest">Menor</string> <string name="status_text_size_smallest">Menor</string>
<string name="status_text_size_small">Pequeno</string> <string name="status_text_size_small">Pequeno</string>
<string name="status_text_size_medium">Médio</string> <string name="status_text_size_medium">Médio</string>
@ -217,8 +217,8 @@
--> -->
<string name="about_project_site">Site do projeto:\n <string name="about_project_site">Site do projeto:\n
https://tusky.app</string> https://tusky.app</string>
<string name="about_bug_feature_request_site">Reporte bugs &amp; requisite funcionalidades:\n <string name="about_bug_feature_request_site">Reporte bugs e solicite funcionalidades:
https://github.com/tuskyapp/Tusky/issues</string> \n https://github.com/tuskyapp/Tusky/issues</string>
<string name="about_tusky_account">Perfil do Tusky</string> <string name="about_tusky_account">Perfil do Tusky</string>
<string name="status_share_content">Compartilhar conteúdo do toot</string> <string name="status_share_content">Compartilhar conteúdo do toot</string>
<string name="status_share_link">Compartilhar link do toot</string> <string name="status_share_link">Compartilhar link do toot</string>
@ -236,10 +236,10 @@
<string name="abbreviated_hours_ago">%dh</string> <string name="abbreviated_hours_ago">%dh</string>
<string name="abbreviated_minutes_ago">%dm</string> <string name="abbreviated_minutes_ago">%dm</string>
<string name="abbreviated_seconds_ago">%ds</string> <string name="abbreviated_seconds_ago">%ds</string>
<string name="follows_you">Segue você</string> <string name="follows_you">Te segue</string>
<string name="pref_title_alway_show_sensitive_media">Sempre mostrar mídia sensível</string> <string name="pref_title_alway_show_sensitive_media">Sempre mostrar mídia sensível</string>
<string name="title_media">Mídia</string> <string name="title_media">Mídia</string>
<string name="replying_to">Respondendo a @%s</string> <string name="replying_to">Respondendo @%s</string>
<string name="load_more_placeholder_text">carregar mais</string> <string name="load_more_placeholder_text">carregar mais</string>
<string name="add_account_name">Adicionar conta</string> <string name="add_account_name">Adicionar conta</string>
<string name="add_account_description">Adicionar nova conta Mastodon</string> <string name="add_account_description">Adicionar nova conta Mastodon</string>
@ -247,7 +247,7 @@
<string name="title_lists">Listas</string> <string name="title_lists">Listas</string>
<string name="title_list_timeline">Linha da lista</string> <string name="title_list_timeline">Linha da lista</string>
<string name="compose_active_account_description">Usando a conta %1$s</string> <string name="compose_active_account_description">Usando a conta %1$s</string>
<string name="error_failed_set_caption">Falha ao incluir descrição</string> <string name="error_failed_set_caption">Erro ao incluir descrição</string>
<string name="action_set_caption">Descrever</string> <string name="action_set_caption">Descrever</string>
<string name="action_remove">Remover</string> <string name="action_remove">Remover</string>
<string name="lock_account_label">Trancar conta</string> <string name="lock_account_label">Trancar conta</string>
@ -267,18 +267,18 @@
<string name="performing_lookup_title">Realizando consulta…</string> <string name="performing_lookup_title">Realizando consulta…</string>
<string name="expand_collapse_all_statuses">Expandir/Ocultar todos os toots</string> <string name="expand_collapse_all_statuses">Expandir/Ocultar todos os toots</string>
<string name="action_open_toot">Abrir toot</string> <string name="action_open_toot">Abrir toot</string>
<string name="restart_required">É preciso reiniciar o aplicativo</string> <string name="restart_required">É necessário reiniciar o aplicativo</string>
<string name="restart_emoji">É preciso reiniciar o Tusky para aplicar essas mudanças</string> <string name="restart_emoji">É necessário reiniciar o Tusky para aplicar essas mudanças</string>
<string name="later">Depois</string> <string name="later">Depois</string>
<string name="restart">Reiniciar</string> <string name="restart">Reiniciar</string>
<string name="caption_systememoji">Pacote de emojis padrão do seu dispositivo</string> <string name="caption_systememoji">Pacote de emojis padrão do seu dispositivo</string>
<string name="caption_blobmoji">Emojis padrão do Android da versão 4.4 até 7.1</string> <string name="caption_blobmoji">Emojis padrão do Android da versão 4.4 até 7.1</string>
<string name="caption_twemoji">Pacote de emojis padrão do Mastodon</string> <string name="caption_twemoji">Pacote de emojis padrão do Mastodon</string>
<string name="download_failed">O download falhou</string> <string name="download_failed">Erro ao baixar</string>
<string name="profile_badge_bot_text">Robô</string> <string name="profile_badge_bot_text">Robô</string>
<string name="account_moved_description">%1$s mudou-se para:</string> <string name="account_moved_description">%1$s mudou-se para:</string>
<string name="reblog_private">Dar boost para audiência original</string> <string name="reblog_private">Dar boost para audiência original</string>
<string name="unreblog_private">Retirar compartilhamento</string> <string name="unreblog_private">Desfazer boost</string>
<string name="license_description">O Tusky contém código e recursos dos seguintes projetos de código aberto:</string> <string name="license_description">O Tusky contém código e recursos dos seguintes projetos de código aberto:</string>
<string name="license_apache_2">Licenciado sob a licença Apache (cópia abaixo)</string> <string name="license_apache_2">Licenciado sob a licença Apache (cópia abaixo)</string>
<string name="profile_metadata_label">Metadados do perfil</string> <string name="profile_metadata_label">Metadados do perfil</string>
@ -306,17 +306,17 @@
<string name="download_media">Baixar mídia</string> <string name="download_media">Baixar mídia</string>
<string name="downloading_media">Baixando mídia</string> <string name="downloading_media">Baixando mídia</string>
<string name="dialog_redraft_toot_warning">Excluir e rascunhar este toot\?</string> <string name="dialog_redraft_toot_warning">Excluir e rascunhar este toot\?</string>
<string name="pref_title_notification_filter_poll">Enquetes terminaram</string> <string name="pref_title_notification_filter_poll">enquetes terminarem</string>
<string name="pref_title_timeline_filters">Filtros</string> <string name="pref_title_timeline_filters">Filtros</string>
<string name="pref_title_language">Idioma</string> <string name="pref_title_language">Idioma</string>
<string name="post_privacy_followers_only">Apenas para seguidores</string> <string name="post_privacy_followers_only"> para seguidores</string>
<string name="notification_poll_name">Enquetes</string> <string name="notification_poll_name">Enquetes</string>
<string name="notification_poll_description">Notificar enquetes que já terminaram</string> <string name="notification_poll_description">Notificar enquetes que já terminaram</string>
<string name="pref_title_public_filter_keywords">Timelines públicas</string> <string name="pref_title_public_filter_keywords">Linhas públicas</string>
<string name="pref_title_thread_filter_keywords">Conversas</string> <string name="pref_title_thread_filter_keywords">Conversas</string>
<string name="filter_addition_dialog_title">Criar filtro</string> <string name="filter_addition_dialog_title">Criar filtro</string>
<string name="filter_edit_dialog_title">Editar filtro</string> <string name="filter_edit_dialog_title">Editar filtro</string>
<string name="filter_dialog_remove_button">Remover</string> <string name="filter_dialog_remove_button">Excluir</string>
<string name="filter_dialog_update_button">Atualizar</string> <string name="filter_dialog_update_button">Atualizar</string>
<string name="filter_add_description">Frase para filtrar</string> <string name="filter_add_description">Frase para filtrar</string>
<string name="error_create_list">Não foi possível criar lista</string> <string name="error_create_list">Não foi possível criar lista</string>
@ -354,7 +354,7 @@
<string name="description_status_reblogged">Você deu boost</string> <string name="description_status_reblogged">Você deu boost</string>
<string name="description_status_favourited">Favoritado</string> <string name="description_status_favourited">Favoritado</string>
<string name="description_visiblity_unlisted">Não-listado</string> <string name="description_visiblity_unlisted">Não-listado</string>
<string name="description_visiblity_direct">Direta</string> <string name="description_visiblity_direct">Direto</string>
<string name="hint_list_name">Nome da lista</string> <string name="hint_list_name">Nome da lista</string>
<string name="edit_hashtag_hint">Hashtag sem #</string> <string name="edit_hashtag_hint">Hashtag sem #</string>
<string name="notifications_clear">Limpar</string> <string name="notifications_clear">Limpar</string>
@ -365,12 +365,12 @@
<string name="pref_title_bot_overlay">Mostrar indicador de robôs</string> <string name="pref_title_bot_overlay">Mostrar indicador de robôs</string>
<string name="notification_clear_text">Você tem certeza de que quer limpar permanentemente todas as suas notificações\?</string> <string name="notification_clear_text">Você tem certeza de que quer limpar permanentemente todas as suas notificações\?</string>
<string name="compose_preview_image_description">Opções para imagem %s</string> <string name="compose_preview_image_description">Opções para imagem %s</string>
<string name="poll_info_format"> <!-- 15 votes • 1 hour left --> %1$s • %2$s</string> <string name="poll_info_format"> <!-- 15 votos • 1 hora restante --> %1$s • %2$s</string>
<plurals name="poll_info_votes"> <plurals name="poll_info_votes">
<item quantity="one">%s voto</item> <item quantity="one">%s voto</item>
<item quantity="other">%s votos</item> <item quantity="other">%s votos</item>
</plurals> </plurals>
<string name="poll_info_time_relative">%s restando</string> <string name="poll_info_time_relative">%s restante</string>
<string name="poll_info_time_absolute">termina em %s</string> <string name="poll_info_time_absolute">termina em %s</string>
<string name="poll_info_closed">Terminou</string> <string name="poll_info_closed">Terminou</string>
<string name="poll_vote">Votar</string> <string name="poll_vote">Votar</string>
@ -401,8 +401,8 @@
<string name="report_sent_success">\@%s denunciado com sucesso</string> <string name="report_sent_success">\@%s denunciado com sucesso</string>
<string name="hint_additional_info">Comentários adicionais</string> <string name="hint_additional_info">Comentários adicionais</string>
<string name="report_remote_instance">Encaminhar para %s</string> <string name="report_remote_instance">Encaminhar para %s</string>
<string name="failed_report">Falha na denúncia</string> <string name="failed_report">Erro ao denunciar</string>
<string name="failed_fetch_statuses">Falha ao carregar toots</string> <string name="failed_fetch_statuses">Erro ao carregar toots</string>
<string name="report_description_1">A denúncia será enviada aos moderadores da instância. Você pode explicar por que você denunciou a conta:</string> <string name="report_description_1">A denúncia será enviada aos moderadores da instância. Você pode explicar por que você denunciou a conta:</string>
<string name="report_description_remote_instance">A conta está em outra instância. Enviar uma cópia anônima da denúncia para lá\?</string> <string name="report_description_remote_instance">A conta está em outra instância. Enviar uma cópia anônima da denúncia para lá\?</string>
<string name="title_domain_mutes">Instâncias bloqueadas</string> <string name="title_domain_mutes">Instâncias bloqueadas</string>
@ -443,7 +443,6 @@
<string name="description_status_bookmarked">Salvo</string> <string name="description_status_bookmarked">Salvo</string>
<string name="select_list_title">Selecionar lista</string> <string name="select_list_title">Selecionar lista</string>
<string name="list">Lista</string> <string name="list">Lista</string>
<string name="gradient_for_media">Mostrar blur em mídias ocultas</string>
<string name="no_scheduled_status">Sem toots agendados.</string> <string name="no_scheduled_status">Sem toots agendados.</string>
<string name="error_audio_upload_size">Áudios devem ser menores que 40MB.</string> <string name="error_audio_upload_size">Áudios devem ser menores que 40MB.</string>
<string name="no_saved_status">Sem rascunhos.</string> <string name="no_saved_status">Sem rascunhos.</string>
@ -454,7 +453,7 @@
<string name="action_unmute_conversation">Desfazer silêncio</string> <string name="action_unmute_conversation">Desfazer silêncio</string>
<string name="dialog_block_warning">Bloquear @%s\?</string> <string name="dialog_block_warning">Bloquear @%s\?</string>
<string name="dialog_mute_warning">Silenciar @%s\?</string> <string name="dialog_mute_warning">Silenciar @%s\?</string>
<string name="pref_title_notification_filter_follow_requests">pedirem para me seguir</string> <string name="pref_title_notification_filter_follow_requests">quiserem me seguir</string>
<string name="notification_follow_request_description">Notificar sobre seguidores pendentes</string> <string name="notification_follow_request_description">Notificar sobre seguidores pendentes</string>
<plurals name="poll_info_people"> <plurals name="poll_info_people">
<item quantity="one">%s pessoa</item> <item quantity="one">%s pessoa</item>
@ -465,4 +464,8 @@
<string name="pref_title_confirm_reblogs">Solicitar confirmação antes de dar boost</string> <string name="pref_title_confirm_reblogs">Solicitar confirmação antes de dar boost</string>
<string name="hashtags">Hashtags</string> <string name="hashtags">Hashtags</string>
<string name="add_hashtag_title">Adicionar hashtag</string> <string name="add_hashtag_title">Adicionar hashtag</string>
<string name="pref_title_gradient_for_media">Mostrar blur em mídia sensível</string>
<string name="pref_main_nav_position_option_bottom">Inferior</string>
<string name="pref_main_nav_position_option_top">Superior</string>
<string name="pref_main_nav_position">Posição do menu</string>
</resources> </resources>

View File

@ -471,7 +471,6 @@
<string name="select_list_title">Выбрать список</string> <string name="select_list_title">Выбрать список</string>
<string name="list">Список</string> <string name="list">Список</string>
<string name="error_audio_upload_size">Аудиофайлы должны быть меньше 40МБ.</string> <string name="error_audio_upload_size">Аудиофайлы должны быть меньше 40МБ.</string>
<string name="gradient_for_media">Показывать цветные градиенты для скрытых медиа</string>
<string name="post_lookup_error_format">Ошибка поиска поста %s</string> <string name="post_lookup_error_format">Ошибка поиска поста %s</string>
<string name="no_saved_status">У вас нет черновиков.</string> <string name="no_saved_status">У вас нет черновиков.</string>
<string name="no_scheduled_status">У вас нет запланированных постов.</string> <string name="no_scheduled_status">У вас нет запланированных постов.</string>
@ -493,4 +492,11 @@
<string name="action_unmute_conversation">Показать обсуждение</string> <string name="action_unmute_conversation">Показать обсуждение</string>
<string name="action_mute_conversation">Заглушить обсуждение</string> <string name="action_mute_conversation">Заглушить обсуждение</string>
<string name="notification_follow_request_format">запрос на подписку от %s</string> <string name="notification_follow_request_format">запрос на подписку от %s</string>
<string name="hashtags">Тэги</string>
<string name="add_hashtag_title">Добавить тэг</string>
<string name="pref_title_gradient_for_media">Отображать цветные градиенты для скрытых изображений</string>
<string name="pref_main_nav_position_option_bottom">Снизу</string>
<string name="pref_main_nav_position_option_top">Сверху</string>
<string name="pref_main_nav_position">Расположение панели навигации</string>
<string name="action_unmute_domain">Отменить глушение %s</string>
</resources> </resources>

View File

@ -450,7 +450,6 @@
<string name="description_status_bookmarked">Bokmärkt</string> <string name="description_status_bookmarked">Bokmärkt</string>
<string name="select_list_title">Välj lista</string> <string name="select_list_title">Välj lista</string>
<string name="list">Lista</string> <string name="list">Lista</string>
<string name="gradient_for_media">Visa färgglada gradienter för gömd media</string>
<string name="no_scheduled_status">Du har inga schemalagda statusar.</string> <string name="no_scheduled_status">Du har inga schemalagda statusar.</string>
<string name="error_audio_upload_size">Ljudfiler måste vara mindre än 40MB.</string> <string name="error_audio_upload_size">Ljudfiler måste vara mindre än 40MB.</string>
<string name="no_saved_status">Du har inga utkast.</string> <string name="no_saved_status">Du har inga utkast.</string>
@ -472,4 +471,9 @@
<string name="notification_follow_request_format">%s vill följa dig</string> <string name="notification_follow_request_format">%s vill följa dig</string>
<string name="add_hashtag_title">Lägg till hashtag</string> <string name="add_hashtag_title">Lägg till hashtag</string>
<string name="hashtags">Hashtaggar</string> <string name="hashtags">Hashtaggar</string>
<string name="pref_main_nav_position_option_top">Topp</string>
<string name="pref_main_nav_position_option_bottom">Botten</string>
<string name="pref_main_nav_position">Standard navigationsposition</string>
<string name="pref_title_gradient_for_media">Visa färgglada gradienter för gömd media</string>
<string name="action_unmute_domain">Ta bort tystad %s</string>
</resources> </resources>

View File

@ -181,7 +181,7 @@
\nhttps://github.com/tuskyapp/Tusky/issues</string> \nhttps://github.com/tuskyapp/Tusky/issues</string>
<string name="about_project_site">เว็บไซต์โปรเจกต์: <string name="about_project_site">เว็บไซต์โปรเจกต์:
\nhttps://tusky.app</string> \nhttps://tusky.app</string>
<string name="about_tusky_license">Tusky คือซอฟต์แวร์เสรีและโอเพนซอร์ส &lt;!-- --&gt; ภายใต้สัญญาอนุญาต GNU General Public License Version 3 &lt;!-- --&gt;ดูสัญญาที่ : https://www.gnu.org/licenses/gpl-3.0.ja.html</string> <string name="about_tusky_license">Tusky คือซอฟต์แวร์เสรีและโอเพนซอร์ส ภายใต้สัญญาอนุญาต GNU General Public License Version 3 ดูสัญญาที่ : https://www.gnu.org/licenses/gpl-3.0.ja.html</string>
<string name="about_powered_by_tusky">ขับเคลื่อนด้วย Tusky</string> <string name="about_powered_by_tusky">ขับเคลื่อนด้วย Tusky</string>
<string name="about_tusky_version">Tusky %s</string> <string name="about_tusky_version">Tusky %s</string>
<string name="description_account_locked">บัญชีไม่สาธารณะ</string> <string name="description_account_locked">บัญชีไม่สาธารณะ</string>
@ -206,7 +206,7 @@
<string name="status_text_size_large">ใหญ่</string> <string name="status_text_size_large">ใหญ่</string>
<string name="status_text_size_medium">กลาง</string> <string name="status_text_size_medium">กลาง</string>
<string name="status_text_size_small">เล็ก</string> <string name="status_text_size_small">เล็ก</string>
<string name="status_text_size_smallest">เล็กสุด</string> <string name="status_text_size_smallest">เล็กมาก</string>
<string name="pref_status_text_size">ขนาดอักษร Toot</string> <string name="pref_status_text_size">ขนาดอักษร Toot</string>
<string name="post_privacy_followers_only">เฉพาะผู้ติดตาม</string> <string name="post_privacy_followers_only">เฉพาะผู้ติดตาม</string>
<string name="post_privacy_unlisted">ไม่อยู่ในรายการ</string> <string name="post_privacy_unlisted">ไม่อยู่ในรายการ</string>
@ -214,7 +214,7 @@
<string name="pref_failed_to_sync">ซิงค์การตั้งค่าล้มเหลว</string> <string name="pref_failed_to_sync">ซิงค์การตั้งค่าล้มเหลว</string>
<string name="pref_publishing">กำลังเผยแพร่ (synced with server)</string> <string name="pref_publishing">กำลังเผยแพร่ (synced with server)</string>
<string name="pref_default_media_sensitivity">ใส่เครื่องหมายว่าเป็นสื่ออ่อนไหวเสมอ</string> <string name="pref_default_media_sensitivity">ใส่เครื่องหมายว่าเป็นสื่ออ่อนไหวเสมอ</string>
<string name="pref_default_post_privacy">ความเป็นส่วนตัวโพสต์ปริยาย</string> <string name="pref_default_post_privacy">่าปริยายความเป็นส่วนตัวของโพสต์</string>
<string name="pref_title_http_proxy_port">พอร์ตพร็อกซี่ HTTP</string> <string name="pref_title_http_proxy_port">พอร์ตพร็อกซี่ HTTP</string>
<string name="pref_title_http_proxy_server">เซิร์ฟเวอร์พร็อกซี่ HTTP</string> <string name="pref_title_http_proxy_server">เซิร์ฟเวอร์พร็อกซี่ HTTP</string>
<string name="pref_title_http_proxy_enable">เปิดใช้งานพร็อกซี่ HTTP</string> <string name="pref_title_http_proxy_enable">เปิดใช้งานพร็อกซี่ HTTP</string>
@ -225,7 +225,6 @@
<string name="pref_title_show_boosts">แสดงบูสต์</string> <string name="pref_title_show_boosts">แสดงบูสต์</string>
<string name="pref_title_status_tabs">แท็บ</string> <string name="pref_title_status_tabs">แท็บ</string>
<string name="pref_title_status_filter">คัดกรองไทม์ไลน์</string> <string name="pref_title_status_filter">คัดกรองไทม์ไลน์</string>
<string name="gradient_for_media">แสดงสื่อที่ซ่อนไว้แบบไล่หลากสี</string>
<string name="pref_title_animate_gif_avatars">อวตาร GIF เคลื่อนไหวได้</string> <string name="pref_title_animate_gif_avatars">อวตาร GIF เคลื่อนไหวได้</string>
<string name="pref_title_bot_overlay">แสดงสัญลักษณ์ว่าเป็นบอต</string> <string name="pref_title_bot_overlay">แสดงสัญลักษณ์ว่าเป็นบอต</string>
<string name="pref_title_language">ภาษา</string> <string name="pref_title_language">ภาษา</string>
@ -269,19 +268,13 @@
<string name="dialog_download_image">ดาวน์โหลด</string> <string name="dialog_download_image">ดาวน์โหลด</string>
<string name="dialog_message_uploading_media">กำลังอัปโหลด…</string> <string name="dialog_message_uploading_media">กำลังอัปโหลด…</string>
<string name="dialog_title_finishing_media_upload">กำลังอัปโหลดสื่อใกล้เสร็จ</string> <string name="dialog_title_finishing_media_upload">กำลังอัปโหลดสื่อใกล้เสร็จ</string>
<string name="dialog_whats_an_instance">"ใส่ที่อยู่หรือโดเมนของ Instance ได้ที่นี่ เช่น mastodon.social icosahedron.website social.tchncs.de และ &lt;a href=\"https://instances.social\"&gt;อีกมากมาย!&lt;/a&gt; <string name="dialog_whats_an_instance">ใส่ที่อยู่หรือโดเมนของ Instance ได้ที่นี่ เช่น mastodon.social icosahedron.website social.tchncs.de และ <a href="https://instances.social">อีกมากมาย!</a>
\n \n
\nถ้ายังไม่มีบัญชี สามารถใส่ชื่อ Instance ที่ต้องการจะร่วมแล้วสร้างบัญชีที่นั่น \nถ้ายังไม่มีบัญชี สามารถใส่ชื่อ Instance ที่ต้องการจะร่วมแล้วสร้างบัญชีที่นั่น
\n \n
\nInstance คือที่ที่หนึ่งไว้โฮสต์บัญชีคุณ แต่คุณยังสามารถสื่อสาร ติดตามบุคคลบน Instance อื่นได้เหมือนอยู่บนไซต์เดียวกัน \nInstance คือที่ที่หนึ่งไว้โฮสต์บัญชีคุณ แต่คุณยังสามารถสื่อสาร ติดตามบุคคลบน Instance อื่นได้เหมือนอยู่บนไซต์เดียวกัน
\n \n
\nพบข้อมูลเพิ่มเติมได้ที่ &lt;a href=\"https://joinmastodon.org\"&gt;joinmastodon.org&lt;/a&gt; "<a href="https://instances.social">more!</a> \nพบข้อมูลเพิ่มเติมได้ที่ <a href="https://joinmastodon.org">joinmastodon.org</a> </string>
\n\nIf you don\'t yet have an account, you can enter the name of the instance you\'d like to
join and create an account there.\n\nAn instance is a single place where your account is
hosted, but you can easily communicate with and follow folks on other instances as though
you were on the same site.
\n\nMore info can be found at <a href="https://joinmastodon.org">joinmastodon.org</a>.
</string>
<string name="label_header">ภาพหัวบน</string> <string name="label_header">ภาพหัวบน</string>
<string name="login_connection">กำลังเชื่อมต่อ…</string> <string name="login_connection">กำลังเชื่อมต่อ…</string>
<string name="label_avatar">อวตาร</string> <string name="label_avatar">อวตาร</string>
@ -327,7 +320,7 @@
<string name="action_access_saved_toot">ฉบับร่าง</string> <string name="action_access_saved_toot">ฉบับร่าง</string>
<string name="action_reject">ปฏิเสธ</string> <string name="action_reject">ปฏิเสธ</string>
<string name="action_accept">ยอมรับ</string> <string name="action_accept">ยอมรับ</string>
<string name="action_undo">้อนการกระทำ</string> <string name="action_undo">กเลิก</string>
<string name="action_edit_own_profile">แก้ไข</string> <string name="action_edit_own_profile">แก้ไข</string>
<string name="action_save">บันทึก</string> <string name="action_save">บันทึก</string>
<string name="action_open_drawer">เปิดเมนู</string> <string name="action_open_drawer">เปิดเมนู</string>
@ -398,7 +391,7 @@
<string name="title_follow_requests">คำขอติดตาม</string> <string name="title_follow_requests">คำขอติดตาม</string>
<string name="title_domain_mutes">โดเมนที่ซ่อนไว้</string> <string name="title_domain_mutes">โดเมนที่ซ่อนไว้</string>
<string name="title_blocks">ผู้ใช้ที่ถูกบล็อก</string> <string name="title_blocks">ผู้ใช้ที่ถูกบล็อก</string>
<string name="title_mutes">ผู้ใช้ที่ทำให้เป็นใบ</string> <string name="title_mutes">ผู้ใช้ที่ปิดเสียงไว</string>
<string name="title_bookmarks">คั่นหน้า</string> <string name="title_bookmarks">คั่นหน้า</string>
<string name="title_followers">ผู้ติดตาม</string> <string name="title_followers">ผู้ติดตาม</string>
<string name="title_follows">ติดตาม</string> <string name="title_follows">ติดตาม</string>
@ -454,4 +447,9 @@
<string name="post_lookup_error_format">การค้นหาโพสต์ %s เกิดข้อผิดผลาด</string> <string name="post_lookup_error_format">การค้นหาโพสต์ %s เกิดข้อผิดผลาด</string>
<string name="edit_poll">แก้ไข</string> <string name="edit_poll">แก้ไข</string>
<string name="poll_new_choice_hint">ตัวเลือกที่ %d</string> <string name="poll_new_choice_hint">ตัวเลือกที่ %d</string>
<string name="pref_main_nav_position_option_bottom">ล่าง</string>
<string name="pref_main_nav_position_option_top">บน</string>
<string name="pref_main_nav_position">ตำแหน่งการนำทางหลัก</string>
<string name="pref_title_gradient_for_media">แสดงการไล่ระดับสีสันสำหรับสื่อที่ถูกซ่อนไว้</string>
<string name="action_unmute_domain">เลิกปิดเสียง %s</string>
</resources> </resources>

View File

@ -433,7 +433,6 @@
<string name="profile_badge_bot_text">Alt Metin</string> <string name="profile_badge_bot_text">Alt Metin</string>
<string name="confirmation_domain_unmuted">%s gizleme</string> <string name="confirmation_domain_unmuted">%s gizleme</string>
<string name="mute_domain_warning_dialog_ok">Alan adından herşeyi gizle</string> <string name="mute_domain_warning_dialog_ok">Alan adından herşeyi gizle</string>
<string name="gradient_for_media">Gizli medya için renkli degradeleri göster</string>
<string name="pref_title_alway_open_spoiler">Hassas içerikleri göster</string> <string name="pref_title_alway_open_spoiler">Hassas içerikleri göster</string>
<string name="poll_info_time_absolute">bitiş %s</string> <string name="poll_info_time_absolute">bitiş %s</string>
<string name="failed_report">Bildirilemedi</string> <string name="failed_report">Bildirilemedi</string>

View File

@ -418,7 +418,6 @@
<string name="confirmation_domain_unmuted">%s 已解除静音</string> <string name="confirmation_domain_unmuted">%s 已解除静音</string>
<string name="mute_domain_warning_dialog_ok">隐藏整个域</string> <string name="mute_domain_warning_dialog_ok">隐藏整个域</string>
<string name="pref_title_animate_gif_avatars">动画GIF头像</string> <string name="pref_title_animate_gif_avatars">动画GIF头像</string>
<string name="gradient_for_media">显示隐藏媒体的彩色渐变</string>
<string name="about_powered_by_tusky">由Tusky提供支持</string> <string name="about_powered_by_tusky">由Tusky提供支持</string>
<string name="pref_title_alway_open_spoiler">始终扩展标有内容警告的嘟文</string> <string name="pref_title_alway_open_spoiler">始终扩展标有内容警告的嘟文</string>
<string name="filter_dialog_whole_word">整个单词</string> <string name="filter_dialog_whole_word">整个单词</string>

View File

@ -14,7 +14,12 @@ allprojects {
repositories { repositories {
google() google()
jcenter() jcenter()
maven { url "https://jitpack.io" } maven {
url "http://dl.bintray.com/piasy/maven"
}
maven {
url "https://jitpack.io"
}
} }
} }