tag, which
- * all status contents do, so it should be trimmed. */
- return json.asString?.parseAsHtml()?.trimTrailingWhitespace() ?: SpannedString("")
+ return json.asString
+ /* Mastodon uses 'white-space: pre-wrap;' so spaces are displayed as returned by the Api.
+ * We can't use CSS so we replace spaces with non-breaking-spaces to emulate the behavior.
+ */
+ ?.replace(" ", " ")
+ ?.replace(" ", " ")
+ ?.replace(" ", " ")
+ ?.replace(" ", " ")
+ ?.parseAsHtml()
+ /* Html.fromHtml returns trailing whitespace if the html ends in a tag, which
+ * most status contents do, so it should be trimmed. */
+ ?.trimTrailingWhitespace()
+ ?: SpannedString("")
}
override fun serialize(src: Spanned?, typeOfSrc: Type, context: JsonSerializationContext): JsonElement {
- return JsonPrimitive(HtmlCompat.toHtml(src!!, HtmlCompat.TO_HTML_PARAGRAPH_LINES_INDIVIDUAL))
+ return JsonPrimitive(src!!.toHtml(HtmlCompat.TO_HTML_PARAGRAPH_LINES_INDIVIDUAL))
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt b/app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt
index a8b1050c..28d83eca 100644
--- a/app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/network/MastodonApi.kt
@@ -28,6 +28,7 @@ import com.keylesspalace.tusky.entity.IdentityProof
import com.keylesspalace.tusky.entity.Instance
import com.keylesspalace.tusky.entity.Marker
import com.keylesspalace.tusky.entity.MastoList
+import com.keylesspalace.tusky.entity.MediaUploadResult
import com.keylesspalace.tusky.entity.NewStatus
import com.keylesspalace.tusky.entity.Notification
import com.keylesspalace.tusky.entity.Poll
@@ -36,6 +37,7 @@ import com.keylesspalace.tusky.entity.ScheduledStatus
import com.keylesspalace.tusky.entity.SearchResult
import com.keylesspalace.tusky.entity.Status
import com.keylesspalace.tusky.entity.StatusContext
+import com.keylesspalace.tusky.entity.TimelineAccount
import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Single
import okhttp3.MultipartBody
@@ -66,7 +68,7 @@ import retrofit2.http.Query
interface MastodonApi {
companion object {
- const val ENDPOINT_AUTHORIZE = "/oauth/authorize"
+ const val ENDPOINT_AUTHORIZE = "oauth/authorize"
const val DOMAIN_HEADER = "domain"
const val PLACEHOLDER_DOMAIN = "dummy.placeholder"
}
@@ -142,11 +144,11 @@ interface MastodonApi {
fun clearNotifications(): Single
@Multipart
- @POST("api/v1/media")
+ @POST("api/v2/media")
fun uploadMedia(
@Part file: MultipartBody.Part,
@Part description: MultipartBody.Part? = null
- ): Single
+ ): Single
@FormUrlEncoded
@PUT("api/v1/media/{mediaId}")
@@ -177,13 +179,13 @@ interface MastodonApi {
fun statusRebloggedBy(
@Path("id") statusId: String,
@Query("max_id") maxId: String?
- ): Single>>
+ ): Single>>
@GET("api/v1/statuses/{id}/favourited_by")
fun statusFavouritedBy(
@Path("id") statusId: String,
@Query("max_id") maxId: String?
- ): Single>>
+ ): Single>>
@DELETE("api/v1/statuses/{id}")
fun deleteStatus(
@@ -285,7 +287,7 @@ interface MastodonApi {
@Query("resolve") resolve: Boolean? = null,
@Query("limit") limit: Int? = null,
@Query("following") following: Boolean? = null
- ): Single>
+ ): Single>
@GET("api/v1/accounts/{id}")
fun account(
@@ -316,13 +318,13 @@ interface MastodonApi {
fun accountFollowers(
@Path("id") accountId: String,
@Query("max_id") maxId: String?
- ): Single>>
+ ): Single>>
@GET("api/v1/accounts/{id}/following")
fun accountFollowing(
@Path("id") accountId: String,
@Query("max_id") maxId: String?
- ): Single>>
+ ): Single>>
@FormUrlEncoded
@POST("api/v1/accounts/{id}/follow")
@@ -383,12 +385,12 @@ interface MastodonApi {
@GET("api/v1/blocks")
fun blocks(
@Query("max_id") maxId: String?
- ): Single>>
+ ): Single>>
@GET("api/v1/mutes")
fun mutes(
@Query("max_id") maxId: String?
- ): Single>>
+ ): Single>>
@GET("api/v1/domain_blocks")
fun domainBlocks(
@@ -425,7 +427,7 @@ interface MastodonApi {
@GET("api/v1/follow_requests")
fun followRequests(
@Query("max_id") maxId: String?
- ): Single>>
+ ): Single>>
@POST("api/v1/follow_requests/{id}/authorize")
fun authorizeFollowRequest(
@@ -439,24 +441,24 @@ interface MastodonApi {
@FormUrlEncoded
@POST("api/v1/apps")
- fun authenticateApp(
+ suspend fun authenticateApp(
@Header(DOMAIN_HEADER) domain: String,
@Field("client_name") clientName: String,
@Field("redirect_uris") redirectUris: String,
@Field("scopes") scopes: String,
@Field("website") website: String
- ): Call
+ ): AppCredentials
@FormUrlEncoded
@POST("oauth/token")
- fun fetchOAuthToken(
+ suspend fun fetchOAuthToken(
@Header(DOMAIN_HEADER) domain: String,
@Field("client_id") clientId: String,
@Field("client_secret") clientSecret: String,
@Field("redirect_uri") redirectUri: String,
@Field("code") code: String,
@Field("grant_type") grantType: String
- ): Call
+ ): AccessToken
@FormUrlEncoded
@POST("api/v1/lists")
@@ -480,7 +482,7 @@ interface MastodonApi {
fun getAccountsInList(
@Path("listId") listId: String,
@Query("limit") limit: Int
- ): Single>
+ ): Single>
@FormUrlEncoded
// @DELETE doesn't support fields
diff --git a/app/src/main/java/com/keylesspalace/tusky/receiver/SendStatusBroadcastReceiver.kt b/app/src/main/java/com/keylesspalace/tusky/receiver/SendStatusBroadcastReceiver.kt
index 25dd91d4..6101dd84 100644
--- a/app/src/main/java/com/keylesspalace/tusky/receiver/SendStatusBroadcastReceiver.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/receiver/SendStatusBroadcastReceiver.kt
@@ -18,19 +18,19 @@ package com.keylesspalace.tusky.receiver
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
+import android.graphics.Color
import android.util.Log
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.app.RemoteInput
import androidx.core.content.ContextCompat
+import com.keylesspalace.tusky.BuildConfig
import com.keylesspalace.tusky.R
-import com.keylesspalace.tusky.components.compose.ComposeActivity
-import com.keylesspalace.tusky.components.compose.ComposeActivity.ComposeOptions
import com.keylesspalace.tusky.components.notifications.NotificationHelper
import com.keylesspalace.tusky.db.AccountManager
import com.keylesspalace.tusky.entity.Status
-import com.keylesspalace.tusky.service.SendTootService
-import com.keylesspalace.tusky.service.TootToSend
+import com.keylesspalace.tusky.service.SendStatusService
+import com.keylesspalace.tusky.service.StatusToSend
import com.keylesspalace.tusky.util.randomAlphanumericString
import dagger.android.AndroidInjection
import javax.inject.Inject
@@ -45,22 +45,19 @@ class SendStatusBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
AndroidInjection.inject(this, context)
- val notificationId = intent.getIntExtra(NotificationHelper.KEY_NOTIFICATION_ID, -1)
- val senderId = intent.getLongExtra(NotificationHelper.KEY_SENDER_ACCOUNT_ID, -1)
- val senderIdentifier = intent.getStringExtra(NotificationHelper.KEY_SENDER_ACCOUNT_IDENTIFIER)
- val senderFullName = intent.getStringExtra(NotificationHelper.KEY_SENDER_ACCOUNT_FULL_NAME)
- val citedStatusId = intent.getStringExtra(NotificationHelper.KEY_CITED_STATUS_ID)
- val visibility = intent.getSerializableExtra(NotificationHelper.KEY_VISIBILITY) as Status.Visibility
- val spoiler = intent.getStringExtra(NotificationHelper.KEY_SPOILER) ?: ""
- val mentions = intent.getStringArrayExtra(NotificationHelper.KEY_MENTIONS) ?: emptyArray()
- val citedText = intent.getStringExtra(NotificationHelper.KEY_CITED_TEXT)
- val localAuthorId = intent.getStringExtra(NotificationHelper.KEY_CITED_AUTHOR_LOCAL)
-
- val account = accountManager.getAccountById(senderId)
-
- val notificationManager = NotificationManagerCompat.from(context)
-
if (intent.action == NotificationHelper.REPLY_ACTION) {
+ val notificationId = intent.getIntExtra(NotificationHelper.KEY_NOTIFICATION_ID, -1)
+ val senderId = intent.getLongExtra(NotificationHelper.KEY_SENDER_ACCOUNT_ID, -1)
+ val senderIdentifier = intent.getStringExtra(NotificationHelper.KEY_SENDER_ACCOUNT_IDENTIFIER)
+ val senderFullName = intent.getStringExtra(NotificationHelper.KEY_SENDER_ACCOUNT_FULL_NAME)
+ val citedStatusId = intent.getStringExtra(NotificationHelper.KEY_CITED_STATUS_ID)
+ val visibility = intent.getSerializableExtra(NotificationHelper.KEY_VISIBILITY) as Status.Visibility
+ val spoiler = intent.getStringExtra(NotificationHelper.KEY_SPOILER) ?: ""
+ val mentions = intent.getStringArrayExtra(NotificationHelper.KEY_MENTIONS) ?: emptyArray()
+
+ val account = accountManager.getAccountById(senderId)
+
+ val notificationManager = NotificationManagerCompat.from(context)
val message = getReplyMessage(intent)
@@ -85,9 +82,9 @@ class SendStatusBroadcastReceiver : BroadcastReceiver() {
} else {
val text = mentions.joinToString(" ", postfix = " ") { "@$it" } + message.toString()
- val sendIntent = SendTootService.sendTootIntent(
+ val sendIntent = SendStatusService.sendStatusIntent(
context,
- TootToSend(
+ StatusToSend(
text = text,
warningText = spoiler,
visibility = visibility.serverString(),
@@ -109,14 +106,20 @@ class SendStatusBroadcastReceiver : BroadcastReceiver() {
context.startService(sendIntent)
+ val color = if (BuildConfig.FLAVOR == "green") {
+ Color.parseColor("#19A341")
+ } else {
+ ContextCompat.getColor(context, R.color.tusky_blue)
+ }
+
val builder = NotificationCompat.Builder(context, NotificationHelper.CHANNEL_MENTION + senderIdentifier)
.setSmallIcon(R.drawable.ic_notify)
- .setColor(ContextCompat.getColor(context, (R.color.chinwag_green)))
+ .setColor(color)
.setGroup(senderFullName)
.setDefaults(0) // So it doesn't ring twice, notify only in Target callback
- builder.setContentTitle(context.getString(R.string.status_sent))
- builder.setContentText(context.getString(R.string.status_sent_long))
+ builder.setContentTitle(context.getString(R.string.post_sent))
+ builder.setContentText(context.getString(R.string.post_sent_long))
builder.setSubText(senderFullName)
builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
@@ -125,29 +128,6 @@ class SendStatusBroadcastReceiver : BroadcastReceiver() {
notificationManager.notify(notificationId, builder.build())
}
- } else if (intent.action == NotificationHelper.COMPOSE_ACTION) {
-
- context.sendBroadcast(Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS))
-
- notificationManager.cancel(notificationId)
-
- accountManager.setActiveAccount(senderId)
-
- val composeIntent = ComposeActivity.startIntent(
- context,
- ComposeOptions(
- inReplyToId = citedStatusId,
- replyVisibility = visibility,
- contentWarning = spoiler,
- mentionedUsernames = mentions.toSet(),
- replyingStatusAuthor = localAuthorId,
- replyingStatusContent = citedText
- )
- )
-
- composeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
-
- context.startActivity(composeIntent)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/service/SendTootService.kt b/app/src/main/java/com/keylesspalace/tusky/service/SendStatusService.kt
similarity index 50%
rename from app/src/main/java/com/keylesspalace/tusky/service/SendTootService.kt
rename to app/src/main/java/com/keylesspalace/tusky/service/SendStatusService.kt
index d2092118..a2709f97 100644
--- a/app/src/main/java/com/keylesspalace/tusky/service/SendTootService.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/service/SendStatusService.kt
@@ -19,8 +19,8 @@ import com.keylesspalace.tusky.appstore.EventHub
import com.keylesspalace.tusky.appstore.StatusComposedEvent
import com.keylesspalace.tusky.appstore.StatusScheduledEvent
import com.keylesspalace.tusky.components.drafts.DraftHelper
+import com.keylesspalace.tusky.components.notifications.NotificationHelper
import com.keylesspalace.tusky.db.AccountManager
-import com.keylesspalace.tusky.db.AppDatabase
import com.keylesspalace.tusky.di.Injectable
import com.keylesspalace.tusky.entity.NewPoll
import com.keylesspalace.tusky.entity.NewStatus
@@ -30,18 +30,17 @@ import dagger.android.AndroidInjection
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
+import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.parcelize.Parcelize
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
-import java.util.Timer
-import java.util.TimerTask
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.TimeUnit
import javax.inject.Inject
-class SendTootService : Service(), Injectable {
+class SendStatusService : Service(), Injectable {
@Inject
lateinit var mastodonApi: MastodonApi
@@ -50,18 +49,14 @@ class SendTootService : Service(), Injectable {
@Inject
lateinit var eventHub: EventHub
@Inject
- lateinit var database: AppDatabase
- @Inject
lateinit var draftHelper: DraftHelper
private val supervisorJob = SupervisorJob()
private val serviceScope = CoroutineScope(Dispatchers.Main + supervisorJob)
- private val tootsToSend = ConcurrentHashMap()
+ private val statusesToSend = ConcurrentHashMap()
private val sendCalls = ConcurrentHashMap>()
- private val timer = Timer()
-
private val notificationManager by lazy { getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager }
override fun onCreate() {
@@ -75,38 +70,38 @@ class SendTootService : Service(), Injectable {
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
- if (intent.hasExtra(KEY_TOOT)) {
- val tootToSend = intent.getParcelableExtra(KEY_TOOT)
- ?: throw IllegalStateException("SendTootService started without $KEY_TOOT extra")
+ if (intent.hasExtra(KEY_STATUS)) {
+ val statusToSend = intent.getParcelableExtra(KEY_STATUS)
+ ?: throw IllegalStateException("SendStatusService started without $KEY_STATUS extra")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- val channel = NotificationChannel(CHANNEL_ID, getString(R.string.send_toot_notification_channel_name), NotificationManager.IMPORTANCE_LOW)
+ val channel = NotificationChannel(CHANNEL_ID, getString(R.string.send_post_notification_channel_name), NotificationManager.IMPORTANCE_LOW)
notificationManager.createNotificationChannel(channel)
}
- var notificationText = tootToSend.warningText
+ var notificationText = statusToSend.warningText
if (notificationText.isBlank()) {
- notificationText = tootToSend.text
+ notificationText = statusToSend.text
}
val builder = NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notify)
- .setContentTitle(getString(R.string.send_toot_notification_title))
+ .setContentTitle(getString(R.string.send_post_notification_title))
.setContentText(notificationText)
.setProgress(1, 0, true)
.setOngoing(true)
- .setColor(ContextCompat.getColor(this, R.color.chinwag_green))
+ .setColor(ContextCompat.getColor(this, R.color.notification_color))
.addAction(0, getString(android.R.string.cancel), cancelSendingIntent(sendingNotificationId))
- if (tootsToSend.size == 0 || Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ if (statusesToSend.size == 0 || Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
ServiceCompat.stopForeground(this, ServiceCompat.STOP_FOREGROUND_DETACH)
startForeground(sendingNotificationId, builder.build())
} else {
notificationManager.notify(sendingNotificationId, builder.build())
}
- tootsToSend[sendingNotificationId] = tootToSend
- sendToot(sendingNotificationId--)
+ statusesToSend[sendingNotificationId] = statusToSend
+ sendStatus(sendingNotificationId--)
} else {
if (intent.hasExtra(KEY_CANCEL)) {
@@ -117,95 +112,95 @@ class SendTootService : Service(), Injectable {
return START_NOT_STICKY
}
- private fun sendToot(tootId: Int) {
+ private fun sendStatus(statusId: Int) {
- // when tootToSend == null, sending has been canceled
- val tootToSend = tootsToSend[tootId] ?: return
+ // when statusToSend == null, sending has been canceled
+ val statusToSend = statusesToSend[statusId] ?: return
// when account == null, user has logged out, cancel sending
- val account = accountManager.getAccountById(tootToSend.accountId)
+ val account = accountManager.getAccountById(statusToSend.accountId)
if (account == null) {
- tootsToSend.remove(tootId)
- notificationManager.cancel(tootId)
+ statusesToSend.remove(statusId)
+ notificationManager.cancel(statusId)
stopSelfWhenDone()
return
}
- tootToSend.retries++
+ statusToSend.retries++
val newStatus = NewStatus(
- tootToSend.text,
- tootToSend.warningText,
- tootToSend.inReplyToId,
- tootToSend.visibility,
- tootToSend.sensitive,
- tootToSend.mediaIds,
- tootToSend.scheduledAt,
- tootToSend.poll
+ statusToSend.text,
+ statusToSend.warningText,
+ statusToSend.inReplyToId,
+ statusToSend.visibility,
+ statusToSend.sensitive,
+ statusToSend.mediaIds,
+ statusToSend.scheduledAt,
+ statusToSend.poll
)
val sendCall = mastodonApi.createStatus(
"Bearer " + account.accessToken,
account.domain,
- tootToSend.idempotencyKey,
+ statusToSend.idempotencyKey,
newStatus
)
- sendCalls[tootId] = sendCall
+ sendCalls[statusId] = sendCall
val callback = object : Callback {
override fun onResponse(call: Call, response: Response) {
+ serviceScope.launch {
- val scheduled = !tootToSend.scheduledAt.isNullOrEmpty()
- tootsToSend.remove(tootId)
+ val scheduled = !statusToSend.scheduledAt.isNullOrEmpty()
+ statusesToSend.remove(statusId)
- if (response.isSuccessful) {
- // If the status was loaded from a draft, delete the draft and associated media files.
- if (tootToSend.draftId != 0) {
- serviceScope.launch {
- draftHelper.deleteDraftAndAttachments(tootToSend.draftId)
+ if (response.isSuccessful) {
+ // If the status was loaded from a draft, delete the draft and associated media files.
+ if (statusToSend.draftId != 0) {
+ draftHelper.deleteDraftAndAttachments(statusToSend.draftId)
}
- }
- if (scheduled) {
- response.body()?.let(::StatusScheduledEvent)?.let(eventHub::dispatch)
+ if (scheduled) {
+ response.body()?.let(::StatusScheduledEvent)?.let(eventHub::dispatch)
+ } else {
+ response.body()?.let(::StatusComposedEvent)?.let(eventHub::dispatch)
+ }
+
+ notificationManager.cancel(statusId)
} else {
- response.body()?.let(::StatusComposedEvent)?.let(eventHub::dispatch)
+ // the server refused to accept the status, save status & show error message
+ saveStatusToDrafts(statusToSend)
+
+ val builder = NotificationCompat.Builder(this@SendStatusService, CHANNEL_ID)
+ .setSmallIcon(R.drawable.ic_notify)
+ .setContentTitle(getString(R.string.send_post_notification_error_title))
+ .setContentText(getString(R.string.send_post_notification_saved_content))
+ .setColor(
+ ContextCompat.getColor(
+ this@SendStatusService,
+ R.color.notification_color
+ )
+ )
+
+ notificationManager.cancel(statusId)
+ notificationManager.notify(errorNotificationId--, builder.build())
}
-
- notificationManager.cancel(tootId)
- } else {
- // the server refused to accept the toot, save toot & show error message
- saveTootToDrafts(tootToSend)
-
- val builder = NotificationCompat.Builder(this@SendTootService, CHANNEL_ID)
- .setSmallIcon(R.drawable.ic_notify)
- .setContentTitle(getString(R.string.send_toot_notification_error_title))
- .setContentText(getString(R.string.send_toot_notification_saved_content))
- .setColor(ContextCompat.getColor(this@SendTootService, R.color.chinwag_green))
-
- notificationManager.cancel(tootId)
- notificationManager.notify(errorNotificationId--, builder.build())
+ stopSelfWhenDone()
}
-
- stopSelfWhenDone()
}
override fun onFailure(call: Call, t: Throwable) {
- var backoff = TimeUnit.SECONDS.toMillis(tootToSend.retries.toLong())
- if (backoff > MAX_RETRY_INTERVAL) {
- backoff = MAX_RETRY_INTERVAL
- }
+ serviceScope.launch {
+ var backoff = TimeUnit.SECONDS.toMillis(statusToSend.retries.toLong())
+ if (backoff > MAX_RETRY_INTERVAL) {
+ backoff = MAX_RETRY_INTERVAL
+ }
- timer.schedule(
- object : TimerTask() {
- override fun run() {
- sendToot(tootId)
- }
- },
- backoff
- )
+ delay(backoff)
+ sendStatus(statusId)
+ }
}
}
@@ -214,65 +209,52 @@ class SendTootService : Service(), Injectable {
private fun stopSelfWhenDone() {
- if (tootsToSend.isEmpty()) {
- ServiceCompat.stopForeground(this@SendTootService, ServiceCompat.STOP_FOREGROUND_REMOVE)
+ if (statusesToSend.isEmpty()) {
+ ServiceCompat.stopForeground(this@SendStatusService, ServiceCompat.STOP_FOREGROUND_REMOVE)
stopSelf()
}
}
- private fun cancelSending(tootId: Int) {
- val tootToCancel = tootsToSend.remove(tootId)
- if (tootToCancel != null) {
- val sendCall = sendCalls.remove(tootId)
+ private fun cancelSending(statusId: Int) = serviceScope.launch {
+ val statusToCancel = statusesToSend.remove(statusId)
+ if (statusToCancel != null) {
+ val sendCall = sendCalls.remove(statusId)
sendCall?.cancel()
- saveTootToDrafts(tootToCancel)
+ saveStatusToDrafts(statusToCancel)
- val builder = NotificationCompat.Builder(this@SendTootService, CHANNEL_ID)
+ val builder = NotificationCompat.Builder(this@SendStatusService, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notify)
- .setContentTitle(getString(R.string.send_toot_notification_cancel_title))
- .setContentText(getString(R.string.send_toot_notification_saved_content))
- .setColor(ContextCompat.getColor(this@SendTootService, R.color.chinwag_green))
+ .setContentTitle(getString(R.string.send_post_notification_cancel_title))
+ .setContentText(getString(R.string.send_post_notification_saved_content))
+ .setColor(ContextCompat.getColor(this@SendStatusService, R.color.notification_color))
- notificationManager.notify(tootId, builder.build())
+ notificationManager.notify(statusId, builder.build())
- timer.schedule(
- object : TimerTask() {
- override fun run() {
- notificationManager.cancel(tootId)
- stopSelfWhenDone()
- }
- },
- 5000
- )
+ delay(5000)
}
}
- private fun saveTootToDrafts(toot: TootToSend) {
- serviceScope.launch {
- draftHelper.saveDraft(
- draftId = toot.draftId,
- accountId = toot.accountId,
- inReplyToId = toot.inReplyToId,
- content = toot.text,
- contentWarning = toot.warningText,
- sensitive = toot.sensitive,
- visibility = Status.Visibility.byString(toot.visibility),
- mediaUris = toot.mediaUris,
- mediaDescriptions = toot.mediaDescriptions,
- poll = toot.poll,
- failedToSend = true
- )
- }
+ private suspend fun saveStatusToDrafts(status: StatusToSend) {
+ draftHelper.saveDraft(
+ draftId = status.draftId,
+ accountId = status.accountId,
+ inReplyToId = status.inReplyToId,
+ content = status.text,
+ contentWarning = status.warningText,
+ sensitive = status.sensitive,
+ visibility = Status.Visibility.byString(status.visibility),
+ mediaUris = status.mediaUris,
+ mediaDescriptions = status.mediaDescriptions,
+ poll = status.poll,
+ failedToSend = true
+ )
}
- private fun cancelSendingIntent(tootId: Int): PendingIntent {
-
- val intent = Intent(this, SendTootService::class.java)
-
- intent.putExtra(KEY_CANCEL, tootId)
-
- return PendingIntent.getService(this, tootId, intent, PendingIntent.FLAG_UPDATE_CURRENT)
+ private fun cancelSendingIntent(statusId: Int): PendingIntent {
+ val intent = Intent(this, SendStatusService::class.java)
+ intent.putExtra(KEY_CANCEL, statusId)
+ return PendingIntent.getService(this, statusId, intent, NotificationHelper.pendingIntentFlags(false))
}
override fun onDestroy() {
@@ -282,7 +264,7 @@ class SendTootService : Service(), Injectable {
companion object {
- private const val KEY_TOOT = "toot"
+ private const val KEY_STATUS = "status"
private const val KEY_CANCEL = "cancel_id"
private const val CHANNEL_ID = "send_toots"
@@ -292,21 +274,21 @@ class SendTootService : Service(), Injectable {
private var errorNotificationId = Int.MIN_VALUE // use even more negative ids to not clash with other notis
@JvmStatic
- fun sendTootIntent(
+ fun sendStatusIntent(
context: Context,
- tootToSend: TootToSend
+ statusToSend: StatusToSend
): Intent {
- val intent = Intent(context, SendTootService::class.java)
- intent.putExtra(KEY_TOOT, tootToSend)
+ val intent = Intent(context, SendStatusService::class.java)
+ intent.putExtra(KEY_STATUS, statusToSend)
- if (tootToSend.mediaUris.isNotEmpty()) {
+ if (statusToSend.mediaUris.isNotEmpty()) {
// forward uri permissions
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
val uriClip = ClipData(
- ClipDescription("Toot Media", arrayOf("image/*", "video/*")),
- ClipData.Item(tootToSend.mediaUris[0])
+ ClipDescription("Status Media", arrayOf("image/*", "video/*")),
+ ClipData.Item(statusToSend.mediaUris[0])
)
- tootToSend.mediaUris
+ statusToSend.mediaUris
.drop(1)
.forEach { mediaUri ->
uriClip.addItem(ClipData.Item(mediaUri))
@@ -321,7 +303,7 @@ class SendTootService : Service(), Injectable {
}
@Parcelize
-data class TootToSend(
+data class StatusToSend(
val text: String,
val warningText: String,
val visibility: String,
diff --git a/app/src/main/java/com/keylesspalace/tusky/service/ServiceClient.kt b/app/src/main/java/com/keylesspalace/tusky/service/ServiceClient.kt
index 9ac5adac..d9d08ff7 100644
--- a/app/src/main/java/com/keylesspalace/tusky/service/ServiceClient.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/service/ServiceClient.kt
@@ -20,8 +20,8 @@ import androidx.core.content.ContextCompat
import javax.inject.Inject
class ServiceClient @Inject constructor(private val context: Context) {
- fun sendToot(tootToSend: TootToSend) {
- val intent = SendTootService.sendTootIntent(context, tootToSend)
+ fun sendToot(tootToSend: StatusToSend) {
+ val intent = SendStatusService.sendStatusIntent(context, tootToSend)
ContextCompat.startForegroundService(context, intent)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/util/EmojiCompatFont.kt b/app/src/main/java/com/keylesspalace/tusky/util/EmojiCompatFont.kt
index f513feee..385be6c1 100644
--- a/app/src/main/java/com/keylesspalace/tusky/util/EmojiCompatFont.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/util/EmojiCompatFont.kt
@@ -280,7 +280,7 @@ class EmojiCompatFont(
R.string.caption_blobmoji,
R.drawable.ic_blobmoji,
"https://tusky.app/hosted/emoji/BlobmojiCompat.ttf",
- "12.0.0"
+ "14.0.1"
)
val TWEMOJI = EmojiCompatFont(
"Twemoji",
@@ -288,7 +288,7 @@ class EmojiCompatFont(
R.string.caption_twemoji,
R.drawable.ic_twemoji,
"https://tusky.app/hosted/emoji/TwemojiCompat.ttf",
- "12.0.0"
+ "14.0.0"
)
val NOTOEMOJI = EmojiCompatFont(
"NotoEmoji",
@@ -296,7 +296,7 @@ class EmojiCompatFont(
R.string.caption_notoemoji,
R.drawable.ic_notoemoji,
"https://tusky.app/hosted/emoji/NotoEmojiCompat.ttf",
- "11.0.0"
+ "14.0.0"
)
/**
diff --git a/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.java b/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.java
deleted file mode 100644
index 4969c9ad..00000000
--- a/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/* Copyright 2017 Andrew Dawson
- *
- * 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 . */
-
-package com.keylesspalace.tusky.util;
-
-import android.content.ActivityNotFoundException;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.method.LinkMovementMethod;
-import android.text.style.ClickableSpan;
-import android.text.style.URLSpan;
-import android.util.Log;
-import android.view.View;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.browser.customtabs.CustomTabColorSchemeParams;
-import androidx.browser.customtabs.CustomTabsIntent;
-import androidx.preference.PreferenceManager;
-
-import com.keylesspalace.tusky.R;
-import com.keylesspalace.tusky.entity.Status;
-import com.keylesspalace.tusky.interfaces.LinkListener;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.List;
-
-public class LinkHelper {
- public static String getDomain(String urlString) {
- URI uri;
- try {
- uri = new URI(urlString);
- } catch (URISyntaxException e) {
- return "";
- }
- String host = uri.getHost();
- if(host == null) {
- return "";
- } else if (host.startsWith("www.")) {
- return host.substring(4);
- } else {
- return host;
- }
- }
-
- /**
- * Finds links, mentions, and hashtags in a piece of text and makes them clickable, associating
- * them with callbacks to notify when they're clicked.
- *
- * @param view the returned text will be put in
- * @param content containing text with mentions, links, or hashtags
- * @param mentions any '@' mentions which are known to be in the content
- * @param listener to notify about particular spans that are clicked
- */
- public static void setClickableText(TextView view, CharSequence content,
- @Nullable List mentions, final LinkListener listener) {
- SpannableStringBuilder builder = SpannableStringBuilder.valueOf(content);
- URLSpan[] urlSpans = builder.getSpans(0, content.length(), URLSpan.class);
- for (URLSpan span : urlSpans) {
- int start = builder.getSpanStart(span);
- int end = builder.getSpanEnd(span);
- int flags = builder.getSpanFlags(span);
- CharSequence text = builder.subSequence(start, end);
- ClickableSpan customSpan = null;
-
- if (text.charAt(0) == '#') {
- final String tag = text.subSequence(1, text.length()).toString();
- customSpan = new NoUnderlineURLSpan(span.getURL()) {
- @Override
- public void onClick(@NonNull View widget) { listener.onViewTag(tag); }
- };
- } else if (text.charAt(0) == '@' && mentions != null && mentions.size() > 0) {
- // https://github.com/tuskyapp/Tusky/pull/2339
- String id = null;
- for (Status.Mention mention : mentions) {
- if (mention.getUrl().equals(span.getURL())) {
- id = mention.getId();
- break;
- }
- }
- if (id != null) {
- final String accountId = id;
- customSpan = new NoUnderlineURLSpan(span.getURL()) {
- @Override
- public void onClick(@NonNull View widget) { listener.onViewAccount(accountId); }
- };
- }
- }
-
- if (customSpan == null) {
- customSpan = new NoUnderlineURLSpan(span.getURL()) {
- @Override
- public void onClick(@NonNull View widget) {
- listener.onViewUrl(getURL());
- }
- };
- }
- builder.removeSpan(span);
- builder.setSpan(customSpan, start, end, flags);
-
- /* Add zero-width space after links in end of line to fix its too large hitbox.
- * See also : https://github.com/tuskyapp/Tusky/issues/846
- * https://github.com/tuskyapp/Tusky/pull/916 */
- if (end >= builder.length() ||
- builder.subSequence(end, end + 1).toString().equals("\n")){
- builder.insert(end, "\u200B");
- }
- }
-
- view.setText(builder);
- view.setMovementMethod(LinkMovementMethod.getInstance());
- }
-
- /**
- * Put mentions in a piece of text and makes them clickable, associating them with callbacks to
- * notify when they're clicked.
- *
- * @param view the returned text will be put in
- * @param mentions any '@' mentions which are known to be in the content
- * @param listener to notify about particular spans that are clicked
- */
- public static void setClickableMentions(
- TextView view, @Nullable List mentions, final LinkListener listener) {
- if (mentions == null || mentions.size() == 0) {
- view.setText(null);
- return;
- }
- SpannableStringBuilder builder = new SpannableStringBuilder();
- int start = 0;
- int end = 0;
- int flags;
- boolean firstMention = true;
- for (Status.Mention mention : mentions) {
- String accountUsername = mention.getLocalUsername();
- final String accountId = mention.getId();
- ClickableSpan customSpan = new NoUnderlineURLSpan(mention.getUrl()) {
- @Override
- public void onClick(@NonNull View widget) { listener.onViewAccount(accountId); }
- };
-
- end += 1 + accountUsername.length(); // length of @ + username
- flags = builder.getSpanFlags(customSpan);
- if (firstMention) {
- firstMention = false;
- } else {
- builder.append(" ");
- start += 1;
- end += 1;
- }
- builder.append("@");
- builder.append(accountUsername);
- builder.setSpan(customSpan, start, end, flags);
- builder.append("\u200B"); // same reasonning than in setClickableText
- end += 1; // shift position to take the previous character into account
- start = end;
- }
- view.setText(builder);
- view.setMovementMethod(LinkMovementMethod.getInstance());
- }
-
- public static CharSequence createClickableText(String text, String link) {
- URLSpan span = new NoUnderlineURLSpan(link);
-
- SpannableStringBuilder clickableText = new SpannableStringBuilder(text);
- clickableText.setSpan(span, 0, text.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
- return clickableText;
- }
-
- /**
- * Opens a link, depending on the settings, either in the browser or in a custom tab
- *
- * @param url a string containing the url to open
- * @param context context
- */
- public static void openLink(String url, Context context) {
- Uri uri = Uri.parse(url).normalizeScheme();
-
- boolean useCustomTabs = PreferenceManager.getDefaultSharedPreferences(context)
- .getBoolean("customTabs", false);
- if (useCustomTabs) {
- openLinkInCustomTab(uri, context);
- } else {
- openLinkInBrowser(uri, context);
- }
- }
-
- /**
- * opens a link in the browser via Intent.ACTION_VIEW
- *
- * @param uri the uri to open
- * @param context context
- */
- public static void openLinkInBrowser(Uri uri, Context context) {
- Intent intent = new Intent(Intent.ACTION_VIEW, uri);
- try {
- context.startActivity(intent);
- } catch (ActivityNotFoundException e) {
- Log.w("LinkHelper", "Actvity was not found for intent, " + intent);
- }
- }
-
- /**
- * tries to open a link in a custom tab
- * falls back to browser if not possible
- *
- * @param uri the uri to open
- * @param context context
- */
- public static void openLinkInCustomTab(Uri uri, Context context) {
- int toolbarColor = ThemeUtils.getColor(context, R.attr.colorSurface);
- int navigationbarColor = ThemeUtils.getColor(context, android.R.attr.navigationBarColor);
- int navigationbarDividerColor = ThemeUtils.getColor(context, R.attr.dividerColor);
-
- CustomTabColorSchemeParams colorSchemeParams = new CustomTabColorSchemeParams.Builder()
- .setToolbarColor(toolbarColor)
- .setNavigationBarColor(navigationbarColor)
- .setNavigationBarDividerColor(navigationbarDividerColor)
- .build();
-
- CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
- .setDefaultColorSchemeParams(colorSchemeParams)
- .setShowTitle(true)
- .build();
-
- try {
- customTabsIntent.launchUrl(context, uri);
- } catch (ActivityNotFoundException e) {
- Log.w("LinkHelper", "Activity was not found for intent " + customTabsIntent);
- openLinkInBrowser(uri, context);
- }
-
- }
-
-}
diff --git a/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt b/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt
new file mode 100644
index 00000000..1abbab14
--- /dev/null
+++ b/app/src/main/java/com/keylesspalace/tusky/util/LinkHelper.kt
@@ -0,0 +1,240 @@
+/* Copyright 2017 Andrew Dawson
+ *
+ * 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 . */
+@file:JvmName("LinkHelper")
+
+package com.keylesspalace.tusky.util
+
+import android.content.ActivityNotFoundException
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.text.SpannableStringBuilder
+import android.text.Spanned
+import android.text.method.LinkMovementMethod
+import android.text.style.ClickableSpan
+import android.text.style.URLSpan
+import android.util.Log
+import android.view.View
+import android.widget.TextView
+import androidx.annotation.VisibleForTesting
+import androidx.browser.customtabs.CustomTabColorSchemeParams
+import androidx.browser.customtabs.CustomTabsIntent
+import androidx.core.net.toUri
+import androidx.preference.PreferenceManager
+import com.keylesspalace.tusky.R
+import com.keylesspalace.tusky.entity.HashTag
+import com.keylesspalace.tusky.entity.Status.Mention
+import com.keylesspalace.tusky.interfaces.LinkListener
+
+fun getDomain(urlString: String?): String {
+ val host = urlString?.toUri()?.host
+ return when {
+ host == null -> ""
+ host.startsWith("www.") -> host.substring(4)
+ else -> host
+ }
+}
+
+/**
+ * Finds links, mentions, and hashtags in a piece of text and makes them clickable, associating
+ * them with callbacks to notify when they're clicked.
+ *
+ * @param view the returned text will be put in
+ * @param content containing text with mentions, links, or hashtags
+ * @param mentions any '@' mentions which are known to be in the content
+ * @param listener to notify about particular spans that are clicked
+ */
+fun setClickableText(view: TextView, content: CharSequence, mentions: List, tags: List?, listener: LinkListener) {
+ view.text = SpannableStringBuilder.valueOf(content).apply {
+ getSpans(0, content.length, URLSpan::class.java).forEach {
+ setClickableText(it, this, mentions, tags, listener)
+ }
+ }
+ view.movementMethod = LinkMovementMethod.getInstance()
+}
+
+@VisibleForTesting
+fun setClickableText(
+ span: URLSpan,
+ builder: SpannableStringBuilder,
+ mentions: List,
+ tags: List?,
+ listener: LinkListener
+) = builder.apply {
+ val start = getSpanStart(span)
+ val end = getSpanEnd(span)
+ val flags = getSpanFlags(span)
+ val text = subSequence(start, end)
+
+ val customSpan = when (text[0]) {
+ '#' -> getCustomSpanForTag(text, tags, span, listener)
+ '@' -> getCustomSpanForMention(mentions, span, listener)
+ else -> null
+ } ?: object : NoUnderlineURLSpan(span.url) {
+ override fun onClick(view: View) = listener.onViewUrl(url)
+ }
+
+ removeSpan(span)
+ setSpan(customSpan, start, end, flags)
+
+ /* Add zero-width space after links in end of line to fix its too large hitbox.
+ * See also : https://github.com/tuskyapp/Tusky/issues/846
+ * https://github.com/tuskyapp/Tusky/pull/916 */
+ if (end >= length || subSequence(end, end + 1).toString() == "\n") {
+ insert(end, "\u200B")
+ }
+}
+
+@VisibleForTesting
+fun getTagName(text: CharSequence, tags: List?): String? {
+ val scrapedName = text.subSequence(1, text.length).toString()
+ return when (tags) {
+ null -> scrapedName
+ else -> tags.firstOrNull { it.name.equals(scrapedName, true) }?.name
+ }
+}
+
+private fun getCustomSpanForTag(text: CharSequence, tags: List?, span: URLSpan, listener: LinkListener): ClickableSpan? {
+ return getTagName(text, tags)?.let {
+ object : NoUnderlineURLSpan(span.url) {
+ override fun onClick(view: View) = listener.onViewTag(it)
+ }
+ }
+}
+
+private fun getCustomSpanForMention(mentions: List, span: URLSpan, listener: LinkListener): ClickableSpan? {
+ // https://github.com/tuskyapp/Tusky/pull/2339
+ return mentions.firstOrNull { it.url == span.url }?.let {
+ getCustomSpanForMentionUrl(span.url, it.id, listener)
+ }
+}
+
+private fun getCustomSpanForMentionUrl(url: String, mentionId: String, listener: LinkListener): ClickableSpan {
+ return object : NoUnderlineURLSpan(url) {
+ override fun onClick(view: View) = listener.onViewAccount(mentionId)
+ }
+}
+
+/**
+ * Put mentions in a piece of text and makes them clickable, associating them with callbacks to
+ * notify when they're clicked.
+ *
+ * @param view the returned text will be put in
+ * @param mentions any '@' mentions which are known to be in the content
+ * @param listener to notify about particular spans that are clicked
+ */
+fun setClickableMentions(view: TextView, mentions: List?, listener: LinkListener) {
+ if (mentions?.isEmpty() != false) {
+ view.text = null
+ return
+ }
+
+ view.text = SpannableStringBuilder().apply {
+ var start = 0
+ var end = 0
+ var flags: Int
+ var firstMention = true
+
+ for (mention in mentions) {
+ val customSpan = getCustomSpanForMentionUrl(mention.url, mention.id, listener)
+ end += 1 + mention.localUsername.length // length of @ + username
+ flags = getSpanFlags(customSpan)
+ if (firstMention) {
+ firstMention = false
+ } else {
+ append(" ")
+ start += 1
+ end += 1
+ }
+
+ append("@")
+ append(mention.localUsername)
+ setSpan(customSpan, start, end, flags)
+ append("\u200B") // same reasoning as in setClickableText
+ end += 1 // shift position to take the previous character into account
+ start = end
+ }
+ }
+ view.movementMethod = LinkMovementMethod.getInstance()
+}
+
+fun createClickableText(text: String, link: String): CharSequence {
+ return SpannableStringBuilder(text).apply {
+ setSpan(NoUnderlineURLSpan(link), 0, text.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
+ }
+}
+
+/**
+ * Opens a link, depending on the settings, either in the browser or in a custom tab
+ *
+ * @receiver the Context to open the link from
+ * @param url a string containing the url to open
+ */
+fun Context.openLink(url: String) {
+ val uri = url.toUri().normalizeScheme()
+ val useCustomTabs = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("customTabs", false)
+
+ if (useCustomTabs) {
+ openLinkInCustomTab(uri, this)
+ } else {
+ openLinkInBrowser(uri, this)
+ }
+}
+
+/**
+ * opens a link in the browser via Intent.ACTION_VIEW
+ *
+ * @param uri the uri to open
+ * @param context context
+ */
+private fun openLinkInBrowser(uri: Uri?, context: Context) {
+ val intent = Intent(Intent.ACTION_VIEW, uri)
+ try {
+ context.startActivity(intent)
+ } catch (e: ActivityNotFoundException) {
+ Log.w(TAG, "Actvity was not found for intent, $intent")
+ }
+}
+
+/**
+ * tries to open a link in a custom tab
+ * falls back to browser if not possible
+ *
+ * @param uri the uri to open
+ * @param context context
+ */
+private fun openLinkInCustomTab(uri: Uri, context: Context) {
+ val toolbarColor = ThemeUtils.getColor(context, R.attr.colorSurface)
+ val navigationbarColor = ThemeUtils.getColor(context, android.R.attr.navigationBarColor)
+ val navigationbarDividerColor = ThemeUtils.getColor(context, R.attr.dividerColor)
+ val colorSchemeParams = CustomTabColorSchemeParams.Builder()
+ .setToolbarColor(toolbarColor)
+ .setNavigationBarColor(navigationbarColor)
+ .setNavigationBarDividerColor(navigationbarDividerColor)
+ .build()
+ val customTabsIntent = CustomTabsIntent.Builder()
+ .setDefaultColorSchemeParams(colorSchemeParams)
+ .setShowTitle(true)
+ .build()
+
+ try {
+ customTabsIntent.launchUrl(context, uri)
+ } catch (e: ActivityNotFoundException) {
+ Log.w(TAG, "Activity was not found for intent $customTabsIntent")
+ openLinkInBrowser(uri, context)
+ }
+}
+
+private const val TAG = "LinkHelper"
diff --git a/app/src/main/java/com/keylesspalace/tusky/util/ListStatusAccessibilityDelegate.kt b/app/src/main/java/com/keylesspalace/tusky/util/ListStatusAccessibilityDelegate.kt
index 879fccc3..501f9056 100644
--- a/app/src/main/java/com/keylesspalace/tusky/util/ListStatusAccessibilityDelegate.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/util/ListStatusAccessibilityDelegate.kt
@@ -182,7 +182,7 @@ class ListStatusAccessibilityDelegate(
android.R.layout.simple_list_item_1,
textLinks
)
- ) { _, which -> LinkHelper.openLink(links[which].link, host.context) }
+ ) { _, which -> host.context.openLink(links[which].link) }
.show()
.let { forceFocus(it.listView) }
}
@@ -270,12 +270,12 @@ class ListStatusAccessibilityDelegate(
private val collapseCwAction = AccessibilityActionCompat(
R.id.action_collapse_cw,
- context.getString(R.string.status_content_warning_show_less)
+ context.getString(R.string.post_content_warning_show_less)
)
private val expandCwAction = AccessibilityActionCompat(
R.id.action_expand_cw,
- context.getString(R.string.status_content_warning_show_more)
+ context.getString(R.string.post_content_warning_show_more)
)
private val replyAction = AccessibilityActionCompat(
diff --git a/app/src/main/java/com/keylesspalace/tusky/util/NoUnderlineURLSpan.kt b/app/src/main/java/com/keylesspalace/tusky/util/NoUnderlineURLSpan.kt
index a9b56b89..779a7e6e 100644
--- a/app/src/main/java/com/keylesspalace/tusky/util/NoUnderlineURLSpan.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/util/NoUnderlineURLSpan.kt
@@ -29,6 +29,6 @@ open class NoUnderlineURLSpan(
}
override fun onClick(view: View) {
- LinkHelper.openLink(url, view.context)
+ view.context.openLink(url)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/util/StatusViewHelper.kt b/app/src/main/java/com/keylesspalace/tusky/util/StatusViewHelper.kt
index f2e48f4a..60ac73f4 100644
--- a/app/src/main/java/com/keylesspalace/tusky/util/StatusViewHelper.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/util/StatusViewHelper.kt
@@ -176,9 +176,9 @@ class StatusViewHelper(private val itemView: View) {
sensitiveMediaShow.visibility = View.GONE
} else {
sensitiveMediaWarning.text = if (sensitive) {
- context.getString(R.string.status_sensitive_media_title)
+ context.getString(R.string.post_sensitive_media_title)
} else {
- context.getString(R.string.status_media_hidden_title)
+ context.getString(R.string.post_media_hidden_title)
}
sensitiveMediaWarning.visibility = if (showingContent) View.GONE else View.VISIBLE
@@ -225,7 +225,7 @@ class StatusViewHelper(private val itemView: View) {
val context = mediaLabel.context
var labelText = getLabelTypeText(context, attachments[0].type)
if (sensitive) {
- val sensitiveText = context.getString(R.string.status_sensitive_media_title)
+ val sensitiveText = context.getString(R.string.post_sensitive_media_title)
labelText += String.format(" (%s)", sensitiveText)
}
mediaLabel.text = labelText
@@ -239,10 +239,10 @@ class StatusViewHelper(private val itemView: View) {
private fun getLabelTypeText(context: Context, type: Attachment.Type): String {
return when (type) {
- Attachment.Type.IMAGE -> context.getString(R.string.status_media_images)
- Attachment.Type.GIFV, Attachment.Type.VIDEO -> context.getString(R.string.status_media_video)
- Attachment.Type.AUDIO -> context.getString(R.string.status_media_audio)
- else -> context.getString(R.string.status_media_attachments)
+ Attachment.Type.IMAGE -> context.getString(R.string.post_media_images)
+ Attachment.Type.GIFV, Attachment.Type.VIDEO -> context.getString(R.string.post_media_video)
+ Attachment.Type.AUDIO -> context.getString(R.string.post_media_audio)
+ else -> context.getString(R.string.post_media_attachments)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/util/StringUtils.kt b/app/src/main/java/com/keylesspalace/tusky/util/StringUtils.kt
index 57b87f92..7a4a3659 100644
--- a/app/src/main/java/com/keylesspalace/tusky/util/StringUtils.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/util/StringUtils.kt
@@ -16,44 +16,6 @@ fun randomAlphanumericString(count: Int): String {
return String(chars)
}
-// We sort statuses by ID. Something we need to invent some ID for placeholder.
-// Not sure if inc()/dec() should be made `operator` or not
-
-/**
- * "Increment" string so that during sorting it's bigger than [this].
- */
-fun String.inc(): String {
- // We assume that we will stay in the safe range for now
- val builder = this.toCharArray()
- builder[lastIndex] = builder[lastIndex].inc()
- return String(builder)
-}
-
-/**
- * "Decrement" string so that during sorting it's smaller than [this].
- */
-fun String.dec(): String {
- if (this.isEmpty()) return this
-
- val builder = this.toCharArray()
- var i = builder.lastIndex
- while (i > 0) {
- if (builder[i] > '0') {
- builder[i] = builder[i].dec()
- return String(builder)
- } else {
- builder[i] = 'z'
- }
- i--
- }
- return if (builder[0] > '1') {
- builder[0] = builder[0].dec()
- String(builder)
- } else {
- String(builder.copyOfRange(1, builder.size))
- }
-}
-
/**
* A < B (strictly) by length and then by content.
* Examples:
@@ -71,13 +33,17 @@ fun String.isLessThan(other: String): Boolean {
}
}
-fun String.idCompareTo(other: String): Int {
- return when {
- this === other -> 0
- this.length < other.length -> -1
- this.length > other.length -> 1
- else -> this.compareTo(other)
- }
+/**
+ * A <= B (strictly) by length and then by content.
+ * Examples:
+ * "abc" <= "bcd"
+ * "ab" <= "abc"
+ * "cb" <= "abc"
+ * "ab" <= "ab"
+ * not: "abc" > "cb"
+ */
+fun String.isLessThanOrEqual(other: String): Boolean {
+ return this == other || isLessThan(other)
}
fun Spanned.trimTrailingWhitespace(): Spanned {
diff --git a/app/src/main/java/com/keylesspalace/tusky/view/LicenseCard.kt b/app/src/main/java/com/keylesspalace/tusky/view/LicenseCard.kt
index 116f0170..59b35924 100644
--- a/app/src/main/java/com/keylesspalace/tusky/view/LicenseCard.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/view/LicenseCard.kt
@@ -21,9 +21,9 @@ import android.view.LayoutInflater
import com.google.android.material.card.MaterialCardView
import com.keylesspalace.tusky.R
import com.keylesspalace.tusky.databinding.CardLicenseBinding
-import com.keylesspalace.tusky.util.LinkHelper
import com.keylesspalace.tusky.util.ThemeUtils
import com.keylesspalace.tusky.util.hide
+import com.keylesspalace.tusky.util.openLink
class LicenseCard
@JvmOverloads constructor(
@@ -50,7 +50,7 @@ class LicenseCard
binding.licenseCardLink.hide()
} else {
binding.licenseCardLink.text = link
- setOnClickListener { LinkHelper.openLink(link, context) }
+ setOnClickListener { context.openLink(link) }
}
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/viewdata/NotificationViewData.java b/app/src/main/java/com/keylesspalace/tusky/viewdata/NotificationViewData.java
index 409b858d..75f90ca4 100644
--- a/app/src/main/java/com/keylesspalace/tusky/viewdata/NotificationViewData.java
+++ b/app/src/main/java/com/keylesspalace/tusky/viewdata/NotificationViewData.java
@@ -19,6 +19,7 @@ import androidx.annotation.Nullable;
import com.keylesspalace.tusky.entity.Account;
import com.keylesspalace.tusky.entity.Notification;
+import com.keylesspalace.tusky.entity.TimelineAccount;
import java.util.Objects;
@@ -44,11 +45,11 @@ public abstract class NotificationViewData {
public static final class Concrete extends NotificationViewData {
private final Notification.Type type;
private final String id;
- private final Account account;
+ private final TimelineAccount account;
@Nullable
private final StatusViewData.Concrete statusViewData;
- public Concrete(Notification.Type type, String id, Account account,
+ public Concrete(Notification.Type type, String id, TimelineAccount account,
@Nullable StatusViewData.Concrete statusViewData) {
this.type = type;
this.id = id;
@@ -64,7 +65,7 @@ public abstract class NotificationViewData {
return id;
}
- public Account getAccount() {
+ public TimelineAccount getAccount() {
return account;
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/viewdata/StatusViewData.kt b/app/src/main/java/com/keylesspalace/tusky/viewdata/StatusViewData.kt
index 92675eb6..d8f27157 100644
--- a/app/src/main/java/com/keylesspalace/tusky/viewdata/StatusViewData.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/viewdata/StatusViewData.kt
@@ -22,12 +22,11 @@ import com.keylesspalace.tusky.entity.Status
/**
* Created by charlag on 11/07/2017.
*
- *
* Class to represent data required to display either a notification or a placeholder.
* It is either a [StatusViewData.Concrete] or a [StatusViewData.Placeholder].
*/
-sealed class StatusViewData private constructor() {
- abstract val viewDataId: Long
+sealed class StatusViewData {
+ abstract val id: String
data class Concrete(
val status: Status,
@@ -49,8 +48,8 @@ sealed class StatusViewData private constructor() {
/** Whether the status meets the requirement to be collapse */
val isCollapsed: Boolean,
) : StatusViewData() {
- override val viewDataId: Long
- get() = status.id.hashCode().toLong()
+ override val id: String
+ get() = status.id
val content: Spanned
val spoilerText: String
@@ -116,9 +115,6 @@ sealed class StatusViewData private constructor() {
}
}
- val id: String
- get() = status.id
-
/** Helper for Java */
fun copyWithStatus(status: Status): Concrete {
return copy(status = status)
@@ -140,10 +136,10 @@ sealed class StatusViewData private constructor() {
}
}
- data class Placeholder(val id: String, val isLoading: Boolean) : StatusViewData() {
- override val viewDataId: Long
- get() = id.hashCode().toLong()
- }
+ data class Placeholder(
+ override val id: String,
+ val isLoading: Boolean
+ ) : StatusViewData()
fun asStatusOrNull() = this as? Concrete
diff --git a/app/src/main/java/com/keylesspalace/tusky/viewmodel/AccountsInListViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/viewmodel/AccountsInListViewModel.kt
index b02c2ac0..fd989376 100644
--- a/app/src/main/java/com/keylesspalace/tusky/viewmodel/AccountsInListViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/viewmodel/AccountsInListViewModel.kt
@@ -17,7 +17,7 @@
package com.keylesspalace.tusky.viewmodel
import android.util.Log
-import com.keylesspalace.tusky.entity.Account
+import com.keylesspalace.tusky.entity.TimelineAccount
import com.keylesspalace.tusky.network.MastodonApi
import com.keylesspalace.tusky.util.Either
import com.keylesspalace.tusky.util.Either.Left
@@ -28,7 +28,7 @@ import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.subjects.BehaviorSubject
import javax.inject.Inject
-data class State(val accounts: Either>, val searchResult: List?)
+data class State(val accounts: Either>, val searchResult: List?)
class AccountsInListViewModel @Inject constructor(private val api: MastodonApi) : RxAwareViewModel() {
@@ -49,7 +49,7 @@ class AccountsInListViewModel @Inject constructor(private val api: MastodonApi)
}
}
- fun addAccountToList(listId: String, account: Account) {
+ fun addAccountToList(listId: String, account: TimelineAccount) {
api.addCountToList(listId, listOf(account.id))
.subscribe(
{
diff --git a/app/src/main/java/com/keylesspalace/tusky/viewmodel/EditProfileViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/viewmodel/EditProfileViewModel.kt
index a51fea0d..f3539f8d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/viewmodel/EditProfileViewModel.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/viewmodel/EditProfileViewModel.kt
@@ -15,15 +15,11 @@
package com.keylesspalace.tusky.viewmodel
-import android.content.Context
-import android.graphics.Bitmap
+import android.app.Application
import android.net.Uri
-import android.util.Log
+import androidx.core.net.toUri
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
-import com.keylesspalace.tusky.EditProfileActivity.Companion.AVATAR_SIZE
-import com.keylesspalace.tusky.EditProfileActivity.Companion.HEADER_HEIGHT
-import com.keylesspalace.tusky.EditProfileActivity.Companion.HEADER_WIDTH
import com.keylesspalace.tusky.appstore.EventHub
import com.keylesspalace.tusky.appstore.ProfileEditedEvent
import com.keylesspalace.tusky.entity.Account
@@ -31,16 +27,12 @@ import com.keylesspalace.tusky.entity.Instance
import com.keylesspalace.tusky.entity.StringField
import com.keylesspalace.tusky.network.MastodonApi
import com.keylesspalace.tusky.util.Error
-import com.keylesspalace.tusky.util.IOUtils
import com.keylesspalace.tusky.util.Loading
import com.keylesspalace.tusky.util.Resource
import com.keylesspalace.tusky.util.Success
-import com.keylesspalace.tusky.util.getSampledBitmap
import com.keylesspalace.tusky.util.randomAlphanumericString
-import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.disposables.CompositeDisposable
import io.reactivex.rxjava3.kotlin.addTo
-import io.reactivex.rxjava3.schedulers.Schedulers
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
@@ -52,30 +44,26 @@ import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import java.io.File
-import java.io.FileNotFoundException
-import java.io.FileOutputStream
-import java.io.OutputStream
import javax.inject.Inject
private const val HEADER_FILE_NAME = "header.png"
private const val AVATAR_FILE_NAME = "avatar.png"
-private const val TAG = "EditProfileViewModel"
-
class EditProfileViewModel @Inject constructor(
private val mastodonApi: MastodonApi,
- private val eventHub: EventHub
+ private val eventHub: EventHub,
+ private val application: Application
) : ViewModel() {
val profileData = MutableLiveData>()
- val avatarData = MutableLiveData>()
- val headerData = MutableLiveData>()
+ val avatarData = MutableLiveData()
+ val headerData = MutableLiveData()
val saveData = MutableLiveData>()
val instanceData = MutableLiveData>()
private var oldProfileData: Account? = null
- private val disposeables = CompositeDisposable()
+ private val disposables = CompositeDisposable()
fun obtainProfile() {
if (profileData.value == null || profileData.value is Error) {
@@ -92,70 +80,30 @@ class EditProfileViewModel @Inject constructor(
profileData.postValue(Error())
}
)
- .addTo(disposeables)
+ .addTo(disposables)
}
}
- fun newAvatar(uri: Uri, context: Context) {
- val cacheFile = getCacheFileForName(context, AVATAR_FILE_NAME)
+ fun getAvatarUri() = getCacheFileForName(AVATAR_FILE_NAME).toUri()
- resizeImage(uri, context, AVATAR_SIZE, AVATAR_SIZE, cacheFile, avatarData)
+ fun getHeaderUri() = getCacheFileForName(HEADER_FILE_NAME).toUri()
+
+ fun newAvatarPicked() {
+ avatarData.value = getAvatarUri()
}
- fun newHeader(uri: Uri, context: Context) {
- val cacheFile = getCacheFileForName(context, HEADER_FILE_NAME)
-
- resizeImage(uri, context, HEADER_WIDTH, HEADER_HEIGHT, cacheFile, headerData)
+ fun newHeaderPicked() {
+ headerData.value = getHeaderUri()
}
- private fun resizeImage(
- uri: Uri,
- context: Context,
- resizeWidth: Int,
- resizeHeight: Int,
- cacheFile: File,
- imageLiveData: MutableLiveData>
- ) {
-
- Single.fromCallable {
- val contentResolver = context.contentResolver
- val sourceBitmap = getSampledBitmap(contentResolver, uri, resizeWidth, resizeHeight)
-
- if (sourceBitmap == null) {
- throw Exception()
- }
-
- // dont upscale image if its smaller than the desired size
- val bitmap =
- if (sourceBitmap.width <= resizeWidth && sourceBitmap.height <= resizeHeight) {
- sourceBitmap
- } else {
- Bitmap.createScaledBitmap(sourceBitmap, resizeWidth, resizeHeight, true)
- }
-
- if (!saveBitmapToFile(bitmap, cacheFile)) {
- throw Exception()
- }
-
- bitmap
- }.subscribeOn(Schedulers.io())
- .subscribe(
- {
- imageLiveData.postValue(Success(it))
- },
- {
- imageLiveData.postValue(Error())
- }
- )
- .addTo(disposeables)
- }
-
- fun save(newDisplayName: String, newNote: String, newLocked: Boolean, newFields: List, context: Context) {
+ fun save(newDisplayName: String, newNote: String, newLocked: Boolean, newFields: List) {
if (saveData.value is Loading || profileData.value !is Success) {
return
}
+ saveData.value = Loading()
+
val displayName = if (oldProfileData?.displayName == newDisplayName) {
null
} else {
@@ -174,15 +122,15 @@ class EditProfileViewModel @Inject constructor(
newLocked.toString().toRequestBody(MultipartBody.FORM)
}
- val avatar = if (avatarData.value is Success && avatarData.value?.data != null) {
- val avatarBody = getCacheFileForName(context, AVATAR_FILE_NAME).asRequestBody("image/png".toMediaTypeOrNull())
+ val avatar = if (avatarData.value != null) {
+ val avatarBody = getCacheFileForName(AVATAR_FILE_NAME).asRequestBody("image/png".toMediaTypeOrNull())
MultipartBody.Part.createFormData("avatar", randomAlphanumericString(12), avatarBody)
} else {
null
}
- val header = if (headerData.value is Success && headerData.value?.data != null) {
- val headerBody = getCacheFileForName(context, HEADER_FILE_NAME).asRequestBody("image/png".toMediaTypeOrNull())
+ val header = if (headerData.value != null) {
+ val headerBody = getCacheFileForName(HEADER_FILE_NAME).asRequestBody("image/png".toMediaTypeOrNull())
MultipartBody.Part.createFormData("header", randomAlphanumericString(12), headerBody)
} else {
null
@@ -256,29 +204,12 @@ class EditProfileViewModel @Inject constructor(
)
}
- private fun getCacheFileForName(context: Context, filename: String): File {
- return File(context.cacheDir, filename)
- }
-
- private fun saveBitmapToFile(bitmap: Bitmap, file: File): Boolean {
-
- val outputStream: OutputStream
-
- try {
- outputStream = FileOutputStream(file)
- } catch (e: FileNotFoundException) {
- Log.w(TAG, Log.getStackTraceString(e))
- return false
- }
-
- bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream)
- IOUtils.closeQuietly(outputStream)
-
- return true
+ private fun getCacheFileForName(filename: String): File {
+ return File(application.cacheDir, filename)
}
override fun onCleared() {
- disposeables.dispose()
+ disposables.dispose()
}
fun obtainInstance() {
@@ -293,7 +224,7 @@ class EditProfileViewModel @Inject constructor(
instanceData.postValue(Error())
}
)
- .addTo(disposeables)
+ .addTo(disposables)
}
}
}
diff --git a/app/src/main/res/drawable-v26/launcher_shadow_gradient.xml b/app/src/main/res/color-v24/launcher_shadow_gradient.xml
similarity index 100%
rename from app/src/main/res/drawable-v26/launcher_shadow_gradient.xml
rename to app/src/main/res/color-v24/launcher_shadow_gradient.xml
diff --git a/app/src/main/res/drawable-hdpi/chinwag_splash.png b/app/src/main/res/drawable-hdpi/chinwag_splash.png
deleted file mode 100644
index 3fb4925e..00000000
Binary files a/app/src/main/res/drawable-hdpi/chinwag_splash.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/splash.png b/app/src/main/res/drawable-hdpi/splash.png
deleted file mode 100644
index 965c97d3..00000000
Binary files a/app/src/main/res/drawable-hdpi/splash.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/chinwag_splash.png b/app/src/main/res/drawable-mdpi/chinwag_splash.png
deleted file mode 100644
index e966d213..00000000
Binary files a/app/src/main/res/drawable-mdpi/chinwag_splash.png and /dev/null differ
diff --git a/app/src/main/res/drawable-mdpi/splash.png b/app/src/main/res/drawable-mdpi/splash.png
deleted file mode 100644
index 019fc271..00000000
Binary files a/app/src/main/res/drawable-mdpi/splash.png and /dev/null differ
diff --git a/app/src/main/res/drawable-v26/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
similarity index 96%
rename from app/src/main/res/drawable-v26/ic_launcher_foreground.xml
rename to app/src/main/res/drawable-v24/ic_launcher_foreground.xml
index 45f4cf69..0a1e7d8e 100644
--- a/app/src/main/res/drawable-v26/ic_launcher_foreground.xml
+++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -1,6 +1,6 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_launcher.xml b/app/src/main/res/drawable/ic_launcher.xml
new file mode 100644
index 00000000..361ebe25
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 00000000..bf1bcaa2
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_splash.xml b/app/src/main/res/drawable/ic_splash.xml
new file mode 100644
index 00000000..c9f4c937
--- /dev/null
+++ b/app/src/main/res/drawable/ic_splash.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml
index ec4e0910..78865410 100644
--- a/app/src/main/res/layout/activity_account.xml
+++ b/app/src/main/res/layout/activity_account.xml
@@ -331,7 +331,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="6dp"
- android:text="@string/title_statuses"
+ android:text="@string/title_posts"
android:textColor="@color/account_tab_font_color"
android:textSize="?attr/status_text_medium" />
diff --git a/app/src/main/res/layout/activity_compose.xml b/app/src/main/res/layout/activity_compose.xml
index e441af02..2db42a3f 100644
--- a/app/src/main/res/layout/activity_compose.xml
+++ b/app/src/main/res/layout/activity_compose.xml
@@ -313,10 +313,10 @@
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="4dp"
- android:contentDescription="@string/action_schedule_toot"
+ android:contentDescription="@string/action_schedule_post"
android:padding="4dp"
app:srcCompat="@drawable/ic_access_time"
- app:tooltipText="@string/action_schedule_toot" />
+ app:tooltipText="@string/action_schedule_post" />
+ tools:context=".EditProfileActivity">
-
-
-
-
+ tools:context="com.keylesspalace.tusky.components.login.LoginActivity">
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_scheduled_toot.xml b/app/src/main/res/layout/activity_scheduled_status.xml
similarity index 94%
rename from app/src/main/res/layout/activity_scheduled_toot.xml
rename to app/src/main/res/layout/activity_scheduled_status.xml
index 6e2217c6..71ba5e65 100644
--- a/app/src/main/res/layout/activity_scheduled_toot.xml
+++ b/app/src/main/res/layout/activity_scheduled_status.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".components.scheduled.ScheduledTootActivity">
+ tools:context=".components.scheduled.ScheduledStatusActivity">
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_view_tag.xml b/app/src/main/res/layout/activity_view_tag.xml
deleted file mode 100644
index e9833824..00000000
--- a/app/src/main/res/layout/activity_view_tag.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_add_poll.xml b/app/src/main/res/layout/dialog_add_poll.xml
index ed8abc07..4ba72250 100644
--- a/app/src/main/res/layout/dialog_add_poll.xml
+++ b/app/src/main/res/layout/dialog_add_poll.xml
@@ -37,7 +37,6 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
- android:entries="@array/poll_duration_names"
app:layout_constraintBottom_toBottomOf="@id/addChoiceButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/addChoiceButton"
diff --git a/app/src/main/res/layout/item_conversation.xml b/app/src/main/res/layout/item_conversation.xml
index 1d6eab67..4a91a785 100644
--- a/app/src/main/res/layout/item_conversation.xml
+++ b/app/src/main/res/layout/item_conversation.xml
@@ -154,7 +154,7 @@
android:visibility="gone"
app:layout_constraintStart_toStartOf="@id/status_display_name"
app:layout_constraintTop_toBottomOf="@id/status_content_warning_description"
- tools:text="@string/status_content_warning_show_more"
+ tools:text="@string/post_content_warning_show_more"
tools:visibility="visible" />
+ tools:text="Some post content. May be very long." />
diff --git a/app/src/main/res/layout/item_report_status.xml b/app/src/main/res/layout/item_report_status.xml
index 56a2dea9..54197b01 100644
--- a/app/src/main/res/layout/item_report_status.xml
+++ b/app/src/main/res/layout/item_report_status.xml
@@ -46,7 +46,7 @@
android:visibility="gone"
app:layout_constraintStart_toStartOf="@id/guideBegin"
app:layout_constraintTop_toBottomOf="@id/statusContentWarningDescription"
- tools:text="@string/status_content_warning_show_more"
+ tools:text="@string/post_content_warning_show_more"
tools:visibility="visible" />
+ tools:text="@string/post_content_warning_show_more" />
@@ -130,7 +130,7 @@
android:paddingRight="16dp"
android:paddingBottom="4dp"
android:textAllCaps="true"
- tools:text="@string/status_content_show_less"
+ tools:text="@string/post_content_show_less"
style="@style/TuskyButton.Outlined"
android:textSize="?attr/status_text_medium"
android:visibility="gone" />
diff --git a/app/src/main/res/layout/login_webview.xml b/app/src/main/res/layout/login_webview.xml
new file mode 100644
index 00000000..22d7f3bd
--- /dev/null
+++ b/app/src/main/res/layout/login_webview.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/account_toolbar.xml b/app/src/main/res/menu/account_toolbar.xml
index d25bcdc1..8e0dc242 100644
--- a/app/src/main/res/menu/account_toolbar.xml
+++ b/app/src/main/res/menu/account_toolbar.xml
@@ -6,6 +6,10 @@
android:title="@string/action_open_in_web"
app:showAsAction="never" />
+
+
diff --git a/app/src/main/res/menu/status_more.xml b/app/src/main/res/menu/status_more.xml
index c73b7e9f..4a13b45d 100644
--- a/app/src/main/res/menu/status_more.xml
+++ b/app/src/main/res/menu/status_more.xml
@@ -5,11 +5,11 @@
android:title="@string/action_share">
\ No newline at end of file
diff --git a/app/src/main/res/menu/view_thread_toolbar.xml b/app/src/main/res/menu/view_thread_toolbar.xml
index 456f2094..65577d20 100644
--- a/app/src/main/res/menu/view_thread_toolbar.xml
+++ b/app/src/main/res/menu/view_thread_toolbar.xml
@@ -9,7 +9,7 @@
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
index fe5f1260..52c036e5 100644
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -1,9 +1,9 @@
-
+
+ android:drawable="@drawable/ic_launcher" />
\ No newline at end of file
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index a565a2c8..28419a2a 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -18,17 +18,17 @@
التصريح لازم للإحتفاظ بالوسائط.لا يمكنك إرفاق كلا من الصور والفيديوهات في نفس المنشور في آن واحد.اخفقت عملية الرفع.
- خطأ عند إرسال التبويق.
+ خطأ عند إرسال المنشور.الرئيسيالاشعاراتالمحليالفدراليالرسائل المباشرةالألسنة
- تبويق
- المنشورات
- التبويقات والردود
- المدبّسة
+ خيط
+ المنشورات
+ التبويقات والردود
+ المدبّسةالمتابَعونالمتابِعونالمفضلة
@@ -38,19 +38,19 @@
عدل ملفك التعريفيالمسوداتالرّخص
- \@%s
- شارَكَه %s
- محتوى حساس
- وسائط مخفية
- اضغط للعرض
- اعرض المزيد
- اعرض أقل
- توسيع
- تصغير
+ \@%s
+ شارَكَه %s
+ محتوى حساس
+ وسائط مخفية
+ اضغط للعرض
+ اعرض المزيد
+ اعرض أقل
+ توسيع
+ تصغيرلا شيء هنا.لا يوجد شيء هنا. إسحب إلى أسفل للإنعاش!
- شارَك %s تبويقك
- أعجِب %s بتبويقك
+ شارَك %s منشورك
+ أعجِب %s بمنشورك%s يتبعكأبلغ عن @%sتعليقات إضافية؟
@@ -102,7 +102,7 @@
رفضالبحثالمسودات
- كيفية عرض التبويق
+ كيفية عرض المنشورتحذير عن المحتوىلوحة مفاتيح الإيموجيإضافة لسان
@@ -118,14 +118,14 @@
إنسخ الرابطإفتحه كـ %sشاركه كـ…
- شارك رابط التبويق مع…
- شارك التبويق على…
+ شارك رابط التبويق مع…
+ شارك التبويق على…شارك الوسيط مع…تم إرساله!تم فك الحجب عن الحسابلم يعد الحساب مكتومًا
- تم إرساله!
- تم إرسال الرد بنجاح.
+ تم إرساله!
+ تم إرسال الرد بنجاح.أي مثيل خادم؟ما الجديد؟تحذير عن المحتوى
@@ -150,7 +150,7 @@
تنزيلهل تريد رفض طلب المتابعة؟هل تود إلغاء متابعة هذا الحساب؟
- هل تريد حذف هذا التبويق؟
+ هل تريد حذف هذا التبويق؟للعامة: ينشر على الخيوط العموميةغير مدرج: لا يُعرَض على الخيوط العموميةلمتابعيك فقط: يُنشر إلى متابعيك فقط
@@ -179,8 +179,8 @@
إخفاء زر المتابعة أثناء تمرير الصفحةإخفاء زر التحرير عند التمريراللغة
- تصفية الخيوط
- الألسنة
+ تصفية الخيوط
+ الألسنةعرض الترقياتعرض الردودإظهار معاينات الوسائط
@@ -196,20 +196,20 @@
للعامةغير مدرجللمُتابِعين فقط
- حجم الخط
- صغير جدا
- صغير
- متوسط
- عريض
- عريض جدا
+ حجم الخط
+ صغير جدا
+ صغير
+ متوسط
+ عريض
+ عريض جداإشارات جديدةالإخطارات عندما يشار إليكمتابِعون جددإخطارات عند تلقي متابعين جددالترقيات
- إخطارات عندما يقوم أحدهم بترقية تبويقاتي
+ إخطارات عندما يقوم أحدهم بمشاركة منشوراتيالمفضلة
- الإشعار عندما يقوم أحدهم بإضافة تبويقاتك إلى مفضلاته
+ الإشعار عندما يقوم أحدهم بإضافة منشوراتك إلى مفضلاته%s أشار إليك%1$s, %2$s, %3$s و %4$d آخرون%1$s, %2$s, و %3$s
@@ -237,10 +237,10 @@
تقارير الأخطاء و طلبات التحسينات على :\n
https://git.chinwag.org/chinwag/chinwag-android/issuesالملف الشخصي لتوسكي
- شارك محتوى التبويق
- شارك الرابط إلى التبويق
- صور
- فيديو
+ شارك محتوى التبويق
+ شارك الرابط إلى التبويق
+ صور
+ فيديوطلب متابعةفي %dy
@@ -291,11 +291,11 @@
تجميد الحسابيتطلب منك قبول طلبات المتابَعة يدوياهل تود الإحتفاظ بالمسودة ؟
- جارٍ إرسال التبويق…
- خطأ أثناء عملية إرسال التبويق
- إرسال التبويقات
- أُلغيَ الإرسال
- تم الاحتفاظ بنسخة مِن التبويق في مسوداتك
+ جارٍ إرسال التبويق…
+ خطأ أثناء عملية إرسال التبويق
+ إرسال التبويقات
+ أُلغيَ الإرسال
+ تم الاحتفاظ بنسخة مِن التبويق في مسوداتكحررلا يحتوي مثيل خادومكم %s على أية حزمة إيموجي مخصصةتم نسخه إلى الحافظة
@@ -303,8 +303,8 @@
الإفتراضي في النظاميجب عليك أولا تنزيل حزمة الإيموجي هذهالبحث جارٍ …
- توسيع/طي كافة المنشورات
- افتح التبويق
+ توسيع/طي كافة المنشورات
+ افتح التبويقمطلوب إعادة تشغيل التطبيقإعادة تشغيل توسكي مطلوبة قصد تفعيل التعديلاتلاحقًا
@@ -342,10 +342,10 @@
لقد بلغت الحد الأقصى مِن الألسنة %1$dلقد بلغت الحد الأقصى مِن الألسنة %1$d
- الوسائط: %s
- تحذير عن المحتوى: %s
- مِن دون وصف
- أعاد تدوينه
+ الوسائط: %s
+ تحذير عن المحتوى: %s
+ مِن دون وصف
+ أعاد تدوينه للعامة غير مُدرَج المتابِعون
@@ -356,13 +356,13 @@
افتح الوسيط #%dنزّل الوسائطجارٍ تنزيل الوسائط
- هل تريد حذف وإعادة صياغة هذا التبويق؟
- تم تفضيله
+ هل تريد حذف وإعادة صياغة هذا التبويق؟
+ تم تفضيلهوسم بدون #مسحعامل تصفيةطَبِّق
- تحرير تبويق
+ تحرير منشوركتابةهل تريد حقا مسح كافة إشعاراتك؟ينتهي في %s
@@ -445,7 +445,7 @@
تعليقات إضافيةأعد تحويله إلى %sفشل الابلاغ
- فشلت عملية جلب المنشورات
+ فشلت عملية جلب المنشوراتاعرض مصفاة الإشعاراتالكلمة كاملةاستطلاع رأي بالخيارات: %1$s, %2$s, %3$s, %4$s; %5$s
@@ -455,7 +455,7 @@
الحساباتفشل البحثإضافة استطلاع رأي
- افتح دائما التبويقات التي تحتوي على محتوى حساس
+ افتح دائما المنشورات التي تحتوي على محتوى حساساستطلاع رأي5 دقائق30 دقيقة
@@ -470,21 +470,21 @@
تعديلعندما تكون الكلمة أو العبارة أبجدية رقمية فقط ، فلن يتم تطبيقها إلا إذا كانت مطابقة للكلمة بأكملها %1$s • %2$s
- التبويقات المبَرمَجة
+ التبويقات المبَرمَجةتعديل
- التبويقات المبَرمَجة
- برمجة تبويق
+ التبويقات المبَرمَجة
+ برمجة تبويقصفّرخطأ أثناء البحث عن منشور %sالفواصل المرجعيةأضفه إلى الفواصل المرجعيةالفواصل المرجعيةمدعوم بِـ Tusky
- أضيف إلى الفواصل المرجعية
+ أضيف إلى الفواصل المرجعيةاختر قائمةالقائمةليس لديك أية مسودات.
- ليس لديك أية منشورات مُبرمَجة للنشر.
+ ليس لديك أية منشورات مُبرمَجة للنشر.يجب أن يكون حجم الملفات الصوتية أقل مِن 40 ميغابايت.تُقدّر أدنى فترة لبرمجة النشر في ماستدون بـ 5 دقائق.تمكين حركات السحب للانتقال بين الألسنة
@@ -520,23 +520,23 @@
إخفاء عنوان شريط الأدوات العلويالاعلاناتأتريد حقا حذف القائمة %s؟
- فشلت عملية إرسال التبويق!
+ فشلت عملية إرسال التبويق!حُذفَت المسودةاشتركإلغاء الإشتراكنشر %s للتوّاحذف المحادثةهل تريد حذف هذه المحادثة؟
- تبويقات جديدة
- مرفقات
+ منشورات جديدة
+ مرفقاتالمدةلا توجد إعلانات.ملاحظتك الخاصة عن هذا الحسابتم حفظها!راجع الإشعارات
- صوت
- لقد حُذِف التبويق الذي حررت من أجله مسودة الرد
- شخص ما أنا مشترك في حسابه قد نشر تبويقا جديدا
+ صوت
+ لقد حُذِف التبويق الذي حررت من أجله مسودة الرد
+ شخص ما أنا مشترك في حسابه قد نشر منشورا جديداحرّك الإيموجيات المخصصةإخفاء الإحصائيات الكمية عن المنشوراتإخفاء الإحصائيات الكمية عن الملفات التعريفية
@@ -545,4 +545,11 @@
فشل في تحميل معلومات الردغير محددةوضع حد لإشعارات الخيط الزمني
+ 14 يومًا
+ 30 يومًا
+ 60 يومًا
+ 90 يومًا
+ 180 يومًا
+ 365 يومًا
+ تحرير منشور
\ No newline at end of file
diff --git a/app/src/main/res/values-ber/strings.xml b/app/src/main/res/values-ber/strings.xml
index b6d317b5..c754aef8 100644
--- a/app/src/main/res/values-ber/strings.xml
+++ b/app/src/main/res/values-ber/strings.xml
@@ -30,14 +30,14 @@
ⴽⴽⴻⵙⵉⵔⴻⵡⵡⴰⵢⴻⵏⵉⵎⵙⴻⵇⴷⴰⵛⴻⵏ ⵜⵙⵡⴰⵃⵍⴻⵎ
- ⵉⵛⵛⴰⵔⴻⵏ
+ ⵉⵛⵛⴰⵔⴻⵏⴰⵏⵜⴰ ⵝⵓⵎⵎⴰⵏⵜ\?ⵔⵏⵓ ⵢⵉⵡⴻⵏ ⵏ ⵓⵎⵉⴹⴰⵏ ⴰⵎⴰⵢⵏⵓⵝ ⵏ ⵎⴰⵚⵟⵓⴷⵓⵏⵔⵏⵓ ⴰⵎⵉⴹⴰⵏⴸⴰⵛⵓ ⵉⴳⴻⵍⵍⴰⵏ ⴸ ⴰⵎⴰⵢⵏⵓⵝ\?
- ⵙⵖⵉⵡⴻⵙ ⵝⵉⵊⴻⵡⵡⵉⵇⵝⴰ
- ⵝⵉⵊⴻⵡⵡⵉⵇⵉⵏ ⵢⴻⵜⵜⵖⴰⵙⵖⴰⵡⵙⴻⵏ
- ⵝⵉⵊⴻⵡⵡⵉⵇⵉⵏ ⵢⴻⵜⵜⵖⴰⵙⵖⴰⵡⵙⴻⵏ
+ ⵙⵖⵉⵡⴻⵙ ⵝⵉⵊⴻⵡⵡⵉⵇⵝⴰ
+ ⵝⵉⵊⴻⵡⵡⵉⵇⵉⵏ ⵢⴻⵜⵜⵖⴰⵙⵖⴰⵡⵙⴻⵏ
+ ⵝⵉⵊⴻⵡⵡⵉⵇⵉⵏ ⵢⴻⵜⵜⵖⴰⵙⵖⴰⵡⵙⴻⵏⵝⵉⵛⵔⴰⴹⵝⵉⵛⵔⴰⴹ
\ No newline at end of file
diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml
index a3db937b..a6ca7a65 100644
--- a/app/src/main/res/values-bg/strings.xml
+++ b/app/src/main/res/values-bg/strings.xml
@@ -1,7 +1,7 @@
Публикация
- Публикацията, на която сте изготвили отговор, е премахната
+ Публикацията, на която сте изготвили отговор, е премахната1 час30 минути5 минути
@@ -14,7 +14,7 @@
АкаунтиАкаунтът е от друг сървър. Да изпратите ли и там анонимно копие на доклада\?Докладът ще бъде изпратен на модератора на вашия сървър. Можете да предоставите обяснение защо докладвате този акаунт по-долу:
- Извличането на състояния бе неуспешно
+ Извличането на състояния бе неуспешноДокладването бе неуспешноПрепращане към %sДопълнителни коментари
@@ -70,12 +70,12 @@
ДиректноПоследователиПублично
- Отметнато
- Поставено в любими
- Реблог
- Без описание
- Предупреждение за съдържание: %s
- Мултимедия: %s
+ Отметнато
+ Поставено в любими
+ Реблог
+ Без описание
+ Предупреждение за съдържание: %s
+ Мултимедия: %sдостигнати са максималните %1$d раздела
@@ -118,19 +118,19 @@
По-късноЩе трябва да рестартирате Tusky, за да приложите тези промениИзисква се рестартиране на приложението
- Отваряне на публикация
- Разгъване/свиване на всички състояния
+ Отваряне на публикация
+ Разгъване/свиване на всички състоянияИзвършва се търсене…По подразбиране от систематаСтил на емоджиКопирано в клипбордаИнстанцията ви %s няма персонализирани емоджитаКомпозиране
- Копие от публикацията е запазено във вашите чернови
- Изпращането е отменено
- Изпращане на публикации
- Грешка при изпращане на публикация
- Изпращане на публикация…
+ Копие от публикацията е запазено във вашите чернови
+ Изпращането е отменено
+ Изпращане на публикации
+ Грешка при изпращане на публикация
+ Изпращане на публикация…Запазване на чернова\?Изисква ръчно одобряване на последователиЗаключване на акаунт
@@ -183,12 +183,12 @@
след %dгслед %dдЗаявено последване
- Прикачени файлове
- Аудио
- Видео
- Изображения
- Споделяне на връзка към публикация
- Споделяне на съдържание на публикация
+ Прикачени файлове
+ Аудио
+ Видео
+ Изображения
+ Споделяне на връзка към публикация
+ Споделяне на съдържание на публикацияПрофилът на TuskyДоклади за грешки и заявки за функции:
\n https://github.com/tuskyapp/Tusky/issues
@@ -213,10 +213,10 @@
Известия, когато публикациите ви бъдат означени като любимиЛюбимиИзвестия, когато публикациите ви се споделят
- Най-малък
+ Най-малъкСкрито
- Раздели
- Филтриране на емисия
+ Раздели
+ Филтриране на емисияАнимиране на персонализирани емоджитаПоказване на цветни градиенти за скрита мултимедияАнимиране на GIF аватари
@@ -256,26 +256,26 @@
Блокиране на @%s\?Скриване на целия домейнСигурни ли сте, че искате да блокирате всички от %s\? Няма да виждате съдържание от този домейн в нито една публична емисия или във вашите известия. Последователите ви от този домейн ще бъдат премахнати.
- Изтриване и преработване на тази публикация\?
- Изтриване на тази публикация\?
+ Изтриване и преработване на тази публикация\?
+ Изтриване на тази публикация\?Отследване на този акаунт\?Отмяна на заявката за последване\?ИзтеглянеКачване…Завършване на мултимедийно качване
- "Тук може да се въведе адресът или домейнът на която и да е инстанция, като mastodon.social, icosahedron.website, social.tchncs.de и <a href=\"https://instances.social\">други!</a>
+ Тук може да се въведе адресът или домейнът на която и да е инстанция, като mastodon.social, icosahedron.website, social.tchncs.de и <a href=\"https://instances.social\">други!</a>
\n
\nАко все още нямате акаунт, можете да въведете името на инстанцията, към който искате да се присъедините, и да създадете акаунт там.
\n
\nИнстанцията е единично място, където се хоства акаунтът ви, но можете лесно да комуникирате и да следвате хора в други инстанции, сякаш сте на същия сайт.
\n
-\nПовече информация можете да намерите на <a href=\"https://joinmastodon.org\">joinmastodon.org</a>. "more!
- \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 joinmastodon.org.
-
+\nПовече информация можете да намерите на <a href=\"https://joinmastodon.org\">joinmastodon.org</a>. more!
+\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 joinmastodon.org. Свързване…Какво е инстанция\?Заглавна част
@@ -288,15 +288,15 @@
Предупреждение за съдържаниеКакво се случва\?Коя инстанция\?
- Отговорът е изпратен успешно.
- Изпратено!
+ Отговорът е изпратен успешно.
+ Изпратено!%s е разкритПотребителят е раззаглушенПотребителят е деблокиранИзпратено!Споделяне на мултимедия в…
- Споделяне на публикация в…
- Споделяне на URL адреса на публикацията в…
+ Споделяне на публикация в…
+ Споделяне на URL адреса на публикацията в…Теглене на мултимедияИзтегляне на мултимедияСподеляне като …
@@ -315,11 +315,11 @@
ВръзкиДобавяне на разделНулиране
- Планиране на публикация
+ Планиране на публикацияЕмоджи клавиатураПредупреждение за съдържаниеВидимост на публикация
- Планирани публикации
+ Планирани публикацииЧерновиТърсенеОтхвърляне
@@ -390,18 +390,18 @@
%s сподели вашата публикацияНищо тук. Дръпнете надолу, за да опресните!Нищо тук.
- Свиване
- Разгъване
- Покажи по-малко
- Покажи повече
- Щракнете за преглед
- Мултимедията е скрита
- Деликатно съдържание
- %s сподели
- \@%s
+ Свиване
+ Разгъване
+ Покажи по-малко
+ Покажи повече
+ Щракнете за преглед
+ Мултимедията е скрита
+ Деликатно съдържание
+ %s сподели
+ \@%sЛицензиОповестявания
- Планирани публикации
+ Планирани публикацииЧерновиРедакция на профила виЗаявки за последване
@@ -412,9 +412,9 @@
ЛюбимиПоследователиПоследвани
- Закачени
- С отговори
- Публикации
+ Закачени
+ С отговори
+ ПубликацииРазделиДиректни съобщенияЛокално
@@ -442,7 +442,7 @@
Възникна грешка.Черновата е изтритаНеуспешно зареждане на информация за отговор
- Тази публикация не успя да се изпрати!
+ Тази публикация не успя да се изпрати!Наистина ли искате да изтриете списъка %s\?Не можете да качите повече от %1$d мултимедийни прикачени файлове.
@@ -466,7 +466,7 @@
Показване на визуализации на връзки в емисииMastodon има минимален интервал за планиране от 5 минути.Няма оповестявания.
- Нямате планирани състояния.
+ Нямате планирани състояния.Нямате чернови.Грешка при търсенето на публикация %sРедакция
@@ -484,12 +484,12 @@
Нови последователиИзвестия за нови споменаванияНови споменавания
- Най-голям
- Голям
- Среден
- Малък
+ Най-голям
+ Голям
+ Среден
+ МалъкСкрито: Не се показва в публични емисии
- Размер на текста на състоянието
+ Размер на текста на състояниетоСамо за последователиСкритоПублично
diff --git a/app/src/main/res/values-bn-rBD/strings.xml b/app/src/main/res/values-bn-rBD/strings.xml
index 33db1b27..79ecc214 100644
--- a/app/src/main/res/values-bn-rBD/strings.xml
+++ b/app/src/main/res/values-bn-rBD/strings.xml
@@ -7,11 +7,11 @@
অনুগামিবৃন্দঅতালিকাভুক্তসর্বজনীন
- পছন্দ
- আবার ব্লগ
- বর্ণনা নাই
- সতর্কবার্তা: %s
- মিডিয়া: %s
+ পছন্দ
+ আবার ব্লগ
+ বর্ণনা নাই
+ সতর্কবার্তা: %s
+ মিডিয়া: %sসর্বোচ্চ %1$dটি ট্যাব পৌঁছেছেসর্বোচ্চ %1$dটি ট্যাব পৌঁছেছে
@@ -42,8 +42,8 @@
পরবর্তীতেএই পরিবর্তনগুলি প্রয়োগ করার জন্য আপনাকে টাস্কি পুনরায় চালু করতে হবেঅ্যাপ্লিকেশন পুনরায় আরম্ভ করা প্রয়োজন
- টুট খুলুন
- সমস্ত স্টেটাস প্রসারিত/সংকুচিত করুন
+ টুট খুলুন
+ সমস্ত স্টেটাস প্রসারিত/সংকুচিত করুনঅনুসন্ধান করা হচ্ছে …আপনাকে প্রথমে এই ইমোজি সেটগুলি ডাউনলোড করতে হবেসিস্টেমের ডিফল্ট
@@ -51,11 +51,11 @@
ক্লিপবোর্ডে অনুলিপি করা হয়েছেআপনার ইনস্ট্যান্স %s এর কোনো কাস্টম ইমোজিস নেইরচনা
- টুট এর একটি কপি আপনার ড্রাফটে সংরক্ষণ করা হয়েছে
- পাঠানো বাতিল
- টুট পাঠানো হচ্ছে
- টুট পাঠাতে গিয়ে একটি ত্রুটি ঘটেছে
- টুট পাঠানো হচ্ছে …
+ টুট এর একটি কপি আপনার ড্রাফটে সংরক্ষণ করা হয়েছে
+ পাঠানো বাতিল
+ টুট পাঠানো হচ্ছে
+ টুট পাঠাতে গিয়ে একটি ত্রুটি ঘটেছে
+ টুট পাঠানো হচ্ছে …ড্রাফট সংরক্ষণ\?অনুসারী অনুমোদন করার জন্য আপনাকে প্রয়োজনঅ্যাকাউন্ট লক করুন
@@ -99,10 +99,10 @@
\'%dd এ\'\'%dy এ\'অনুরোধ অনুসরণ করুন
- ভিডিও
- চিত্রগুলি
- টুট এর সাথে লিংক ভাগ করুন
- টুট এর কন্টেন্ট ভাগ করুন
+ ভিডিও
+ চিত্রগুলি
+ টুট এর সাথে লিংক ভাগ করুন
+ টুট এর কন্টেন্ট ভাগ করুনটাস্কির প্রোফাইলবাগ রিপোর্ট এবং বৈশিষ্ট্য অনুরোধ:
\nhttps://git.chinwag.org/chinwag/chinwag-android/issues
@@ -122,12 +122,12 @@
নতুন অনুসরণকারীনতুন উল্লেখ সম্পর্কে বিজ্ঞপ্তিনতুন উল্লেখসমূহ
- বৃহত্তম
- বড়
- মাঝারি
- ছোট
- কনিষ্ঠ
- স্থিতি টেক্সট আকার
+ বৃহত্তম
+ বড়
+ মাঝারি
+ ছোট
+ কনিষ্ঠ
+ স্থিতি টেক্সট আকারশুধুমাত্র অনুগামিবৃন্দঅতালিকাভুক্তসর্বজনীন
@@ -143,8 +143,8 @@
মিডিয়া পূর্বরূপ ডাউনলোড করুনউত্তর প্রদর্শন করুনসমর্থন দেখান
- ট্যাবগুলি
- টাইমলাইন ফিল্টারিং
+ ট্যাবগুলি
+ টাইমলাইন ফিল্টারিংGIF অবতার অ্যানিমেশন করুনবট জন্য সূচক প্রদর্শন করুনভাষা
@@ -176,26 +176,30 @@
শুধুমাত্র অনুসরণকারীদের: শুধুমাত্র অনুসরণকারীদের পোস্ট করুনতালিকাভুক্ত নয়: সর্বজনীন সময়সূচীগুলিতে দেখাবেন নাসর্বজনীন: পাবলিক টাইমলাইনে পোস্ট কর
- এই টুট টি মুছে ফেলবেন এবং পুনরায় ড্রাফট করবেন\?
- এই টুট টি মুছে ফেলবেন\?
+ এই টুট টি মুছে ফেলবেন এবং পুনরায় ড্রাফট করবেন\?
+ এই টুট টি মুছে ফেলবেন\?এই অ্যাকাউন্টটি অনুসরণ করবেন না\?অনুসরণ অনুরোধ প্রত্যাহার\?ডাউনলোডআপলোড হচ্ছে …মিডিয়া আপলোড সমাপ্ত করা হচ্ছে
- "কোনও উদাহরণের ঠিকানা বা ডোমেন এখানে প্রবেশ করা যেতে পারে যেমন mastodon.social, icosahedron.website, social.tchncs.de, এবং <a href=\"https://instances.social\"> আরও! </a>
+ কোনও উদাহরণের ঠিকানা বা ডোমেন এখানে প্রবেশ করা যেতে পারে যেমন mastodon.social, icosahedron.website, social.tchncs.de, এবং <a href=\"https://instances.social\"> আরও! </a>
\n
\nআপনার যদি এখনো অ্যাকাউন্ট না থাকে তবে আপনি যে ইনস্ট্যান্সটিতে যোগ দিতে চান সেটির নামটি প্রবেশ করতে এবং সেখানে একটি অ্যাকাউন্ট তৈরি করতে পারেন।
+\n
\n
+\n
\nএকটি ইনস্ট্যান্স একটি একক স্থান যেখানে আপনার অ্যাকাউন্ট হোস্ট করা হয়, তবে আপনি সহজেই যোগাযোগ করতে পারেন এবং অন্যান্য ক্ষেত্রে যেমন আপনি একই সাইটে ছিলেন তা অনুসরণ করতে পারেন।
+\n
\n
-\nআরো তথ্য <a href=\"https://joinmastodon.org\"> joinmastodon.org </a> এ পাওয়া যেতে পারে। "more!
- \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 joinmastodon.org.
-
+\n
+\nআরো তথ্য <a href=\"https://joinmastodon.org\"> joinmastodon.org </a> এ পাওয়া যেতে পারে। more!
+\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 joinmastodon.org. সংযুক্ত হচ্ছে …ইনস্ট্যান্স কি\?হেডার
@@ -208,14 +212,14 @@
সতর্কবার্তাকি হচ্ছে\?কোন ইনস্ট্যান্স\?
- উত্তর সফলভাবে পাঠানো হয়েছে।
- পাঠানো হয়েছে!
+ উত্তর সফলভাবে পাঠানো হয়েছে।
+ পাঠানো হয়েছে!ব্যবহারকারী সশব্দব্যবহারকারী অবরোধ মুক্তপাঠানো হয়েছে!মিডিয়া শেয়ার করুন …
- টুট ভাগ করুন …
- টুট URL ভাগ করুন …
+ টুট ভাগ করুন …
+ টুট URL ভাগ করুন …মিডিয়া ডাউনলোড করা হচ্ছেমিডিয়া ডাউনলোড করুনহিসাবে ভাগ করুন …
@@ -289,13 +293,13 @@
রিপোর্ট @%sএখানে কিছু নেই. রিফ্রেশ করতে নিচে টানুন!এখানে কিছুই নেই।
- বন্ধ
- বিস্তৃত
- প্রদর্শন কম
- আরও দেখাও
- দেখার জন্য ক্লিক করুন
- মিডিয়া লুকানো
- সংবেদনশীল কন্টেন্ট
+ বন্ধ
+ বিস্তৃত
+ প্রদর্শন কম
+ আরও দেখাও
+ দেখার জন্য ক্লিক করুন
+ মিডিয়া লুকানো
+ সংবেদনশীল কন্টেন্টলাইসেন্সগুলিখসড়াআপনার প্রোফাইল সম্পাদনা করুন
@@ -306,8 +310,8 @@
%dমা%dঘ%dব
- %s বুস্টকৃত
- \@%s
+ %s বুস্টকৃত
+ \@%sবিজ্ঞপ্তি লুকাও\'%s থেকে বিজ্ঞপ্তি বন্ধ করো\'\'%s থেকে বিজ্ঞপ্তি বন্ধ করো\'
@@ -332,20 +336,20 @@
মাস্টোডনের সর্বনিম্ন ৫ মিনিটের সময়সূচীর বিরতি আছে।অডিও ফাইলগুলি অবশ্যই ৪০MB এর চেয়ে কম হওয়া উচিত।তোমার কোনো খসড়া নেই।
- তোমার কোনো সময়সূচীত স্ট্যাটাস নেই।
+ তোমার কোনো সময়সূচীত স্ট্যাটাস নেই।তালিকাতালিকা নির্বাচন করো
- বুকমার্ককৃত
+ বুকমার্ককৃতবুকমার্কগুলিবুকমার্কবুকমার্কগুলিটাস্কি দ্বারা চালিত\'%s পোস্ট অনুসন্ধানে ত্রুটি\'রিসেট
- নির্ধারিত টুট
- নির্ধারিত টুটগুলি
+ নির্ধারিত টুট
+ নির্ধারিত টুটগুলিসম্পাদন
- নির্ধারিত টুটগুলি
+ নির্ধারিত টুটগুলিসম্পাদনপছন্দ %dএকাধিক পছন্দ
@@ -373,7 +377,7 @@
গোপন ডোমেইনগুলিএই একাউন্ট তা একটি অন্য সার্ভারের। রিপোর্ট এর সঙ্গে একটি বেনামি কপি ওখানে পাঠাতে চান\?রিপোর্ট আপনার সার্ভার মডারেটরে পাঠানো হবে। আপনি নীচের এই অ্যাকাউন্টটি কেন প্রতিবেদন করছেন তা ব্যাখ্যা করতে পারেন:
- স্টেটাসগুলি আনতে ব্যর্থ
+ স্টেটাসগুলি আনতে ব্যর্থরিপোর্ট করতে ব্যর্থ হয়েছে\'%s এ ফরওয়ার্ড করুন\'অতিরিক্ত মন্তব্যগুলি
@@ -386,8 +390,7 @@
ভোটবন্ধ\'%s এ শেষ হবে\'
-
- %1$s • %2$s
+ %1$s • %2$sছবি %s এর জন্য ক্রিয়াআপনি কি আপনার সমস্ত বিজ্ঞপ্তি স্থায়ীভাবে মুছে ফেলতে চান\?রচনা
@@ -400,9 +403,9 @@
প্রিয়গুলোঅনুগামিবৃন্দঅনুসরণ
- পিন করা
- উত্তরের সাথে
- পোস্টগুলি
+ পিন করা
+ উত্তরের সাথে
+ পোস্টগুলিটুটট্যাবগুলিসরাসরি বার্তা
@@ -447,12 +450,12 @@
সদস্যতা আছে এমন একজন টুট দিয়েছেকোনো ঘোষণা নেই।যদিও তোমার অ্যাকাউন্ট রুদ্ধকৃত না, %1$s রা ভেবেছে এই অ্যাকাউন্টগুলোর অনুসরণ অনুরোধ তোমার পরীক্ষা করা উচিত।
- যে টুটের উত্তর খসড়া করেছিলে তা মুছে ফেলা হয়েছে
+ যে টুটের উত্তর খসড়া করেছিলে তা মুছে ফেলা হয়েছে%1$d টার বেশি সংযুক্তি পাঠানো যাবে না।%1$d টার বেশি সংযুক্তি পাঠানো যাবে না।
- টুট পাঠাতে ব্যর্থ!
+ টুট পাঠাতে ব্যর্থ!উত্তরের তথ্য আনতে ব্যর্থসংরক্ষিত!অবতারে পরিসংখ্যান লুকাও
@@ -505,8 +508,8 @@
%s বুস্ট%1$s স্থানান্তরিত হয়েছে এখানে:
- সংযুক্তি
- শব্দ
+ সংযুক্তি
+ শব্দ%dটি নতুন ক্রিয়া%dটি নতুন ক্রিয়া
diff --git a/app/src/main/res/values-bn-rIN/strings.xml b/app/src/main/res/values-bn-rIN/strings.xml
index 3de2ffe3..92390c48 100644
--- a/app/src/main/res/values-bn-rIN/strings.xml
+++ b/app/src/main/res/values-bn-rIN/strings.xml
@@ -26,9 +26,9 @@
সরাসরি বার্তাট্যাবগুলিটুট
- পোস্টগুলি
- উত্তরের সাথে
- পিন করা
+ পোস্টগুলি
+ উত্তরের সাথে
+ পিন করাঅনুসরণঅনুগামিবৃন্দপ্রিয়গুলো
@@ -38,15 +38,15 @@
আপনার প্রোফাইল সম্পাদনা করুনখসড়াগুলোলাইসেন্সগুলি
- \@%s
- %s সমর্থন দিয়েছে
- সংবেদনশীল কন্টেন্ট
- মিডিয়া লুকানো
- দেখার জন্য ক্লিক করুন
- আরও দেখাও
- প্রদর্শন কম
- বিস্তৃত
- বন্ধ
+ \@%s
+ %s সমর্থন দিয়েছে
+ সংবেদনশীল কন্টেন্ট
+ মিডিয়া লুকানো
+ দেখার জন্য ক্লিক করুন
+ আরও দেখাও
+ প্রদর্শন কম
+ বিস্তৃত
+ বন্ধএখানে কিছুই নেই।এখানে কিছু নেই. রিফ্রেশ করতে নিচে টানুন!%s সমর্থন দিয়েছে
@@ -123,14 +123,14 @@
হিসাবে ভাগ করুন …মিডিয়া ডাউনলোড করুনমিডিয়া ডাউনলোড করা হচ্ছে
- টুট URL ভাগ করুন …
- টুট ভাগ করুন …
+ টুট URL ভাগ করুন …
+ টুট ভাগ করুন …মিডিয়া শেয়ার করুন …পাঠানো হয়েছে!ব্যবহারকারী অবরোধ মুক্তব্যবহারকারী সশব্দ
- পাঠানো হয়েছে!
- উত্তর সফলভাবে পাঠানো হয়েছে।
+ পাঠানো হয়েছে!
+ উত্তর সফলভাবে পাঠানো হয়েছে।কোন ইনস্ট্যান্স\?কি হচ্ছে\?সতর্কবার্তা
@@ -155,8 +155,8 @@
ডাউনলোডঅনুসরণ অনুরোধ প্রত্যাহার\?এই অ্যাকাউন্টটি অনুসরণ করবেন না\?
- এই টুট টি মুছে ফেলবেন\?
- এই টুট টি মুছে ফেলবেন এবং পুনরায় ড্রাফট করবেন\?
+ এই টুট টি মুছে ফেলবেন\?
+ এই টুট টি মুছে ফেলবেন এবং পুনরায় ড্রাফট করবেন\?সর্বজনীন: পাবলিক টাইমলাইনে পোস্ট করতালিকাভুক্ত নয়: সর্বজনীন সময়সূচীগুলিতে দেখাবেন নাশুধুমাত্র অনুসরণকারীদের: শুধুমাত্র অনুসরণকারীদের পোস্ট করুন
@@ -188,8 +188,8 @@
ভাষাবট জন্য সূচক প্রদর্শন করুনGIF অবতার অ্যানিমেশন করুন
- টাইমলাইন ফিল্টারিং
- ট্যাবগুলি
+ টাইমলাইন ফিল্টারিং
+ ট্যাবগুলিসমর্থন দেখানউত্তর প্রদর্শন করুনমিডিয়া পূর্বরূপ ডাউনলোড করুন
@@ -205,12 +205,12 @@
সর্বজনীনঅতালিকাভুক্তশুধুমাত্র অনুগামিবৃন্দ
- স্থিতি টেক্সট আকার
- কনিষ্ঠ
- ছোট
- মাঝারি
- বড়
- বৃহত্তম
+ স্থিতি টেক্সট আকার
+ কনিষ্ঠ
+ ছোট
+ মাঝারি
+ বড়
+ বৃহত্তমনতুন উল্লেখসমূহনতুন উল্লেখ সম্পর্কে বিজ্ঞপ্তিনতুন অনুসরণকারী
@@ -243,10 +243,10 @@
বাগ রিপোর্ট এবং বৈশিষ্ট্য অনুরোধ:
\nhttps://git.chinwag.org/chinwag/chinwag-android/issuesটাস্কির প্রোফাইল
- টুট এর কন্টেন্ট ভাগ করুন
- টুট এর সাথে লিংক ভাগ করুন
- চিত্রগুলি
- ভিডিও
+ টুট এর কন্টেন্ট ভাগ করুন
+ টুট এর সাথে লিংক ভাগ করুন
+ চিত্রগুলি
+ ভিডিওঅনুরোধ অনুসরণ করুন%dy এ
@@ -297,11 +297,11 @@
অ্যাকাউন্ট লক করুনঅনুসারী অনুমোদন করার জন্য আপনাকে প্রয়োজনড্রাফট সংরক্ষণ\?
- টুট পাঠানো হচ্ছে …
- টুট পাঠাতে গিয়ে একটি ত্রুটি ঘটেছে
- টুট পাঠানো হচ্ছে
- পাঠানো বাতিল
- টুট এর একটি কপি আপনার ড্রাফটে সংরক্ষণ করা হয়েছে
+ টুট পাঠানো হচ্ছে …
+ টুট পাঠাতে গিয়ে একটি ত্রুটি ঘটেছে
+ টুট পাঠানো হচ্ছে
+ পাঠানো বাতিল
+ টুট এর একটি কপি আপনার ড্রাফটে সংরক্ষণ করা হয়েছেরচনাআপনার ইনস্ট্যান্স %s এর কোনো কাস্টম ইমোজিস নেইক্লিপবোর্ডে অনুলিপি করা হয়েছে
@@ -309,8 +309,8 @@
সিস্টেমের ডিফল্টআপনাকে প্রথমে এই ইমোজি সেটগুলি ডাউনলোড করতে হবেঅনুসন্ধান করা হচ্ছে …
- সমস্ত স্টেটাস প্রসারিত/সংকুচিত করুন
- টুট খুলুন
+ সমস্ত স্টেটাস প্রসারিত/সংকুচিত করুন
+ টুট খুলুনঅ্যাপ্লিকেশন পুনরায় আরম্ভ করা প্রয়োজনএই পরিবর্তনগুলি প্রয়োগ করার জন্য আপনাকে টাস্কি পুনরায় চালু করতে হবেপরবর্তীতে
@@ -352,11 +352,11 @@
সর্বাধিক %1$d টি ট্যাব পৌঁছেছে
- মিডিয়া: %s
- সতর্কবার্তা: %s
- বর্ণনা নাই
- আবার ব্লগ
- পছন্দ
+ মিডিয়া: %s
+ সতর্কবার্তা: %s
+ বর্ণনা নাই
+ আবার ব্লগ
+ পছন্দসর্বজনীনঅতালিকাভুক্তঅনুগামিবৃন্দ
@@ -384,7 +384,7 @@
অতিরিক্ত মন্তব্যগুলি%s এ ফরওয়ার্ড করুনরিপোর্ট করতে ব্যর্থ হয়েছে
- স্টেটাসগুলি আনতে ব্যর্থ
+ স্টেটাসগুলি আনতে ব্যর্থরিপোর্ট আপনার সার্ভার মডারেটরে পাঠানো হবে। আপনি নীচের এই অ্যাকাউন্টটি কেন প্রতিবেদন করছেন তা ব্যাখ্যা করতে পারেন:এই একাউন্ট তা একটি অন্য সার্ভারের। রিপোর্ট এর সঙ্গে একটি বেনামি কপি ওখানে পাঠাতে চান\?গোপন ডোমেইনগুলি
@@ -412,10 +412,10 @@
একাধিক পছন্দপছন্দ %dসম্পাদন
- নির্ধারিত টুটগুলি
+ নির্ধারিত টুটগুলিসম্পাদন
- নির্ধারিত টুটগুলি
- নির্ধারিত টুট
+ নির্ধারিত টুটগুলি
+ নির্ধারিত টুটরিসেটটাস্কি দ্বারা চালিত%s পোস্ট অনুসন্ধানে ত্রুটি
@@ -465,14 +465,14 @@
তালিকা নির্বাচন করোহ্যাশট্যাগহ্যাশট্যাগ যোগ করো
- বুকমার্ককৃত
+ বুকমার্ককৃতঅনুসরণ রিকোয়েস্টের বিজ্ঞপ্তিসবচেয়ে শেষসর্বপ্রথমমূল ন্যাভিগেশন জায়গাট্যাবের মাঝে সোয়াইপ সংকেত চালু করোটাইমলাইনে লিঙ্ক প্রিভিউ দেখাও
- তোমার কোনো সময়সূচীত স্ট্যাটাস নেই।
+ তোমার কোনো সময়সূচীত স্ট্যাটাস নেই।তোমার কোনো খসড়া নেই।মাস্টোডনের সর্বনিম্ন ৫ মিনিটের সময়সূচীর বিরতি আছে।শীর্ষস্থানীয় সরঞ্জামদণ্ডের শিরোনামটি লুকান
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index 668bfc51..27fa8122 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -21,7 +21,7 @@
LocalFederacióToot
- Posts
+ PostsSeguitsSeguidorsPreferits
@@ -30,12 +30,12 @@
Peticions de seguimentEdita el perfilEsborranys
- \@%s
- %s tootejat
- Contingut sensible
- Fes clic per a visualitzar-lo
- Mostra\'n més
- Mostra\'n menys
+ \@%s
+ %s tootejat
+ Contingut sensible
+ Fes clic per a visualitzar-lo
+ Mostra\'n més
+ Mostra\'n menysNo hi res aquí. Llisca avall per a actualitzar!%s ha impulsat el teu toot%s ha marcat com a preferit el teu toot
@@ -83,8 +83,8 @@
EsborranysS\'està baixant %1$sCopia l\'enllaç
- Comparteix l\'URL del toot a…
- Comparteix el toot a…
+ Comparteix l\'URL del toot a…
+ Comparteix el toot a…Enviat!Usuari desblocatUsuari sense silenciar
@@ -130,8 +130,8 @@
NavegadorPestanyes personalitzades del ChromeAmaga el botó de redacció en desplaçament
- Filtre de la cronologia
- Pestanyes
+ Filtre de la cronologia
+ PestanyesMostra els retootsMostra les respostesMostra les previsualitzacions
@@ -140,7 +140,7 @@
PúblicaSense llistarNomés seguidors
- Mida de text de l\'estat
+ Mida de text de l\'estatMencions novesNotificacions sobre mencions novesSeguidors nous
@@ -172,10 +172,10 @@
https://git.chinwag.org/chinwag/chinwag-android/issues
Perfil del Tusky
- Comparteix el contingut del toot
- Comparteix l\'enllaç al toot
- Imatges
- Vídeo
+ Comparteix el contingut del toot
+ Comparteix l\'enllaç al toot
+ Imatges
+ Vídeoen %d anysen %dd
@@ -196,7 +196,7 @@
S\'ha produït un error en enviar el tut.PestanyesLlicències
- Amplia
+ AmpliaResposta ràpidaElimineu els preferitsPreferències del compte
@@ -206,8 +206,8 @@
Elimina l\'impulsS\'ha produït un error de connexió! Comproveu la connexió i torneu-ho a provar!Els fitxers de vídeo han de ser de mida menor de 40 MB.
- Multimèdia amagada
- Amaga
+ Multimèdia amagada
+ AmagaEstàs segur de tancar la sessió de %1$s\?Amaga els retootsMostra els impulsos
@@ -226,18 +226,18 @@
Comparteix com a…Baixa el fitxerCompartir la imatge a …
- Enviat!
+ Enviat!S\'ha enviat la petició de seguiment
- Amb respostes
+ Amb respostesTeclat d\'emojisObrir el media #%dObrir com %sS\'està Descarregant media
- Resposta enviada correctament.
+ Resposta enviada correctament.Resposta …Revocar la petició de seguiment\?
- Vols eliminar aquest toot\?
- Esborrar i reescriure aquest toot\?
+ Vols eliminar aquest toot\?
+ Esborrar i reescriure aquest toot\?Finalització de les enquetesTemaCronologia
@@ -255,11 +255,11 @@
Port del proxy HTTPMarcar sempre els medias com a sensiblesError al sincronitzar els paràmetres
- Petit
- Petit
- Mig
- Gran
- Més grand
+ Petit
+ Petit
+ Mig
+ Gran
+ Més grandEnquestesConversesAfegir un filtre
@@ -297,11 +297,11 @@
Protegir el compteS\'haurà d\'admetre els seguidors manualmentGuardar l\'esborrany\?
- Enviant toot…
- Error enviant el toot
- Enviant toots
- Envio anul·lat
- Una copia del toot s\'ha guardat a esborranys
+ Enviant toot…
+ Error enviant el toot
+ Enviant toots
+ Envio anul·lat
+ Una copia del toot s\'ha guardat a esborranysEscriureLa teva instància %s no te emojis personalitzatsCopia al porta papers
@@ -309,8 +309,8 @@
Sistema per defecteHauràs de descarregar el joc d\'emojisCercant…
- Expandir/ocultar tots els estats
- Obrir toot
+ Expandir/ocultar tots els estats
+ Obrir tootCal reiniciar l\'aplicacióHas de reiniciar l\'aplicació per tal d\'aplicar aquests canvisMés tard
@@ -349,9 +349,9 @@
màxim de %1$d pestanyes aconseguides
- Mèdia : %s
- Sense descripció
- Favorits
+ Mèdia : %s
+ Sense descripció
+ FavoritsPúblicSense llistarSeguidors
@@ -374,11 +374,11 @@
tancatL\'enquesta on has votat està tancadaLa enquesta que heu creat ha finalitzat
- Advertència: %s
- Toot fixat
+ Advertència: %s
+ Toot fixatToot no fixatFixar
- Respost
+ RespostAccions per a la imatge %sActivar l\'animació dels GIFDominis ocults
@@ -396,7 +396,7 @@
Comentaris addicionalsReenviar a %sReport erroni
- Error obtenint els estats
+ Error obtenint els estatsL\'informe s\'enviarà al moderador del teu servidor. Pots afegir una explicació del motiu d\'aquest informe del compte a sota:ComptesMostrar el filtre de les notificacions
@@ -419,19 +419,19 @@
Múltiples triesTria %dPreferits
- Toots programats
+ Toots programatsPreferitEditaPreferits
- Toots programats
- Programar el toot
+ Toots programats
+ Programar el tootReiniciarDesenvolupat per Tusky
- S\'ha afegit a les adreces d\'interès
+ S\'ha afegit a les adreces d\'interèsSeleccionar la llistaLlistaS\'ha produït un error en cercar la publicació %s
- No tens cap estat planificat.
+ No tens cap estat planificat.Els fitxers d\'àudio han de ser de mida menor de 40MB.No teniu cap esborrany.L\'interval mínim de planificació a Mastodon és de 5 minuts.
@@ -485,18 +485,18 @@
falta %d diafalten %d dies
- Adjuncions
- Àudio
+ Adjuncions
+ ÀudioNotificacions quan algú a qui esteu subscrit publica un tut nouTuts nousemojis personalitzats animatsalgú a qui estic subscrit acaba de publicar un tut nou%s acaba de fer una publicacióAvisos
- S\'ha esborrat el tut del qual en vau fer un esborrany de resposta
+ S\'ha esborrat el tut del qual en vau fer un esborrany de respostaS\'ha eliminat l\'esborranyNo s\'ha pogut carregar la informació de la resposta
- No s\'ha pogut enviar aquest tut!
+ No s\'ha pogut enviar aquest tut!Segur que voleu esborrar la llista %s\?No podeu pujar més de %1$d adjunts multimèdia.
diff --git a/app/src/main/res/values-ckb/strings.xml b/app/src/main/res/values-ckb/strings.xml
index c5702f28..8dd86758 100644
--- a/app/src/main/res/values-ckb/strings.xml
+++ b/app/src/main/res/values-ckb/strings.xml
@@ -2,15 +2,15 @@
چی خەریکه ڕوودەدات؟کام نموونە؟
- وەڵام دانەوە کە بە سەرکەوتوویی نێردرا.
- ناردن!
+ وەڵام دانەوە کە بە سەرکەوتوویی نێردرا.
+ ناردن!%s نەشاراوەبەکارهێنەر نەگۆڕاوبەکارهێنەر بەربەست نەکراوەناردن!هاوبەشکردنی میدیا بۆ…
- هاوبەشی کردن بە توت بۆ…
- هاوبەشکردنی توتی URL بۆ…
+ هاوبەشی کردن بە توت بۆ…
+ هاوبەشکردنی توتی URL بۆ…داگرتنی میدیاداگرتنی میدیاهاوبەش کردن وەک …
@@ -29,11 +29,11 @@
بەستەرەکانزیادکردنی سەرخشتڕیسێت کردن
- خشتەی توت
+ خشتەی توتتەختەکلیلی ئیمۆجیئاگاداری ناوەڕۆکبینینی توت
- توتی خشتەکراو
+ توتی خشتەکراوڕەشنووسەکانگەڕانڕەتکردنەوە
@@ -103,18 +103,18 @@
%s توتەکەتی بەرزکردەوەهیچ شتێک لێرە نیە ڕاکە خوارەوە بۆ نوێکردنەوە!هیچ شتێک لێرە نیە.
- نوشتانەوە
- فراوانکردن
- کەمتر نیشان بدە
- زیاتر پیشان بدە
- کرتە بکە بۆ بینین
- میدیا شاراوە
- ناوەڕۆکی هەستیار
- %s بەرزکرا
- \@%s
+ نوشتانەوە
+ فراوانکردن
+ کەمتر نیشان بدە
+ زیاتر پیشان بدە
+ کرتە بکە بۆ بینین
+ میدیا شاراوە
+ ناوەڕۆکی هەستیار
+ %s بەرزکرا
+ \@%sمۆڵەتەکانڕاگه یه نراوەکان
- توتی خشتەکراو
+ توتی خشتەکراودەستکاری پرۆفایلەکەت بکەبەدواداچونی داواکاریەکان بکەدۆمەینە شاراوەکان
@@ -124,9 +124,9 @@
دڵخوازەکانشوێنکەوتوانبەدوادا
- چەسپا
- لەگەڵ وەڵامەکان
- بابەتەکان
+ چەسپا
+ لەگەڵ وەڵامەکان
+ بابەتەکانتوتسەرخشتەکاننامە ڕاستەوخۆکان
@@ -163,8 +163,8 @@
داگرتنی پێشبینینی میدیاوەڵامدانەوەکان پیشان بدەپیشاندانی بەهێزکردنەکان
- سەرخشتەکان
- فلتەرکردنی تایملاین
+ سەرخشتەکان
+ فلتەرکردنی تایملایننمرەی لاری ڕەنگاوڕەنگ نیشان بدە بۆ میدیای شاراوەوێنۆجکەی ئەنیمەی GIFنیشاندەر نیشاندەر بۆ بۆتەکان نیشان بدە
@@ -204,8 +204,8 @@
بلۆککردنی @%s؟شاردنەوەی هەموو دۆمەینەکەئایا دڵنیایت لەوەی دەتەوێت هەموو %s بلۆک بکەیت؟ تۆ ناوەڕۆکێک نابینیت لە دۆمەینەکە لە هیچ هێڵی کاتی گشتی یان لە ئاگانامەکانت. شوێنکەوتوانی تۆ لەو دۆمەینەوە لادەبرێن.
- ئەم دووانە بسڕەوە و دووبارە ڕەشنووس یان دەکەیتەوە؟
- ئەم توتە بسڕەوە؟
+ ئەم دووانە بسڕەوە و دووبارە ڕەشنووس یان دەکەیتەوە؟
+ ئەم توتە بسڕەوە؟شوێن نەکەوتنی ئەم هەژمارە؟داواکاری بەدوادا چوەکان هەڵوەشانەوە؟داگرتن
@@ -256,7 +256,7 @@
نیشاندانی پێشاندانی بەستەر لە هێڵی کاتماستۆدۆن کەمترین ماوەی خشتەی هەیە لە ٥ خولەک.هیچ ڕاگه یه نراوێک له بەرده رنه کەون.
- هیچ بارێکی خشتەکراوت نیە.
+ هیچ بارێکی خشتەکراوت نیە.هیچ ڕەشنووسێکت نییە.هەڵە لە گەڕان بەدوای بابەت %sدەستکاریکردن
@@ -271,7 +271,7 @@
ئەژمێرەکانهەژمارەلە ڕاژەیەکی دیکەیە ترە. کۆپیەکی بێ سەروبەر بنێرە بۆ ڕاپۆرتەکە لەوێ؟ڕاپۆرتەکە دەنێردرێت بۆ بەڕێوەبەری ڕاژەکەت. دەتوانیت ڕوونکردنەوەیەک پێشکەش بکەیت کە بۆچی ئەم ئەژمێرە لە خوارەوە ڕاپۆرت دەکەیت:
- سەرکەوتوو نەبوو لە هێنانی بارەکان
+ سەرکەوتوو نەبوو لە هێنانی بارەکانڕاپۆرتکردن سەرکەوتوو نەبووناردنەوە بۆ %sسەرنجەکانی زیاتر
@@ -323,12 +323,12 @@
شوێنکەوتوانیلە لیست نەکراوگشتی
- نیشانکراوە
- پەسەندکراو
- دووبارە بڵاگ کرا
- هیچ وەسفێک
- ئاگاداری ناوەڕۆک: %s
- میدیا: %s
+ نیشانکراوە
+ پەسەندکراو
+ دووبارە بڵاگ کرا
+ هیچ وەسفێک
+ ئاگاداری ناوەڕۆک: %s
+ میدیا: %sبەرزترین رێژەی خشتەبەندەکانی %1$d گەیشت
@@ -369,8 +369,8 @@
دواترتۆ پێویستە توسکی دەستپێبکەیتەوە بۆ ئەوەی ئەم گۆڕانکاریانە جێبەجێ بکەیتدەسپێکردنەوەی کاربەرنامە پێویستە
- کردنەوە توت
- فراوانکردن/نوشتانەوەی هەموو بارەکان
+ کردنەوە توت
+ فراوانکردن/نوشتانەوەی هەموو بارەکانئەنجامدانی گەڕان…تۆ پێویستە سەرەتا ئەم سێتە ئیمۆجییانە دابگریتسیستەمی بنەڕەت
@@ -378,11 +378,11 @@
ڕوونووسکراوە بۆ کلیپ بۆردنموونەکەت %s هیچ ئیمۆجییەکی ئاسایی نییەدروستکردن
- کۆپیەکی دەستنووسەکە خەزن کراوە بۆ ڕەشنووسەکانت
- ناردنی هەڵوەشاوە
- ناردنی توتس
- هەڵە لە ناردنی توت
- (توت) دەنێرم…
+ کۆپیەکی دەستنووسەکە خەزن کراوە بۆ ڕەشنووسەکانت
+ ناردنی هەڵوەشاوە
+ ناردنی توتس
+ هەڵە لە ناردنی توت
+ (توت) دەنێرم…ڕەشنووس پاشەکەوت بکەیت؟داوات لێدەکات کە بە دەستی شوێنکەوتوانی پەسەند بکەداخستنی ئەژمێر
@@ -434,10 +434,10 @@
لە %ddلە %dyبەدواداچوونەوەی داواکراو
- ڤیدیۆ
- وێنەکان
- هاوبەشکردنی لینک بۆ توت
- هاوبەشکردنی ناوەڕۆکی دووت
+ ڤیدیۆ
+ وێنەکان
+ هاوبەشکردنی لینک بۆ توت
+ هاوبەشکردنی ناوەڕۆکی دووتپرۆفایلی تاسکیڕاپۆرتەکانی هەڵەکان و داواکاریەکانی تایبەتمەندی:
\nhttps://github.com/tuskyapp/Tusky/issues
@@ -469,12 +469,12 @@
شوێنکەوتوانی نوێئاگانامەکان دەربارەی ئاماژە نوێیەکانئاماژە نوێیەکان
- گەورەترین
- گەورە
- مامناوەندی
- بچووک
- بچووکترین
- قەبارەی دەقی بار
+ گەورەترین
+ گەورە
+ مامناوەندی
+ بچووک
+ بچووکترین
+ قەبارەی دەقی بارشوێنکەوتوانی تەنهالە لیست نەکراوگشتی
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index 2c15e98f..7840aa9c 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -26,9 +26,9 @@
Přímé zprávyPanelyToot
- Tooty
- S odpověďmi
- Připnuté
+ Tooty
+ S odpověďmi
+ PřipnutéSledovaníSledujícíOblíbené
@@ -38,15 +38,15 @@
Upravit váš profilKonceptyLicence
- \@%s
- %s boostnul/a
- Citlivý obsah
- Média skryta
- Klikněte pro zobrazení
- Zobrazit více
- Zobrazit méně
- Rozbalit
- Zabalit
+ \@%s
+ %s boostnul/a
+ Citlivý obsah
+ Média skryta
+ Klikněte pro zobrazení
+ Zobrazit více
+ Zobrazit méně
+ Rozbalit
+ ZabalitTady nic není.Tady nic není. Obnovte přetažnením dolů!%s boostnul/a váš toot
@@ -122,14 +122,14 @@
Sdílet jako…Stáhnout médiaStahuji média
- Sdílet URL tootu na…
- Sdílet toot na…
+ Sdílet URL tootu na…
+ Sdílet toot na…Sdílet média na…Odesláno!Uživatel odblokovánUživatel odkryt
- Odesláno!
- Odpověď byla úspěšně odeslána.
+ Odesláno!
+ Odpověď byla úspěšně odeslána.Který server?Co se právě děje?Varování o obsahu
@@ -156,7 +156,7 @@
StáhnoutZrušit požadavek o sledování?Přestat sledovat tento účet?
- Smazat tento toot?
+ Smazat tento toot?Veřejný: Poslat na veřejné časové osyNeuvedený: Neposlat na veřejné časové osyPouze pro sledující: Poslat pouze sledujícím
@@ -185,8 +185,8 @@
Používat Vlastní karty ChromeSkrýt tlačítko pro psaní při rolováníJazyk
- Filtrování časových os
- Panely
+ Filtrování časových os
+ PanelyZobrazi boostyZobrazit odpovědiStahovat náhledy médií
@@ -202,12 +202,12 @@
VeřejnéNeuvedenéPouze pro sledující
- Velikost textu příspěvků
- Nejmenší
- Malý
- Střední
- Velký
- Největší
+ Velikost textu příspěvků
+ Nejmenší
+ Malý
+ Střední
+ Velký
+ NejvětšíNové zmínkyOznámení o nových zmínkáchNoví sledující
@@ -242,10 +242,10 @@
https://git.chinwag.org/chinwag/chinwag-android/issues
Profil aplikace Tusky
- Sdílet obsah tootu
- Sdílet odkaz k tootu
- Obrázky
- Video
+ Sdílet obsah tootu
+ Sdílet odkaz k tootu
+ Obrázky
+ VideoVyžádáno sledováníza %d let
@@ -295,11 +295,11 @@
Uzamknout účetVyžaduje, abyste ručně schvaloval/a sledujícíUložit koncept?
- Odesílám toot…
- Chyba při odesílání tootu
- Odesílám tooty
- Odesílání bylo zrušeno
- Kopie vašeho tootu byla uložena do vašich konceptů
+ Odesílám toot…
+ Chyba při odesílání tootu
+ Odesílám tooty
+ Odesílání bylo zrušeno
+ Kopie vašeho tootu byla uložena do vašich konceptůNapsatVaše instance %s nemá žádná vlastní emojiZkopírováno do schránky
@@ -307,8 +307,8 @@
Výchozí nastavení systémuMusíte si nejprve stáhnout tyto sady emojiProvádím prohledávání…
- Rozbalit/zabalit všechny příspěvky
- Otevřít toot
+ Rozbalit/zabalit všechny příspěvky
+ Otevřít tootJe vyžadován restart aplikacePro použití těchto změn musíte restartovat aplikaci TuskyPozději
@@ -351,15 +351,15 @@
bylo dosaženo maxima %1$d panelů
- Média %s
+ Média %s
- Varování o obsahu: %s
+ Varování o obsahu: %s
- Žádný popis
+ Žádný popis
- Boostnutý
+ Boostnutý
- Oblíbený
+ Oblíbený
VeřejnýNeuvedený
@@ -376,7 +376,7 @@
Zobrazovat indikátor pro robotyJste si jistý/á, že chcete trvale vymazat všechna vaše oznámení\?Smazat a přepsat
- Smazat a přepsat tento toot\?
+ Smazat a přepsat tento toot\? %1$s • %2$s%s hlas
@@ -423,7 +423,7 @@
Dodatečné komentářePřeposlat na %sNahlášení selhalo
- Stahování tootů neuspělo
+ Stahování tootů neuspěloNahlášení bude zasláno moderátorovi vašeho serveru. Níže můžete uvést, proč tento účet nahlašujete:Tento účet je z jiného serveru. Chcete na něj také poslat anonymizovanou kopii\?Zobrazit filtr oznámení
@@ -439,11 +439,11 @@
Lze zvolit více možnostíMožnost %dUpravit
- Plánované tooty
+ Plánované tootyUpravitPřidat anketu
- Plánované tooty
- Naplánovat toot
+ Plánované tooty
+ Naplánovat tootObnovitVždy rozbalovat tooty označené varováními o obsahuCelé slovo
@@ -464,12 +464,12 @@
Audio soubory musí být menší než 40MB.Ukazovat náhledy k odkazůmMastodon neumožňuje pracovat s intervalem menším než 5 minut.
- Zatím zde nemáte žádné naplánované statusy.
+ Zatím zde nemáte žádné naplánované statusy.Zatím zde nejsou žádné koncepty.Možnost přetahování prstem pro přechod mezi kartamiSeznamPřidat hashtag
- Uloženo do Záložek
+ Uloženo do ZáložekVybrat seznamUmístění hlavní navigační lištyHashtagy
diff --git a/app/src/main/res/values-cy/strings.xml b/app/src/main/res/values-cy/strings.xml
index f83df624..ca22d127 100644
--- a/app/src/main/res/values-cy/strings.xml
+++ b/app/src/main/res/values-cy/strings.xml
@@ -23,8 +23,8 @@
LleolFfedereiddwydTŵtio
- Negeseuon
- Gydag ymatebion
+ Negeseuon
+ Gydag ymatebionDilyniadauDilynwyrFfefrynnau
@@ -34,14 +34,14 @@
Golygu\'ch ProffilDrafftiauTrwyddedau
- %s wedi\'u hybu
- Cynnwys sensitif
- Cyfryngau cudd
- Cliciwch i weld
- Dangos Mwy
- Dangos Llai
- Chwyddo
- Lleihau
+ %s wedi\'u hybu
+ Cynnwys sensitif
+ Cyfryngau cudd
+ Cliciwch i weld
+ Dangos Mwy
+ Dangos Llai
+ Chwyddo
+ LleihauDim byd yma. Tynnwch lawr i adnewyddu!%s wedi hybu\'ch tŵt%s wedi nodi\'ch tŵt yn ffefryn
@@ -98,14 +98,14 @@
Bysellfwrdd emojiLawrlwytho %1$sCopïo\'r ddolen
- Rhannu URL Tŵt i…
- Rhannu Tŵt i…
+ Rhannu URL Tŵt i…
+ Rhannu Tŵt i…Rhannu cyfryngau i…Anfonwyd!Dad-flociwyd y defnyddiwrDad-fudwyd y defnyddiwr
- Anfonwyd!
- Anfonwyd yr ateb.
+ Anfonwyd!
+ Anfonwyd yr ateb.Pa achos?Beth sy\'n digwydd?Rhybudd cynnwys
@@ -132,7 +132,7 @@
LawrlwythoTynnu\'r cais i ddilyn yn ôl?Dad-ddilyn y cyfrif hwn?
- Dileu\'r tŵt hwn?
+ Dileu\'r tŵt hwn?Cyhoeddus: Postio i ffrydiau cyhoeddusHeb restru: Peidio â dangos ar ffrydiau cyhoeddusDilynwyr yn Unig: Postio i ddilynwyr yn unig
@@ -157,8 +157,8 @@
PorwrDefnyddio Tabiau Personol Chrome Cuddio\'r botwm creu wrth sgrolio
- Hidlo ffrwd
- Tabiau
+ Hidlo ffrwd
+ TabiauDangos hybiadauDangos atebionDangos rhagolwg o gyfryngau
@@ -172,12 +172,12 @@
CyhoeddusHeb ei restruDilynwyr yn unig
- Maint testun statws
- Lleiaf
- Bach
- Canolig
- Mawr
- Mwyaf
+ Maint testun statws
+ Lleiaf
+ Bach
+ Canolig
+ Mawr
+ Mwyaf Yn sôn amdanoch o\'r newydd Hysbysiadau sôn amdanoch o\'r newyddDilynwyr Newydd
@@ -211,10 +211,10 @@
https://git.chinwag.org/chinwag/chinwag-android/issues
Proffil Tusky
- Rhannu cynnwys tŵt
- Rhannu dolen i\'r tŵt
- Delweddau
- Fideo
+ Rhannu cynnwys tŵt
+ Rhannu dolen i\'r tŵt
+ Delweddau
+ FideoGofyn i ddilyn%dy
@@ -244,11 +244,11 @@
Cloi cyfrifAngen cymeradwyo dilynwyr eich hunCadw drafft?
- Yn anfon Tŵt…
- Gwall wrth anfon Tŵt
- Yn anfon Tŵtiau
- Canslo anfon
- Cadwyd copi o\'r tŵt i\'ch drafftiau
+ Yn anfon Tŵt…
+ Gwall wrth anfon Tŵt
+ Yn anfon Tŵtiau
+ Canslo anfon
+ Cadwyd copi o\'r tŵt i\'ch drafftiau CreuNid oes gan eich achos %s emoji bersonolCopïwyd i\'r clipfwrdd
@@ -256,8 +256,8 @@
Rhagosodiad systemBydd angen i chi lawrlwytho\'r setiau emoji hyn yn gyntaf Wrthi\'n chwilio…
- Chwyddo/lleihau pob statws
- Agor tŵt
+ Chwyddo/lleihau pob statws
+ Agor tŵtAngen ailddechrau\'r appBydd angen ailddechrau Tusky i roi\'r newidiadau ar waithNes ymlaen
@@ -275,11 +275,11 @@
ychwanegu dataCynnwysDefnyddio amser absoliwt
- \@%s
+ \@%sDigwyddodd gwall rhwydwaith! Gwiriwch eich cysylltiad a cheisiwch eto!Negeseuon UniongyrcholTabiau
- Wedi\'i binio
+ Wedi\'i binioParthau cuddDim byd yma.Dileu hwb
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 7515ccd9..fef59401 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -26,9 +26,9 @@
DirektnachrichtenTabsBeitrag
- Beiträge
- mit Antworten
- Angeheftet
+ Beiträge
+ mit Antworten
+ AngeheftetFolgtFolgendeFavoriten
@@ -38,15 +38,15 @@
Dein Profil bearbeitenEntwürfeLizenzen
- \@%s
- %s teilte
- Heikle Inhalte
- Medien versteckt
- Zum Anzeigen tippen
- Zeige mehr
- Zeige weniger
- Mehr
- Weniger
+ \@%s
+ %s teilte
+ Heikle Inhalte
+ Medien versteckt
+ Zum Anzeigen tippen
+ Zeige mehr
+ Zeige weniger
+ Mehr
+ WenigerHier ist nichts.Noch keine Beiträge hier! Ziehe nach unten um zu aktualisieren!%s teilte deinen Beitrag
@@ -119,14 +119,14 @@
Link kopierenÖffne als %sTeilen als …
- Beitragslink teilen…
- Beitragsinhalt teilen…
+ Beitragslink teilen…
+ Beitragsinhalt teilen…Mediendatei teilen…Gesendet!entblocktStummschaltung aufgehoben
- Gesendet!
- Antwort erfolgreich gesendet.
+ Gesendet!
+ Antwort erfolgreich gesendet.Welche Instanz?Was gibt\'s Neues?Inhaltswarnung
@@ -153,7 +153,7 @@
HerunterladenFolgeanfrage zurückziehen?Willst du diesem Profil wirklich nicht mehr folgen?
- Diesen Beitrag löschen?
+ Diesen Beitrag löschen?Öffentlich: Für alle sichtbarUngelistet: Nicht in der öffentlichen Timeline sichtbarNur Folgende: Nur für Folgende sichtbar
@@ -182,8 +182,8 @@
Links in der App (Browser Custom Tabs) öffnenVerstecke Button bei Bildlauf Sprache
- Timeline-Filter
- Tabs
+ Timeline-Filter
+ TabsGeteilte Beiträge anzeigenZeige AntwortenMedienvorschauen herunterladen
@@ -199,20 +199,20 @@
ÖffentlichNicht gelistetNur Folgende
- Schriftgröße
- Kleiner
- Klein
- Normal
- Groß
- Größer
+ Schriftgröße
+ Kleiner
+ Klein
+ Normal
+ Groß
+ GrößerNeue ErwähnungenBenachrichtigungen über neue ErwähnungenNeue FolgendeBenachrichtigunen über neue FolgendeGeteilte Beiträge
- Benachrichtigungen wenn deine Beiträge geteilt werden
+ Benachrichtigungen, wenn deine Beiträge geteilt werdenFavorisierte Beiträge
- Benachrichtigungen wenn deine Beiträge favorisiert werden
+ Benachrichtigungen, wenn deine Beiträge favorisiert werden%s hat dich erwähnt%1$s, %2$s, %3$s und %4$d andere%1$s, %2$s, und %3$s
@@ -236,10 +236,10 @@
https://git.chinwag.org/chinwag/chinwag-android/issues
Tuskys Profil
- Inhalt teilen
- Link teilen
- Bilder
- Video
+ Inhalt teilen
+ Link teilen
+ Bilder
+ VideoFolgeanfrage gesendetFolgt dir
@@ -272,11 +272,11 @@
Gesperrtes ProfilWer dir folgen möchte, muss um deine Erlaubnis bittenEntwurf speichern?
- Beitrag senden…
- Fehler beim Senden
- Beiträge senden
- Senden abgebrochen
- Eine Kopie des Beitrags wurde in deine Entwürfe gespeichert
+ Beitrag senden…
+ Fehler beim Senden
+ Beiträge senden
+ Senden abgebrochen
+ Eine Kopie des Beitrags wurde in deine Entwürfe gespeichertBeitrag erstellenDeine Instanz %s hat keine Emojis definiertIn die Zwischenablage kopiert
@@ -284,8 +284,8 @@
System-StandardDu musst diese Emoji-Sets zunächst herunterladenNachschlagen…
- Alle Beiträge aus-/einklappen
- Beitrag öffnen
+ Alle Beiträge aus-/einklappen
+ Beitrag öffnenApp-Neustart erforderlichDu musst Tusky neustarten um die Änderungen anzuwendenSpäter
@@ -319,8 +319,8 @@
Maximum von %1$d Tab erreichtMaximum von %1$d Tabs erreicht
- Keine Beschreibung
- Favorisiert
+ Keine Beschreibung
+ Favorisiert Öffentlich FolgendeDirekt
@@ -341,12 +341,12 @@
<b>%1$s</b> FavoritenGeteilt von
- Medien: %s
- Inhaltswarnung: %s
- Geteilt
+ Medien: %s
+ Inhaltswarnung: %s
+ GeteiltUngelistetLöschen und neu erstellen
- Bist du dir sicher, dass du diesen Beitrag löschen und neu erstellen möchtest\?
+ Bist du dir sicher, dass du diesen Beitrag löschen und neu erstellen möchtest\?Umfragen beendet sindUmfragenBenachrichtigungen über beendete Umfragen
@@ -416,28 +416,28 @@
Beiträge mit Inhaltswarnungen immer ausklappenUmfrage mit den Möglichkeiten: %1$s, %2$s, %3$s, %4$s; %5$sAktionen für Bild %s
- Fehler beim Holen der Beiträge
+ Fehler beim Holen der BeiträgeKontenFehler beim SuchenAuswahlmöglichkeit hinzufügenMehrere MöglichkeitenMöglichkeit %d
- Geplante Beiträge
+ Geplante BeiträgeEditieren
- Geplante Beiträge
- Plane Beitrag
+ Geplante Beiträge
+ Plane BeitragZurücksetzenAudiodateien müssen kleiner als 40 MB sein.LesezeichenLesezeichenLesezeichenAngetrieben durch Tusky
- Als Lesezeichen gespeichert
+ Als Lesezeichen gespeichertListe auswählenListeFehler beim Nachschlagen von Post %sDu hast keine Entwürfe.
- Du hast keine geplanten Beiträge.
+ Du hast keine geplanten Beiträge.Das Datum des geplanten Toots muss mindestens 5 Minuten in der Zukunft liegen.Benachrichtigungen über neue FolgeanfragenNeue Folgeanfragen
@@ -478,9 +478,9 @@
Titel der Hauptnavigation versteckenIm Moment gibt es keine Ankündigungen.Ankündigungen
- Der Beitrag auf den du antworten willst wurde gelöscht
+ Der Beitrag auf den du antworten willst wurde gelöschtEntwurf gelöscht
- Dieser Beitrag konnte nicht gesendet werden!
+ Dieser Beitrag konnte nicht gesendet werden!Willst du die Liste %s wirklich löschen\?Du kannst nicht mehr als %1$d Anhang hochladen.
@@ -489,12 +489,12 @@
WohlbefindenDauerFür immer
- Anhänge
- Audio
+ Anhänge
+ AudioBenachrichtigungen, wenn jemand, den ich abonniert habe, etwas Neues veröffentlichtNeue BeiträgeGIF-Emojis animieren
- Jemand, den ich abonniert habe, etwas Neues veröffentlicht
+ Jemand, den ich abonniert habe, hat etwas Neues veröffentlicht%s hat gerade etwas gepostet%d Min.Benachrichtigungen überprüfen
@@ -521,4 +521,11 @@
Bestätigungsdialog vor dem Favorisieren eines BeitragsDiese Unterhaltung wirklich löschen\?Unterhaltung löschen
+ 30 Tage
+ 60 Tage
+ 90 Tage
+ 365 Tage
+ 14 Tage
+ 180 Tage
+ Beitrag erstellen
\ No newline at end of file
diff --git a/app/src/main/res/values-en-rGB/strings.xml b/app/src/main/res/values-en-rGB/strings.xml
index 06bc38e1..de167b85 100644
--- a/app/src/main/res/values-en-rGB/strings.xml
+++ b/app/src/main/res/values-en-rGB/strings.xml
@@ -1,23 +1,59 @@
The account is from another server. Send an anonymised copy of the report there as well\?
- Favourited
+ FavouritedFavourited by<b>%1$s</b> Favourite<b>%1$s</b> Favourites
- Notifications when your toots get marked as favourite
+ Notifications when your posts get marked as favouriteFavouritesmy posts are favouritedShow favouritesFavouritesRemove favouriteFavourite
- %s favourited your toot
+ %s favourited your postFavouritesAuthorisation was denied.An unidentified authorisation error occurred.Log outShow colourful gradients for hidden media
+ Edit your profile
+ Permission to read media is required.
+ Images and videos cannot both be attached to the same post.
+ A network error occurred! Please check your connection and try again!
+ Failed authenticating with that instance.
+ Couldn\'t find a web browser to use.
+ Failed getting a login token.
+ Notifications
+ Posts
+ Follows
+ Hidden domains
+ That type of file cannot be uploaded.
+ Federated
+ The upload failed.
+ Bookmarks
+ That file could not be opened.
+ Direct Messages
+ Followers
+ The post is too long!
+ An error occurred.
+ Local
+ Blocked users
+ Video files must be less than 40MB.
+ Tabs
+ Audio files must be less than 40MB.
+ Follow Requests
+ Home
+ Muted users
+ Thread
+ The file must be less than 8MB.
+ Error sending post.
+ This cannot be empty.
+ Permission to store media is required.
+ Invalid domain entered
+ With replies
+ Pinned
\ No newline at end of file
diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml
index 4f99bbf6..5b47ccd0 100644
--- a/app/src/main/res/values-eo/strings.xml
+++ b/app/src/main/res/values-eo/strings.xml
@@ -26,9 +26,9 @@
Rektaj mesaĝojLangetojMesaĝo
- Mesaĝoj
- Kun respondoj
- Alpinglitaj
+ Mesaĝoj
+ Kun respondoj
+ AlpinglitajSekvatojSekvantojStelumoj
@@ -38,15 +38,15 @@
Redakti vian profilonMalnetojPermesiloj
- \@%s
- %s diskonigis
- Tikla enhavo
- Kaŝitaj aŭdovidaĵoj
- Alklaki por vidi
- Montri pli
- Montri malpli
- Pligrandigi
- Malgrandigi
+ \@%s
+ %s diskonigis
+ Tikla enhavo
+ Kaŝitaj aŭdovidaĵoj
+ Alklaki por vidi
+ Montri pli
+ Montri malpli
+ Pligrandigi
+ MalgrandigiNenio ĉi tie.Nenio ĉi tie. Tiru malsupren por aktualigi!%s diskonigis vian mesaĝon
@@ -122,14 +122,14 @@
Konigi kiel …Elŝuti aŭdovidaĵonElŝutante aŭdovidaĵo
- Konigi URL de mesaĝo al…
- Konigi mesaĝon al…
+ Konigi URL de mesaĝo al…
+ Konigi mesaĝon al…Konigi aŭdovidaĵon al…Sendita!Malblokita uzantoMalsilentigita uzanto
- Sendita!
- Respondi sukcese sendita.
+ Sendita!
+ Respondi sukcese sendita.Kiu nodo?Kio okazas?Enhava averto
@@ -152,7 +152,7 @@
ElŝutiNuligi peton de sekvado?Ne plu sekvi?
- Forigi ĉi tiun mesaĝon?
+ Forigi ĉi tiun mesaĝon?Publika: afiŝi en publikaj tempoliniojNelistigita: Ne afiŝi en publikaj tempoliniojNur por sekvantoj: Afiŝi nur al sekvantoj
@@ -181,8 +181,8 @@
Uzi la integritan retumilonKâsi butonon de verko dum rulumadoLingvo
- Filtrado de tempolinioj
- Langetoj
+ Filtrado de tempolinioj
+ LangetojMontri diskonigojnMontri la respondojnElŝuti antaŭvidojn de aŭdovidaĵoj
@@ -198,12 +198,12 @@
PublikaNelistigitaNur por sekvantoj
- Grando de teksto de mesaĝoj
- La plej malgranda
- Malgranda
- Meza
- Granda
- La plej granda
+ Grando de teksto de mesaĝoj
+ La plej malgranda
+ Malgranda
+ Meza
+ Granda
+ La plej grandaNovaj menciojSciigoj pri novajn menciojnNovaj sekvantoj
@@ -239,10 +239,10 @@
https://git.chinwag.org/chinwag/chinwag-android/issues
Profilo de Tusky
- Konigi enhavon de la mesaĝo
- Konigi ligilon al mesaĝo
- Bildoj
- Video
+ Konigi enhavon de la mesaĝo
+ Konigi ligilon al mesaĝo
+ Bildoj
+ VideoSekvado petitaen %dj
@@ -292,11 +292,11 @@
Ŝlosi kontonVi devas permane rajtigi sekvantojnKonservi malneton?
- Sendante la mesaĝo…
- Eraro dum sendo de la mesaĝo
- Sendante la mesaĝoj
- Sendo nuligita
- Kopio de la mesaĝo estis konservita en viaj malnetoj
+ Sendante la mesaĝo…
+ Eraro dum sendo de la mesaĝo
+ Sendante la mesaĝoj
+ Sendo nuligita
+ Kopio de la mesaĝo estis konservita en viaj malnetojVerkiVia nodo %s ne havas proprajn emoĝiojnKopiita en tondujo
@@ -304,8 +304,8 @@
Sistema valoroVi unue devos elŝuti ĉi tiujn emoĝiarojnSerĉante…
- Pligrandigi/malgrandigi ĉiujn mesaĝojn
- Malfermi mesaĝon
+ Pligrandigi/malgrandigi ĉiujn mesaĝojn
+ Malfermi mesaĝonRestartigo necesasVi devos restartigi Tusky por apliki ĉi tiujn ŝanĝojnPoste
@@ -347,15 +347,15 @@
maksimumo da %1$d langeto atingitamaksimumo da %1$d langetoj atingita
- Aŭdovidaĵo: %s
+ Aŭdovidaĵo: %s
- Enhava averto: %s
+ Enhava averto: %s
- Neniu priskribo
+ Neniu priskribo
- Diskonigita
+ Diskonigita
- Stelumita
+ Stelumita
Publika
@@ -365,7 +365,7 @@
Rekta Nomo de la listoForigi kaj reskribi
- Ĉu forigi kaj reskribi ĉi-tiun mesaĝon\?
+ Ĉu forigi kaj reskribi ĉi-tiun mesaĝon\?enketoj finiĝisMontri indikilon por robotojMoviĝi GIF profilbildojn
@@ -404,7 +404,7 @@
Pliaj komentojPlusendi al %sSignalo malsukcesis
- Venigo de statusoj malsukcesis
+ Venigo de statusoj malsukcesisLa signalo estos sendita al la kontrolantoj de via servilo. Vi povas doni klarigon pri kial vi signalas ĉi tiun konton sube:La konto estas en alia servilo. Ĉu sendi sennomigitan kopion de la signalo ankaŭ tien\?Montri filtrilon de Sciigoj
@@ -427,21 +427,21 @@
Elekton %dRedaktiLegosignoj
- Planitaj mesaĝoj
+ Planitaj mesaĝojAldoni al la legosignojRedaktiLegosignoj
- Planitaj mesaĝoj
- Plani mesaĝon
+ Planitaj mesaĝoj
+ Plani mesaĝonRestarigiFunkciigita de Tusky
- Aldonita al la legosignoj
+ Aldonita al la legosignojElekti la listonListoEraro dum elserĉo de la mesaĝo %sAŭdia dosiero devas esti malpli ol 40MB.Vi ne havas iun ajn malneton.
- Vi ne havas iun ajn planitan mesaĝon.
+ Vi ne havas iun ajn planitan mesaĝon.Petoj de sekvadoKradvortoj
@@ -490,10 +490,10 @@
Estas neniu anonco.Ebligi ŝovumadon por ŝanĝi inter la langetojMastodon havas minimuman intervalon de planado de 5 minutoj.
- Kunsendaĵoj
+ Kunsendaĵojiu kiun mi sekvas afiŝis novan mesaĝonĈu vi vere volas forigi la liston %s\?
- Aŭdio
+ AŭdioAboniMalneto forigita
@@ -511,7 +511,7 @@
Forigi konversacion%s ĵus afiŝisSciigoj kiam iu kiun vi sekvas afiŝis novan mesaĝon
- Sendo de ĉi-tiu mesaĝo malsukcesis!
+ Sendo de ĉi-tiu mesaĝo malsukcesis!Kaŝi kvantecajn statistikaĵojn sur la mesaĝojDemandi konfirmon antaŭ ol stelumiBonstato
@@ -525,5 +525,5 @@
\n Puŝosciigoj ne estos influitaj, sed vi povas kontroli viajn sciigojn preferojn permane.Kontroli la sciigojnLimigi sciigojn pri tempolinio
- La mesaĝo al kiu ĉi tiu malneto respondas estis forigita
+ La mesaĝo al kiu ĉi tiu malneto respondas estis forigita
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 5bc4dd3b..43b072a5 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -26,9 +26,9 @@
Mensajes DirectosPestañasPublicación
- Estados
- Con respuestas
- Fijado
+ Estados
+ Con respuestas
+ FijadoSiguiendoSeguidoresFavoritos
@@ -38,15 +38,15 @@
Editar tu perfilBorradoresLicencias
- \@%s
- %s compartió
- Contenido sensible
- Material oculto
- Pulsa para ver
- Mostrar más
- Mostrar menos
- Expandir
- Ocultar
+ \@%s
+ %s compartió
+ Contenido sensible
+ Material oculto
+ Pulsa para ver
+ Mostrar más
+ Mostrar menos
+ Expandir
+ OcultarNada aquí.Nada por aquí. ¡Arrastra hacia abajo para recargar!%s impulsó tu toot
@@ -108,14 +108,14 @@
Copiar el enlaceAbrir como %sCompartir como…
- Compartir URL…
- Compartir contenido…
+ Compartir URL…
+ Compartir contenido…Compartir medios a…¡Enviado!El usuario ya no está bloqueadoEl usuario ya no está silenciado
- ¡Enviado!
- Respuesta enviada correctamente.
+ ¡Enviado!
+ Respuesta enviada correctamente.¿Qué instancia\?¿En qué estás pensando?Aviso de contenido
@@ -142,7 +142,7 @@
Descargar¿Cancelar petición de amistad?¿Dejar de seguir esta cuenta?
- ¿Eliminar este toot\?
+ ¿Eliminar este toot\?Público: Mostrar en historias públicasOculto: No mostrar en historias públicasPrivado: Sólo visible para seguidores
@@ -168,8 +168,8 @@
NavegadorUsar pestañas de ChromeOcultar botón de redacción al bajar
- Filtros de cronología
- Pestañas
+ Filtros de cronología
+ PestañasMostrar impulsosMostrar respuestasPrevisualizar multimedia
@@ -185,12 +185,12 @@
PúblicoOcultoPrivado
- Tamaño del texto
- Diminuto
- Pequeño
- Medio
- Grande
- Enorme
+ Tamaño del texto
+ Diminuto
+ Pequeño
+ Medio
+ Grande
+ EnormeNuevas mencionesNotificaciones de nuevas mencionesNuevos seguidores
@@ -226,10 +226,10 @@
https://git.chinwag.org/chinwag/chinwag-android/issues
Perfil de Tusky
- Compartir contenido
- Compartir enlace
- Imágenes
- Video
+ Compartir contenido
+ Compartir enlace
+ Imágenes
+ VideoSolicitud enviadaen %dy
@@ -262,11 +262,11 @@
Proteger cuentaTendrá que admitir los seguidores manualmente¿Guardar borrador?
- Enviando estado…
- Error al enviar el estado
- Enviando estado
- Envío cancelado
- Una copia del estado se ha guardado en borradores
+ Enviando estado…
+ Error al enviar el estado
+ Enviando estado
+ Envío cancelado
+ Una copia del estado se ha guardado en borradoresRedactarSu instancia %s no ofrece emojis personalizadosCopiado al portapapeles
@@ -274,8 +274,8 @@
SistemaTendrás que descargarlos primeroBuscando…
- Expandir/ocultar todos los estados
- Abrir
+ Expandir/ocultar todos los estados
+ AbrirReinicio requeridoTendrás que reiniciar la aplicación para aplicar estos cambiosMás tarde
@@ -332,7 +332,7 @@
Renombrar la listaAñadir cuenta a la listaEliminar cuenta de la lista
- 1Favoritos
+ 1FavoritosSeguidoresAplicarMostrar indicador de bots
@@ -366,7 +366,7 @@
EnlacesAbrir contenido #%dDescargando contenido
- ¿Eliminar y devolver a borradores este toot\?
+ ¿Eliminar y devolver a borradores este toot\?encuestas han terminadoNotificaciones sobre encuestas que han terminadoCronologías públicas
@@ -381,10 +381,10 @@
Eliminar la listaEditar la listaBuscar personas que sigues
- Contenido: %s
- Aviso de contenido: %s
- Sin descripción
- Compartido
+ Contenido: %s
+ Aviso de contenido: %s
+ Sin descripción
+ CompartidoPúblicoSin listarDirecto
@@ -419,7 +419,7 @@
Comentarios adicionalesReenviar a %sReporte fallido
- Fallo al obtener estados
+ Fallo al obtener estadosEl reporte será enviado a un moderador de tu servidor. Puedes añadir una explicación de por qué estás reportando esta cuenta a continuación:La cuenta es de otro servidor. ¿Enviar una copia anónima del reporte\?Mostrar filtro de notificaciones
@@ -439,22 +439,22 @@
Opciones múltiplesOpción %dEditar
- Estados programados
+ Estados programadosEditar
- Estados programados
- Programar estado
+ Estados programados
+ Programar estadoReiniciarError al buscar el post %sPotenciado por TuskyMarcadoresMarcadorMarcadores
- Marcado como favorito
+ Marcado como favoritoSeleccionar listaListaLos ficheros de audio deben ser menores de 40MB.No tienes ningún borrador.
- No tienes ningún estado programado.
+ No tienes ningún estado programado.Mastodon tiene un intervalo de programación mínimo de 5 minutos.SolicitudesBloquear @%s\?
@@ -506,15 +506,15 @@
\n- Estadísticas de seguidores e toots en perfiles
\n
\nLas notificaciones Push no serán afectadas, pero puedes revisar manualmente tus preferencias.
- El toot al que redactaste una respuesta ha sido eliminado
+ El toot al que redactaste una respuesta ha sido eliminadoBorrador eliminadoError al cargar la información de respuesta
- ¡Este toot no se pudo enviar!
+ ¡Este toot no se pudo enviar!¿Realmente quieres eliminar la lista %s\?IndefinidoDuración
- Adjuntos
- Audio
+ Adjuntos
+ AudioLimitar cronología de notificacionesQuitar marcadorAunque su cuenta no está bloqueada, el personal de %1$s pensó que podría querer revisar las solicitudes de seguimiento de estas cuentas manualmente.
diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml
index 52722060..791575b7 100644
--- a/app/src/main/res/values-eu/strings.xml
+++ b/app/src/main/res/values-eu/strings.xml
@@ -23,8 +23,8 @@
LokalaFederatuaTuta
- Tutak
- Erantzunekin
+ Tutak
+ ErantzunekinJarraitzenJarraitzaileakGogokoak
@@ -34,14 +34,14 @@
Profila editatuZirriborroakLizentziak
- %s(e)k bultzatu du
- Kontuz edukiarekin
- Ezkutuko multimedia
- Sakatu ikusteko
- Gehiago erakutsi
- Gutxiago erakutsi
- Zabaldu
- Bildu
+ %s(e)k bultzatu du
+ Kontuz edukiarekin
+ Ezkutuko multimedia
+ Sakatu ikusteko
+ Gehiago erakutsi
+ Gutxiago erakutsi
+ Zabaldu
+ BilduEdukirik ez. Arrastatu behera birkargatzeko!%s(e)k zure tuta bultzatu du%s(e)k zure tuta gogoko du
@@ -99,14 +99,14 @@
Emoji teklatua%1$s jaistenLotura kopiatu
- Tutaren URLa partekatu…
- Tuta partekatu…
+ Tutaren URLa partekatu…
+ Tuta partekatu…Partekatu media hona…Bidalia!Erabiltzailea desblokeatutaErabiltzailea isilgabetuta
- Bidalia!
- Erantzuna ongi bidali da.
+ Bidalia!
+ Erantzuna ongi bidali da.Zein instantzia\?Zer duzu buruan?Edukiaren abisua
@@ -131,7 +131,7 @@
JaitsiJarraipen-eskakizunari uko egin\?Kontu hau jarraitzeari utzi\?
- Tuta ezabatu\?
+ Tuta ezabatu\?Publikoa: Istorio publikoetan erakutsiEzkutukoa: Ez erakutsi istorio publikoetanPribatua: Jarraitzaileentzat soilik ikusgai
@@ -157,8 +157,8 @@
NabigatzaileaChromeko fitxak erabiliTut egiteko botoia ezkutatu beherantz joaterakoan
- Denbora-lerro filtroak
- Fitxak
+ Denbora-lerro filtroak
+ FitxakBultzadak erakutsiErakutsi erantzunakJaitsi mediaren aurreikuspenak
@@ -174,12 +174,12 @@
PublikoZerrendagabetutaJarraitzaileak soilik
- Status testuaren tamaina
- Oso txikia
- Txikia
- Erdikoa
- Handia
- Handiena
+ Status testuaren tamaina
+ Oso txikia
+ Txikia
+ Erdikoa
+ Handia
+ HandienaAipamen berriakAipamen berrien jakinarazpenakJarritzaile berriak
@@ -213,10 +213,10 @@
Akatsen berri-emateak eta hobekuntza-eskariak:
\n https://git.chinwag.org/chinwag/chinwag-android/issuesTuskyren profila
- Partekatu tutaren edukia
- Partekatu tutaren lotura
- Irudiak
- Bideoak
+ Partekatu tutaren edukia
+ Partekatu tutaren lotura
+ Irudiak
+ BideoakEskaera bidalita%du-an
@@ -246,11 +246,11 @@
Kontua babestuJarraitzaileak eskuz onartu beharko dituzuZirriborroa gorde?
- Tuta bidaltzen…
- Errorea tuta bidaltzerakoan
- Tuta bidaltzen
- Bidalketa ezeztatua
- Tutaren kopia zirriborroetan sartu da
+ Tuta bidaltzen…
+ Errorea tuta bidaltzerakoan
+ Tuta bidaltzen
+ Bidalketa ezeztatua
+ Tutaren kopia zirriborroetan sartu daIdatzi%s instantziak ez ditu emoji pertsonalizatuak eskaintzenArbelean kopiatua
@@ -258,8 +258,8 @@
SistemaLehenago jaitsi beharko dituzuBilatzen…
- Tut guztiak ezkutatu/zabaldu
- Ireki
+ Tut guztiak ezkutatu/zabaldu
+ IrekiBerrabiaraztea beharrezkoa daAplikazioa berrabiarazi beharko duzu aldaketa ezartzekoBeranduago
@@ -285,10 +285,10 @@
Sareko errore bat sortu da! Zure konexioa ziurta ezazu berriro, mesedez!Mezu ZuzenakFitxak
- Lotuta
+ LotutaEzkutuko domeinuak
- Programatutako tutak
- \@%s
+ Programatutako tutak
+ \@%sKilkerrak besterik ez hemen.Bultzada kenduGogokoa kendu
@@ -297,8 +297,8 @@
Ezkutuko domeinuakGaldeketa gehituMututu %s
- Programatutako tutak
- Tuta programatu
+ Programatutako tutak
+ Tuta programatuBerrezarriKategoria gehituEstekak
@@ -313,7 +313,7 @@
Media jaistenMedia jaisten%s ez dago ezkutatua
- Tut hau ezabatu eta zirriborro berria egin\?
+ Tut hau ezabatu eta zirriborro berria egin\?Ziur al zaude %s ezabatu nahi duzula\? Domeinu horretatik datorren edukia ez duzu denbora-lerro publikoetan edo jakinarazpenetan ikusiko. Domeinu horretan dituzun jarraitzaileak ezabatuko dira.Domeinu osoa ezkutatuGaldeketak bukatu dira
@@ -370,11 +370,11 @@
gehienezko %1$d fitxa iritsitagehienezko %1$d fitxa iritsita
- Media: %s
- Edukiaren abisua: %s
- Deskribapenik ez
- Birblogeatuta
- Gogotuta
+ Media: %s
+ Edukiaren abisua: %s
+ Deskribapenik ez
+ Birblogeatuta
+ GogotutaPublikoZerrendagabetutaJarraitzaileak
@@ -418,7 +418,7 @@
Iruzkin gehigarriak%s(r)i birbidaliTxostena huts egin du
- Egoeren eskuratzea huts egin du
+ Egoeren eskuratzea huts egin duTxostena zure zerbitzariaren moderatzaileari bidaliko zaio. Jarraian, kontu honen zergatia salatzen duzun azalpena eman dezakezu:Kontua beste zerbitzari batekoa da. Bidali txostenaren kopia anonimatua hara ere\?Kontuak
@@ -442,12 +442,12 @@
Laster-markakIreki bultzadaren egileaDenbora lerro publikoak
- Laster-markatuta
+ Laster-markatutaAudioak 40MB baino gutxiago izan behar ditu.Aukeratu zerrendaZerrendaEz duzu zirriborrorik.
- Ez duzu tut programaturik.
+ Ez duzu tut programaturik.Mastodonek gutxienez 5 minutuko programazio-tartea du.EskakizunakJarraitzeko eskaereri buruzko jakinarazpenak
@@ -480,16 +480,16 @@
Erakutsi baieztapen elkarrizketa-koadroa gogokoenetara gehitu aurretikZure kontua blokeatuta ez badago ere, %1$s-ko langileek kontu hauetako eskaerak eskuz berrikusi nahi dituzula pentsatu dute.harpidedun naizen norbaitek tut berria argitaratu du
- Eranskinak
+ EranskinakZiur %s zerrenda ezabatu nahi duzula\?
- Audioa
+ AudioaHarpidetuElkarrizketa ezabatu nahi duzu\?Animatu emoji pertsonalizatuakErantzunaren informazioa ezin izan da kargatuProfiletan estatistika kuantitatiboak ezkutatuZirriborroa ezabatu da
- Erantzuna idatzi zenuen tuta ezabatu da
+ Erantzuna idatzi zenuen tuta ezabatu daOngizateaEzin duzu multimedia eranskin %1$d baino gehiago kargatu.
@@ -511,7 +511,7 @@
IragarpenakJakinarazpenak harpidetuta zauden norbaitek tut berria argitaratu dueneanKontu honi buruzko zure ohar pribatua
- Tut honek ezin izan du bidali!
+ Tut honek ezin izan du bidali!Zure ongizate mentalean eragina izan dezaketen zenbait informazio ezkutatuta egongo dira. Honek honako hauek ditu:
\n
\n - Gogokoak, bultzadak eta jarraitzaileen jakinarazpenak
diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml
index 538f5afe..880e0e4a 100644
--- a/app/src/main/res/values-fa/strings.xml
+++ b/app/src/main/res/values-fa/strings.xml
@@ -23,8 +23,8 @@
محلّیهمگانیبوق
- فرسته
- با پاسخ
+ فرسته
+ با پاسخدنبال شوندهپیگیربرگزیدهها
@@ -34,14 +34,14 @@
ویرایش نمایهتانپیشنویسهاپروانهها
- %s تقویت کرد
- محتوای حسّاس
- رسانهٔ نهفته
- کلیک برای نمایش
- نمایش بیشتر
- نمایش کمتر
- گسترش
- بستن
+ %s تقویت کرد
+ محتوای حسّاس
+ رسانهٔ نهفته
+ کلیک برای نمایش
+ نمایش بیشتر
+ نمایش کمتر
+ گسترش
+ بستناینجا هیچچیز نیست. برای تازهسازی، به پایین بکشید!%s بوقتان را تقویت کرد%s بوقتان را برگزید
@@ -98,14 +98,14 @@
صفحهکلید اموجیدرحال بارگیری %1$sرونوشت از پیوند
- همرسانی نشانی بوق با…
- همرسانی بوق با…
+ همرسانی نشانی بوق با…
+ همرسانی بوق با…همرسانی رسانه با…فرستاده شد!کاربرنامسدود شدکاربر ناخموش شد
- فرستاده شد!
- پاسخ با موفّقیت فرستاده شد.
+ فرستاده شد!
+ پاسخ با موفّقیت فرستاده شد.کدام نمونه؟چه خبر؟هشدار محتوا
@@ -130,7 +130,7 @@
بارگیریدرخواست دنبال کردن را لغو میکنید؟ناپیگیری این حساب؟
- حذف این بوق؟
+ حذف این بوق؟عمومی: فرستادن به خط زمانیهای عمومیفهرستنشده: نشان ندادن در خط زمانیهای عمومیتنها دنبالکنندگان:پست فقط به دنبالکنندگان
@@ -156,8 +156,8 @@
مرورگراستفاده از زبانههای سفارشی کرومنهفتن دکمهٔ ایجاد، هنگام پیمایش
- فیلتر کردن خط زمانی
- زبانهها
+ فیلتر کردن خط زمانی
+ زبانههانمایش تقویتهانمایش پاسخهابارگیری پیشنمایش رسانه
@@ -173,12 +173,12 @@
عمومیفهرستنشدهفقط پیگیران
- اندازهٔ متن وضعیت
- کوچکترین
- کوچک
- متوسط
- بزرگ
- بزرگترین
+ اندازهٔ متن وضعیت
+ کوچکترین
+ کوچک
+ متوسط
+ بزرگ
+ بزرگتریناشارههای جدیدآگاهیها دربارهٔ اشارههای جدیدپیگیران جدید
@@ -209,10 +209,10 @@
گزارش مشکلات و درخواست ویژگیها:
\n https://git.chinwag.org/chinwag/chinwag-android/issuesنمایهٔ تاسکی
- همرسانی محتوای بوق
- همرسانی پیوند بوق
- تصویرها
- ویدیو
+ همرسانی محتوای بوق
+ همرسانی پیوند بوق
+ تصویرها
+ ویدیوتقاضای پیگیری شددر %d سال
@@ -241,11 +241,11 @@
قفل حسابلازم است پیگیران را دستی تأیید کنیدذخیرهٔ پیشنویس؟
- در حال فرستادن بوق…
- خطای فرستادن بوق
- در حال فرستادن بوقها
- فرستادن لغو شد
- رونوشتی از بوق در پیشنویسهایتان ذخیره شد
+ در حال فرستادن بوق…
+ خطای فرستادن بوق
+ در حال فرستادن بوقها
+ فرستادن لغو شد
+ رونوشتی از بوق در پیشنویسهایتان ذخیره شدایجادنمونهتان %s هیچ اموجی سفارشیای ندارددر تختهگیره رونوشت شد
@@ -253,8 +253,8 @@
پیشگزیدهٔ سامانهنخست باید این مجموعههای اموجی را بارگیری کنیددر حال جستوجو…
- گسترده/جمع کردن تمام وضعیتها
- گشودن بوق
+ گسترده/جمع کردن تمام وضعیتها
+ گشودن بوقنیاز به آغاز دوبارهٔ کارهبرای اعمال این تغییرات، نیاز به شروع دوبارهٔ تاسکی داریدبعداً
@@ -280,9 +280,9 @@
یک خطای شبکه رخ داد! لطفا اتصال خود را بررسی و دوباره تلاش کنید!پیامهای مستقیمزبانهها
- سنجاقشده
+ سنجاقشدهدامنههای نهفته
- \@%s
+ \@%sاینجا هیچچیزی نیست.برداشتن تقویتبرداشتن برگزیدگی
@@ -306,7 +306,7 @@
بارگیری رسانهدر حال بارگیری رسانه%s نانهفته
- میخواهید این بوق را پاک و بازنویسی کنید؟
+ میخواهید این بوق را پاک و بازنویسی کنید؟نهفتن تمام دامنهپایان نظرسنجیهاپالایهها
@@ -360,11 +360,11 @@
رسیده به بیشینهٔ %1$d زبانهرسیده به بیشینهٔ %1$d زبانه
- رسانه: %s
- هشدار محتوا: %s
- بدون هیچ توضیحی
- بازبوقیده
- برگزیده
+ رسانه: %s
+ هشدار محتوا: %s
+ بدون هیچ توضیحی
+ بازبوقیده
+ برگزیدهعمومیفهرستنشدهپیگیران
@@ -402,7 +402,7 @@
نظرهای اضافیهدایت به %sشکست در گزارش
- شکست در واکشی وضعیتها
+ شکست در واکشی وضعیتهاحسابهاشکست در جستوجونمایش پالایهٔ آگاهیها
@@ -418,10 +418,10 @@
گزینههای چندگانهگزینهٔ %dویرایش
- بوقهای زمانبسته
+ بوقهای زمانبستهویرایش
- بوقهای زمانبسته
- بوق زمانبسته
+ بوقهای زمانبسته
+ بوق زمانبستهبازنشانیمطمئنید میخواهید تمام %s را مسدود کنید؟ محتوای آن دامنه را در هیچیک از خط زمانیها یا در آگاهیهایتان نخواهید دید. پیگیرانتان از آن دامنه، برداشته خواهند شد.هنگامی که کلیدواژه یا عبارت، فقط حروفعددی باشد، فقط اگر با تمام واژه مطابق باشد، اعمال خواهد شد
@@ -435,11 +435,11 @@
نشانکهانشانکنشانکها
- نشانشده
+ نشانشدهگزینش فهرستفهرستهیچ پیشنویسی ندارید.
- هیچ وضعیت زمانبستهای ندارید.
+ هیچ وضعیت زمانبستهای ندارید.ماستودون، بازهٔ زمانبندیای با کمینهٔ ۵ دقیقه دارد.نمایش گفتوگوی تأیید، پیش از تقویتپیشنمایش پیوندها در خطزمانیها
@@ -484,21 +484,21 @@
عدم اشتراکاشتراکپیشنویس حذف شد
- فرستادن این بوق شکست خورد!
+ فرستادن این بوق شکست خورد!نهفتن آمار کمی روی نمایههانهفتن آمار کمی روی فرستههامحدود کردن آگاهیهای خطزمانیبازبینی آگاهیهاسلامتیطول
- پیوستها
- صدا
+ پیوستها
+ صداآگاهیها هنگام انتشار بوقی جدید از کسی که مشترکش هستیدبوقهای جدیداموجیهای شخصی متحرّککسی که مشترکش شدهام، بوقی جدید منتشر کرد%s چیزی فرستاد
- بوقی که پاسخی به آن را پیشنویس کردید، برداشته شده
+ بوقی که پاسخی به آن را پیشنویس کردید، برداشته شدهشکست در بار کردن اطّلاعات پاسخبرخی اطّلاعات که ممکن است روی سلامتی ذهنیتان تأثیر بگذارد، پنهان خواهند شد. همچون:
\n
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index 3638aeaf..cd3ada40 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -4,7 +4,7 @@
Animoi GIF-avataritSeuraa laitteen teemaaLopeta tilin seuraaminen\?
- Poista tuuttaus\?
+ Poista tuuttaus\?Mikä on instanssi\?Kopioi linkkiAvaa selaimessa
@@ -22,14 +22,14 @@
30 minuuttia5 minuuttiaLisää hashtag
- Ei kuvausta
+ Ei kuvaustaCC-BY-SA 4.0CC-BY 4.0Lataus epäonnistui
- Avaa tuuttaus
+ Avaa tuuttausJärjestelmän oletusEmojien tyyli
- Lähetetään tuuttausta…
+ Lähetetään tuuttausta…Tallennetaanko luonnoksena\?Lukitse tiliLisää tili
@@ -52,10 +52,10 @@
Lataa mediaNäytä suosikitLisää välilehti
- Ajasta tuuttaus
+ Ajasta tuuttausEmoji-näppäimistöSisältövaroitus
- Ajastetut tuuttaukset
+ Ajastetut tuuttauksetMuokkaa profiiliaPiilota mediaOta kuva
@@ -65,9 +65,9 @@
Estetyt tilitTiliasetuksetKirjaudu ulos
- Näytä vähemmän
- Näytä lisää
- Media piilotettu
+ Näytä vähemmän
+ Näytä lisää
+ Media piilotettuSeuraamispyynnötEstetyt tilitMykistetyt tilit
@@ -93,14 +93,14 @@
ListatPäivitäPoista
- Audio
- Video
- Kuvat
+ Audio
+ Video
+ KuvatTietojaVälityspalvelinVain seuraajatJulkinen
- Välilehdet
+ VälilehdetKieliSelainMusta
@@ -152,17 +152,17 @@
SeuraaTUUTAA!Tuuttaus
- Ajastetut tuuttaukset
+ Ajastetut tuuttauksetVastaa
- \@%s
+ \@%sLisenssitLuonnoksetSuosikitKirjanmerkitSeuraajatSeurataan
- Kiinnitetty
- Julkaisut
+ Kiinnitetty
+ JulkaisutVälilehdetPaikallinenIlmoitukset
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 4707dc17..a7f320a4 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -9,14 +9,14 @@
Une erreur d’autorisation inconnue s’est produite.Authentification refusée.Impossible de récupérer le jeton d’authentification.
- Votre pouet est trop long !
+ Votre message est trop long !Le fichier doit avoir moins de 8 Mo.Les fichiers vidéos doivent avoir moins de 40 Mo.Ce type de fichier ne peut pas être téléversé.Le fichier ne peut pas être ouvert.Permission requise pour lire le média.Permission requise pour enregistrer le média.
- Un même pouet ne peut contenir à la fois une vidéo et une image.
+ Un même message ne peut contenir à la fois une vidéo et une image.Échec d’envoi du média.Erreur lors de l’envoi du message.Accueil
@@ -25,10 +25,10 @@
GlobalMessages directsOnglets
- Pouet
- Messages
- Pouets & réponses
- Épinglés
+ Fil
+ Messages
+ Pouets & réponses
+ ÉpinglésAbonnementsAbonné·e·sFavoris
@@ -38,19 +38,19 @@
Modifier votre profilBrouillonsLicences
- \@%s
- %s a partagé
- Contenu sensible
- Média caché
- Cliquer pour voir
- Voir plus
- Voir moins
- Déplier
- Replier
+ \@%s
+ %s a partagé
+ Contenu sensible
+ Média caché
+ Cliquer pour voir
+ Voir plus
+ Voir moins
+ Déplier
+ ReplierRien ici.Il n’y a aucun pouet ici pour l’instant. Glissez vers le bas pour actualiser !
- %s a partagé votre pouet
- %s a ajouté votre pouet à ses favoris
+ %s a partagé votre message
+ %s a ajouté votre message à ses favoris%s vous suitSignaler @%sCommentaires additionnels \?
@@ -102,7 +102,7 @@
RefuserRechercherBrouillons
- Visibilité du pouet
+ Visibilité du messageContenu sensibleClavier d’émojisAjouter un onglet
@@ -122,14 +122,14 @@
Partager comme …Télécharger le médiaTéléchargement du média
- Partager le lien de votre pouet avec…
- Partager le pouet avec…
+ Partager le lien du message avec…
+ Partager le mesage avec…Partager l’image avec …Envoyé !Le compte est débloquéLe compte n’est plus masqué
- Envoyé !
- Réponse envoyée avec succès.
+ Envoyé !
+ Réponse envoyée avec succès.Quelle instance ?Quoi de neuf ?Contenu sensible
@@ -156,7 +156,7 @@
TéléchargerRévoquer la demande d’abonnement ?Ne plus suivre ce compte ?
- Supprimer ce pouet ?
+ Supprimer ce pouet ?Public : afficher dans les fils publicsNon listé : ne pas afficher dans les fils publicsAbonné·e·s uniquement : seul·e·s vos abonné·e·s verront vos statuts
@@ -170,8 +170,8 @@
Me notifier quandon me mentionneon vient de me suivre
- mes pouets sont partagés
- mes pouets sont mis en favoris
+ mes messages sont partagés
+ mes messages sont mis en favorisApparenceThème de l’applicationFils chronologiques
@@ -185,8 +185,8 @@
Utiliser le navigateur intégréMasquer le bouton de composition lors du défilementLangue
- Filtrage des fils
- Onglets
+ Filtrage des fils
+ OngletsAfficher les partagesAfficher les réponsesMontrer les miniatures des médias
@@ -202,20 +202,20 @@
PublicNon listéAbonné·e·s uniquement
- Taille du texte pour les statuts
- Plus petit
- Petit
- Moyen
- Grand
- Plus grand
+ Taille du texte pour les statuts
+ Plus petit
+ Petit
+ Moyen
+ Grand
+ Plus grandNouvelles mentionsNotifications pour les nouvelles mentionsNouveaux abonnésNotifications pour les nouveaux abonnésPartages
- Notifications quand vos pouets sont partagés
+ Notifications quand vos messages sont partagésFavoris
- Notifications quand vos pouets sont mis en favoris
+ Notifications quand vos messages sont mis en favoris%s vous a mentionné%1$s, %2$s, %3$s et %4$d autres%1$s, %2$s et %3$s
@@ -243,10 +243,10 @@
https://git.chinwag.org/chinwag/chinwag-android/issues
Profil de Tusky
- Partager le contenu du pouet
- Partager le lien du pouet
- Images
- Vidéo
+ Partager le contenu du pouet
+ Partager le lien du pouet
+ Images
+ VidéoDemande d’abonnement effectuéeen %da
@@ -297,11 +297,11 @@
Verrouiller le compteVous devez approuvez manuellement les abonnementsEnregistrer comme brouillon ?
- Envoi du pouet…
- Erreur lors de l’envoi du pouet
- Envoi des pouets
- Envoi annulé
- Une copie du pouet a été sauvegardée dans vos brouillons
+ Envoi du pouet…
+ Erreur lors de l’envoi du pouet
+ Envoi des pouets
+ Envoi annulé
+ Une copie du pouet a été sauvegardée dans vos brouillonsÉcrireVotre instance %s n’a pas d’émojis personnalisésCopié dans le presse-papier
@@ -309,8 +309,8 @@
Par défaut du systèmeVous devez commencer par télécharger ces jeux d’émojisRecherche en cours…
- Déplier/replier tout les statuts
- Ouvrir le pouet
+ Déplier/replier tout les statuts
+ Ouvrir le pouetUn redémarrage de l’application est nécessaireVous devrez redémarrer Tusky pour appliquer ces modificationsPlus tard
@@ -352,15 +352,15 @@
maximum de %1$d onglet atteintmaximum de %1$d onglets atteint
- Média : %s
+ Média : %s
- Avertissement : %s
+ Avertissement : %s
- Pas de description
+ Pas de description
- Reblogué
+ Reblogué
- Mis en favoris
+ Mis en favoris
Public
@@ -374,12 +374,12 @@
NettoyerFiltrerAppliquer
- Écrire un pouet
+ Écrire un messageÉcrireAfficher l\'indicateur de robotsDésirez-vous nettoyer toutes vos notifications de façon permanente \?Effacer et ré-écrire
- Effacer et ré-écrire ce pouet \?
+ Effacer et ré-écrire ce pouet \?Termina à %sTerminéVoter
@@ -389,19 +389,19 @@
Un sondage que vous avez créé est terminé%d jour restant
- %d jours restant
+ %d jours restants%d heure restant
- %d heures restant
+ %d heures restantes%d minute restant
- %d minutes restant
+ %d minutes restantes%d seconde restant
- %d secondes restant
+ %d secondes restantesActiver l’animation des avatarsActions pour l’image %s
@@ -420,7 +420,7 @@
Commentaires additionnelsTransférer à %sÉchec du signalement
- Échec de récupération des statuts
+ Échec de récupération des statutsLe rapport sera envoyé aux modérateur·rice·s de votre instance. Vous pouvez expliquer pourquoi vous signalez le compte ci-dessous :Êtes-vous sûr⋅e de vouloir bloquer %s en entier \? Vous ne verrez plus de contenu provenant de ce domaine, ni dans les fils publics, ni dans vos notifications. Vos abonné·e·s utilisant ce domaine seront retiré·e·s.Terminé
@@ -430,7 +430,7 @@
Un mot-clé ou une phrase alphanumérique sera appliqué·e seulement s’il ou elle correspond au mot entierComptesÉchec de la recherche
- Toujours ouvrir les pouets avec un contenu sensible
+ Toujours ouvrir les messages ayant un contenu sensibleAjouter un sondageSondage5 minutes
@@ -444,22 +444,22 @@
Choix multiplesChoix %dÉditer
- Pouets planifiés
+ Pouets planifiésÉditer
- Pouets programmés
- Planifier le pouet
+ Pouets programmés
+ Planifier le pouetRéinitialiserErreur lors de la recherche du post %sPropulsé par TuskySignetsMarquer comme signetSignets
- Ajouté aux signets
+ Ajouté aux signetsSélectionner la listeListeLes fichiers audio doivent avoir moins de 40 Mo.Vous n’avez aucun brouillon.
- Vous n’avez aucun pouet planifié.
+ Vous n’avez aucun pouet planifié.L’intervalle minimum de planification sur Mastodon est de 5 minutes.Demandes d\'abonnementBloquer @%s \?
@@ -496,28 +496,28 @@
Votre note privée sur ce compteIl n’y a pas d’annonce.Annonces
- Certaines informations susceptibles d\'affecter votre bien-être mental seront cachées. Il s\'agit :
+ Certaines informations susceptibles d’affecter votre bien-être mental seront cachées. Il s’agit :
\n
\n - des notifications de favoris, de partage et de suivi
-\n - du compte des favoris/partages sur les pouets
+\n - du nombre des favoris/partages des messages
\n - des statistiques sur les profils
\n
-\n Les notifications \"push\" ne seront pas affectées, mais vous pouvez revoir vos préférences de notification manuellement.
- une personne que je suis a publié un nouveau pouet
+\n Les notifications « push » ne seront pas affectées, mais vous pouvez revoir vos préférences de notification manuellement.
+ un compte auquel je suis abonné·e a publié un nouveau message%s vient de publierExaminer les notifications
- Nouveaux pouets
+ Nouveaux messages
- Vous ne pouvez pas téléverser plus de %1$d pièce jointe.
+ Vous ne pouvez pas téléverser plus d’ %1$d pièce jointe.Vous ne pouvez pas téléverser plus de %1$d pièces jointes.Bien-être
- Notifications quand quelqu\'un que vous suivez publie un nouveau pouet
- Limiter les notifications de la timeline
+ Notifications quand quelqu’un que vous suivez publie un nouveau message
+ Limiter les notifications du filCacher les statistiques quantitatives sur les profilsCacher les statistiques quantitatives sur les messagesSupprimer le marque-page
- Pièces jointes
+ Pièces jointesVoulez-vous vraiment supprimer la liste %s \?S’abonnerSupprimer cette conversation \?
@@ -527,10 +527,17 @@
IndéfinieSe désabonnerSupprimer la conversation
- Audio
+ AudioDemander confirmation avant de mettre en favoris
- Le message auquel répondait ce brouillon a été supprimé
- Échec d’envoi du pouet !
- Bien que votre compte ne soit pas verrouillé, l\'équipe de %1$s a pensé que vous voudriez valider manuellement les demandes de suivi provenant de ces comptes.
+ Le message auquel répondait ce brouillon a été supprimé
+ Échec d’envoi du pouet !
+ Bien que votre compte ne soit pas verrouillé, l’équipe de %1$s a pensé que vous voudriez valider manuellement les demandes de d’abonnement provenant de ces comptes.Échec du chargement des informations de réponse
+ 30 jours
+ 60 jours
+ 90 jours
+ 365 jours
+ 14 jours
+ 180 jours
+ Rédiger un message
\ No newline at end of file
diff --git a/app/src/main/res/values-fy/strings.xml b/app/src/main/res/values-fy/strings.xml
index 69cc8b7d..97ad4052 100644
--- a/app/src/main/res/values-fy/strings.xml
+++ b/app/src/main/res/values-fy/strings.xml
@@ -6,10 +6,10 @@
Emoji stylNei it klemboerd kopiearreGearstelle
- Ferstjoeren ôfbrutsen
- Toots oan it ferstjoeren
- Flater by it ferstjoeren fan toot
- Toot oan it ferstjoeren…
+ Ferstjoeren ôfbrutsen
+ Toots oan it ferstjoeren
+ Flater by it ferstjoeren fan toot
+ Toot oan it ferstjoeren…Skets bewarje\?FuortsmiteÛnderskrift pleatse
@@ -42,12 +42,12 @@
oer %dmoer %dhoer %dd
- Taheaksels
- Lûd
- Fideo
- Ôfbyldingen
- Keppeling nei toot diele
- Ynhâld fan toot diele
+ Taheaksels
+ Lûd
+ Fideo
+ Ôfbyldingen
+ Keppeling nei toot diele
+ Ynhâld fan toot dieleTusky %sOer
@@ -60,11 +60,11 @@
FavoritenFolgfersykenNije Folgers
- Grutst
- Grut
- Gewoan
- Lyts
- Lytst
+ Grutst
+ Grut
+ Gewoan
+ Lyts
+ LytstAllinnich folgersIepenbierÛnder
@@ -78,7 +78,7 @@
ProksjeMedia foarfertoaningen delheljeReaksjes sjen litte
- Ljepblêden
+ LjepblêdenTaalWebblêderSysteem Opmaak Brûke
@@ -104,8 +104,8 @@
\@%s blokkearje\?Folsleine domein ferbergjeDit petear fuortsmite\?
- Dizze toot fuortsmite en opnij opstelle\?
- Dizze toot fuortsmite\?
+ Dizze toot fuortsmite en opnij opstelle\?
+ Dizze toot fuortsmite\?Dit account net mear folgje\?Folgfersyk ynlûke\?Delhelje
@@ -117,15 +117,15 @@
Sykje…Ynhâld warskôgingWat bard der\?
- Reaksje mei sukses ferstjoerd.
- Ferstjoerd!
+ Reaksje mei sukses ferstjoerd.
+ Ferstjoerd!%s net mear ferburgenBrûker net mear negearreBrûker net mear blokkearreFerstjoerd!Media ferstjoere nei…
- Toot ferstjoere nei…
- Toot URL ferstjoere nei…
+ Toot ferstjoere nei…
+ Toot URL ferstjoere nei…Media oan it delheljenMedia delheljeDiele as…
@@ -137,11 +137,11 @@
Favoriten besjenKeppelingenLjepblêd Tafoegje
- Toot ynplanne
+ Toot ynplanneEmoji toetseboerdYnhâld warskôgingToot sichtberheid
- Ynplanne toots
+ Ynplanne tootsSketsenSykjeNet akseptearje
@@ -206,16 +206,16 @@
%s hat jo toot as favoryt oanmurkenHjir is neat. Lûk nei ûnderen om te ferfarskjen!Hjir is neat.
- Yntearre
- Ûttearre
- Minder sjen litte
- Mear sjen litte
- Klik om te besjen
- Media ferburgen
- Gefoelige ynhâld
- \@%s
+ Yntearre
+ Ûttearre
+ Minder sjen litte
+ Mear sjen litte
+ Klik om te besjen
+ Media ferburgen
+ Gefoelige ynhâld
+ \@%sLisinsjes
- Ynplanne toots
+ Ynplanne tootsSketsenJo profyl oanpasseFolgfersyken
@@ -226,9 +226,9 @@
FavoritenFolgersFolget
- Fêstset
- Mei reaksjes
- Berjochten
+ Fêstset
+ Mei reaksjes
+ BerjochtenTootLjepblêdenDirekte Berjochten
diff --git a/app/src/main/res/values-ga/strings.xml b/app/src/main/res/values-ga/strings.xml
index 9410b503..9342edf9 100644
--- a/app/src/main/res/values-ga/strings.xml
+++ b/app/src/main/res/values-ga/strings.xml
@@ -1,14 +1,14 @@
- Leathnaigh
- Taispeáin Níos Lú
- Taispeáin Níos Mó
- Cliceáil chun amharc
- Meáin i bhfolach
- Ábhar íogair
- threisigh %s
+ Leathnaigh
+ Taispeáin Níos Lú
+ Taispeáin Níos Mó
+ Cliceáil chun amharc
+ Meáin i bhfolach
+ Ábhar íogair
+ threisigh %sCeadúnais
- Tútanna sceidealta
+ Tútanna sceidealtaCuir do phróifíl in eagarLean IarrataíFearainn i bhfolach
@@ -17,8 +17,8 @@
LeabharmharcannaLeanúnaLeanúna
- Greamaithe
- Le freagraí
+ Greamaithe
+ Le freagraíTútTeachtaireachtaí DíreachaCónaidhme
@@ -64,8 +64,8 @@
Bloc @%s\?Folaigh an fearann iomlánAn bhfuil tú cinnte gur mhaith leat gach %s a bhac\? Ní fheicfidh tú ábhar ón bhfearann sin in aon amlínte poiblí ná i d’fhógraí. Bainfear do leanúna ón bhfearann sin.
- An tút seo a scriosadh agus a dhréachtú\?
- Scrios an tút seo\?
+ An tút seo a scriosadh agus a dhréachtú\?
+ Scrios an tút seo\?An cuntas seo a scaoileadh\?An iarraidh seo a leanas a chúlghairm\?Íoslódáil
@@ -81,15 +81,15 @@
Rabhadh ábhairCad atá ag tarlú\?Cén cás\?
- Cuireadh an freagra go rathúil.
- Seolta!
+ Cuireadh an freagra go rathúil.
+ Seolta!%s neamhcheangailteÚsáideoir gan tráchtÚsáideoir gan bhacSeolta!Comhroinn na meáin le…
- Comhroinn tút chuig…
- Comhroinn URL tút chuig…
+ Comhroinn tút chuig…
+ Comhroinn URL tút chuig…Meáin íoslódálaÍoslódáil na meáinComhroinn mar …
@@ -104,11 +104,11 @@
BuaicphointíNaisc ghréasáinCuir Tab leis
- Tút a sceidealú
+ Tút a sceidealúMéarchlár EmojiRabhadh ábhairInfheictheacht tút
- Tútanna sceidealta
+ Tútanna sceidealtaDréachtaíDiúltaighGlac
@@ -182,9 +182,9 @@
Theip ar fhíordheimhniú leis an gcás sin.Cad is sampla ann\?Logáil isteach le Mastodon
- Íomhánna
- Comhroinn nasc le tút
- Comhroinn ábhar na tút
+ Íomhánna
+ Comhroinn nasc le tút
+ Comhroinn ábhar na tútPróifíl TuskyIs bogearraí foinse oscailte agus saor in aisce é Tusky. Tá sé ceadúnaithe faoi Leagan 3. Ceadúnas Poiblí Ginearálta GNU 3. Is féidir leat an ceadúnas a fheiceáil anseo: https://www.gnu.org/licenses/gpl-3.0.en.htmlCumhachtaithe ag Tusky
@@ -209,12 +209,12 @@
Leantóirí NuaFógraí faoi luanna nuaTagairtí Nua
- Is mó
- Móra
- Mheán
- Beag
- Lúide
- Méid an téacs stádais
+ Is mó
+ Móra
+ Mheán
+ Beag
+ Lúide
+ Méid an téacs stádaisLeantóirí-amháinNeamhliostaithePoiblí
@@ -233,7 +233,7 @@
Íoslódáil réamhamharcanna na meánTaispeáin freagraíTaispeáin borradh
- Scagadh amlíne
+ Scagadh amlíneTaispeáin grádáin ildaite do na meáin i bhfolachBeochan abhatár GIFTaispeáin táscaire do róbónna
@@ -251,9 +251,9 @@
Chuir %s borradh faoi do tútNíl aon rud anseo. Tarraingt anuas chun athnuachan a dhéanamh!Níl aon rud anseo.
- Dlúth
+ DlúthNuair atá an eochairfhocal nó an frása alfa-uimhriúil amháin, ní chuirfear i bhfeidhm é ach má oireann sé don fhocal iomlán
- Tútanna
+ TútannaBhí %s i bhfabhar do tútUnmute %sComhrá tost
@@ -270,7 +270,7 @@
\n https://chinwag.orgTuarascálacha ar fhabhtanna & iarratais ar ghnéithe:
\n https://git.chinwag.org/chinwag/chinwag-android/issues
- Físeán
+ FíseánLean iarrthaLeanann túTaispeáin ábhar íogair i gcónaí
@@ -287,7 +287,7 @@
Cuir scagaire in eagarBainAmlínte poiblí
- Gach stádas a leathnú/a thit amach
+ Gach stádas a leathnú/a thit amachBeidh ort Tusky a atosú chun na hathruithe seo a chur i bhfeidhmSraith emoji reatha GoogleTá cód agus sócmhainní ó na tionscadail foinse oscailte seo a leanas i Tusky:
@@ -307,7 +307,7 @@
D\'imigh %d nóiméadD\'imigh %d nóiméad
- Theip ar stádas a fháil
+ Theip ar stádas a fháilSeolfar an tuarascáil chuig do mhodhnóir freastalaí. Féadfaidh tú míniú a thabhairt ar an bhfáth go bhfuil tú ag tuairisciú an chuntais seo thíos:Cuir Cuntas Mastodon nua leisLiostaigh amlíne
@@ -332,11 +332,11 @@
Cuntas glasálaÉilíonn ort leanúna a cheadú de láimhSábháil dréacht\?
- Tút a sheoladh…
- Earráid agus an tút á sheoladh
- Tútanna a sheoladh
- Seoladh curtha ar ceal
- Sábháladh cóip den tút ar do dhréachtaí
+ Tút a sheoladh…
+ Earráid agus an tút á sheoladh
+ Tútanna a sheoladh
+ Seoladh curtha ar ceal
+ Sábháladh cóip den tút ar do dhréachtaíCumNíl aon emojis saincheaptha ag do shampla %sCóipeáladh chuig an gearrthaisce
@@ -344,7 +344,7 @@
Réamhshocrú an chóraisBeidh ort na tacair emoji seo a íoslódáil ar dtúsAmharc taibhithe…
- Oscail tút
+ Oscail tútAtosú aip de dhíthNíos déanaíAtosaigh
@@ -380,11 +380,11 @@
Ainmnithe ag%1$s agus %2$s%1$s, %2$s agus %3$d níos mó
- Meáin: %s
- Rabhadh ábhair: %s
- Gan tuairisc
- Ainmnithe
- Leabharmharcáilte
+ Meáin: %s
+ Rabhadh ábhair: %s
+ Gan tuairisc
+ Ainmnithe
+ LeabharmharcáiltePoiblíNeamhliostaitheLeanúna
@@ -464,17 +464,17 @@
Cuir in EagarEarráid agus an post á lorg %sNíl aon dréachtaí agat.
- Níl aon stádas sceidealta agat.
+ Níl aon stádas sceidealta agat.Tá eatramh sceidealaithe íosta 5 nóiméad ag Mastodon.Taispeáin réamhamhairc nasc in amlínteTaispeáin dialóg dearbhaithe sula ndéantar borradh faoiCluaisíní
- \@%s
+ \@%sTost %sUnmute %sComhrá unmuteTost @%s\?
- Cluaisíní
+ Cluaisíníin %dyin %ddin %dh
@@ -490,6 +490,6 @@
CC-BY-SA 4.0Unpin%1$s
- Reblogged
+ RebloggedHashtags
\ No newline at end of file
diff --git a/app/src/main/res/values-gd/strings.xml b/app/src/main/res/values-gd/strings.xml
index 2dd5c4b9..bf2a2d52 100644
--- a/app/src/main/res/values-gd/strings.xml
+++ b/app/src/main/res/values-gd/strings.xml
@@ -55,12 +55,12 @@
Cuir crìoch air an fho-sgrìobhadhFo-sgrìobhBeòthaich na h-Emojis gnàthaichte
- Bha againn ris a’ phost a bha thu airson freagairt dha a thoirt air falbh
+ Bha againn ris a’ phost a bha thu airson freagairt dha a thoirt air falbhChaidh an dreach a sguabadh àsCha deach leinn fiosrachadh na freagairte a luchdadh
- Cha b’ urrainn dhuinn an dùd a chur!
- Ceanglachain
- Fuaim
+ Cha b’ urrainn dhuinn am post a chur!
+ Ceanglachain
+ FuaimA bheil thu cinnteach gu bheil thu airson an liosta %s a sguabadh às\?7 làithean3 làithean
@@ -81,12 +81,12 @@
Falaich an stadastaireachd àireamhail air postaicheanCuingich na brathan mun loidhne-amaThoir sùil air na brathan
- Thèid cuid a dh’fhiosrachadh a dh’fhaodadh droch-bhuaidh a thoirt air d’ shlàinte-inntinn fhalach. Tha seo a’ gabhail a-staigh:
-\n
-\n - Brathan air annsachdan/brosnachaidhean/leantainn
-\n - Cunntas nan annsachdan/brosnachaidhean air postaichean
-\n - Stadastaireachd an luchd-leantainn/nam postaichean air pròifilean
-\n
+ Thèid cuid a dh’fhiosrachadh a dh’fhaodadh droch-bhuaidh a thoirt air d’ shlàinte-inntinn fhalach. Tha seo a’ gabhail a-staigh:
+\n
+\n - Brathan air annsachdan/brosnachaidhean/leanntainn
+\n - Cunntas nan annsachdan/brosnachaidhean air postaichean
+\n - Stadastaireachd an luchd-leantainn/nam postaichean air pròifilean
+\n
\n Cha doir seo buaidh air na brathan-putaidh ach ’s urrainn dhut roghainnean nam brathan agad atharrachadh a làimh.Slàinte-inntinnBrathan nuair a dh’fhoillsich cuideigin air a rinn mi fo-sgrìobhadh post ùr
@@ -103,8 +103,8 @@
Dì-mhùch na brathan o %sSeall còmhradh dearbhaidh mus dèan thu brosnachadhSeall ro-sheallaidhean air ceanglaichean sna loidhnichean-ama
- Feumaidh co-dhiù 5 mionaidean a bhith eadar staidean sgeidealaichte air Mastodon.
- Chan eil staid sam bith air an sgeideal agad.
+ Feumaidh co-dhiù 5 mionaidean a bhith eadar postaichean sgeidealaichte air Mastodon.
+ Chan eil post sam bith air an sgeideal agad.Chan eil dreachd sam bith agad.Thachair mearachd le lorg a’ phuist %sRoghainn %d
@@ -117,7 +117,7 @@
CunntasanChaidh an cunntas a chlàradh air frithealaiche eile. A bheil thu airson lethbhreac dhen ghearan a chur dha-san gun ainm cuideachd\?Thèid do ghearan a chur gu maor an fhrithealaiche agad. ’S urrainn dhut mìneachadh a sholar air carson a tha thu a’ gearan mun chunntas gu h-ìosal:
- Cha b’ urrainn dhuinn na staidean fhaighinn
+ Cha b’ urrainn dhuinn na postaichean fhaighinnCha b’ urrainn dhuinn do ghearan a chlàradhSìn air adhart gu %sBeachdan a bharrachd
@@ -180,12 +180,12 @@
Ainm na liostaCunntas-bheachd le roghainnean: %1$s, %2$s, %3$s, %4$s; %5$sDìreach
- ’Na chomharra-lìn
- ’Na annsachd
- Air ath-bhlogadh
- Gun tuairisgeul
- Rabhadh susbainte: %s
- Meadhan: %s
+ ’Na chomharra-lìn
+ ’Na annsachd
+ Air ath-bhlogadh
+ Gun tuairisgeul
+ Rabhadh susbainte: %s
+ Meadhan: %sràinig thu na tha ceadaichte dhe %1$d tabaràinig thu na tha ceadaichte dhe %1$d thaba
@@ -233,25 +233,25 @@
Uaireigin eileFeumaidh tu Tusky ath-thòiseachadh gus na roghainnean seo a chur an sàsFeumaidh tu an aplacaid ath-thòiseachadh
- Fosgail am post
- Leudaich/Co-theannaich gach staid
+ Fosgail am post
+ Leudaich/Co-theannaich gach post’Ga lorg…Feumaidh tu na seataichean seo de dh’Emojis a luchdadh a-nuas an toiseachBun-roghainn an t-siostaimStoidhle nan EmojisChaidh lethbhreac dheth a chur air an stòr-bhòrdChan eil Emojis gnàthaichte aig an ionstans %s agad
- Chaidh lethbhreac dhen phost agad a shàbhaladh ’na dhreachd
- Chaidh sgur dhen chur
- A’ cur nam post
- Mearachd a’ cur a’ phuist
- A’ cur a’ phuist…
+ Chaidh lethbhreac dhen phost agad a shàbhaladh ’na dhreachd
+ Chaidh sgur dhen chur
+ A’ cur nam post
+ Mearachd a’ cur a’ phuist
+ A’ cur a’ phuist…A bheil thu airson a shàbhaladh ’na dhreachd\?Feumaidh tu gabhail ri luchd-leantainn ùr a làimhGlais an cunntasSuidhidh am fo-thiotal
- Mìnich e dhan fheadhainn air a bheil cion-lèirsinn
+ Mìnich e dhan fheadhainn air a bheil cion-lèirsinn
\n(%d caractar(an) air a char as fhaide)Cha deach leinn am fo-thiotal a shuidheachadh
@@ -271,29 +271,29 @@
An abairt ri chriathradhMur eil ach litrichean is àireamhan san fhacal-luirg, cha dèid a chur an sàs ach ma bhios e a’ maidseadh an fhacail shlàinLeudaich postaichean ris a bheil rabhadh susbainte an-còmhnaidh
- Co-roinn ceangal dhan phost
- Co-roinn susbaint a’ phuist
+ Co-roinn ceangal dhan phost
+ Co-roinn susbaint a’ phuist’S e bathar-bog saor le bun-tùs fosgailte a th’ ann an Tusky. Tha e fo cheadachas GNU General Public License tionndadh 3. Chì thu an ceadachas an-seo: https://www.gnu.org/licenses/gpl-3.0.en.htmlBrathan nuair a thèid post agad a chomharrachadh ’na annsachdBrathan nuair a thèid post agad brosnachadh
- A bheil thu airson am post seo a sguabadh às is dreachd ùr a dhèanamh air\?
- A bheil thu airson am post seo a sguabadh às\?
- ’S urrainn dhut seòladh no àrainn-lìn aig ionstans sam bith a chur a-steach an-seo, can mastodon.social, icosahedron.website, social.tchncs.de agus a bharrachd!
+ A bheil thu airson am post seo a sguabadh às is dreachd ùr a dhèanamh air\?
+ A bheil thu airson am post seo a sguabadh às\?
+ ’S urrainn dhut seòladh no àrainn-lìn aig ionstans sam bith a chur a-steach an-seo, can mastodon.social, icosahedron.website, social.tchncs.de agus a bharrachd!
\n
\nMur eil cunntas agad fhathast, cuir a-steach ainm an ionstans sa bheil thu airson ballrachd fhaighinn airson cunntas a chruthachadh ann.
\n
-\n’S e an t-aon àite far an cruthaich thu cunntas a th’ ann an ionstans ud ’s a nì an t-òstadh dhan chunntas agad. Gidheadh, ’s urrainn dhut conaltradh le daoine a tha air ionstans eile agus leantainn orra mar gun robh sibh air an aon làrach.
+\n’S e an t-aon àite far an cruthaich thu cunntas a th’ ann an ionstans ud ’s a nì an t-òstadh dhan chunntas agad. Gidheadh, ’s urrainn dhut conaltradh le daoine a tha air ionstans eile agus leantainn orra mar gun robh sibh air an aon làrach.
\n
\nGheibh thu barrachd fiosrachaidh air joinmastodon.org.
- Co-roinn am post le…
- Co-roinn URL a’ phuist le…
- Cuir post air an sgeideal
+ Co-roinn am post le…
+ Co-roinn URL a’ phuist le…
+ Cuir post air an sgeidealFaicsinneachd a’ phuist
- Postaichean air an sgeideal
+ Postaichean air an sgeidealChuir %s am post agad ris na h-annsachdanBhrosnaich %s am post agad
- Postaichean air an sgeideal
- Post
+ Postaichean air an sgeideal
+ SnàithleanMearachd a’ cur a’ phuist.Dì-mhùch %sTagaichean hais
@@ -324,8 +324,8 @@
an ceann %dlan ceann %dbIarrar leantainn orm
- Videothan
- Dealbhan
+ Videothan
+ DealbhanPròifil TuskyAithrisean air bugaichean ⁊ iarrtasan air gleusan:
\n https://github.com/tuskyapp/Tusky/issues
@@ -353,12 +353,12 @@
Luchd-leantainn ùrBrathan mu iomraidhean ùraIomraidhean ùra
- As motha
- Mòr
- Meadhanach
- Beag
- As lugha
- Meud teacsa na staid
+ As motha
+ Mòr
+ Meadhanach
+ Beag
+ As lugha
+ Meud teacsa nam postLuchd-leantainn a-mhàinNeo-liostaichtePoblach
@@ -376,8 +376,8 @@
ProgsaidhLuchdaich a-nuas ro-sheallaidhean air meadhananSeall na freagairtean
- Tabaichean
- Criathradh na loidhne-ama
+ Tabaichean
+ Criathradh na loidhne-amaSeall caiseadan dathte an àite meadhanan falaichteBeothaich avataran GIFSeall taisbeanair do bhotaichean
@@ -423,8 +423,8 @@
AvatarChan eil toradh annCò an t-ionstans\?
- Chaidh an fhreagairt a chur.
- Chaidh a chur!
+ Chaidh an fhreagairt a chur.
+ Chaidh a chur!Chan eil %s falaichte tuilleadhChaidh an cleachdaiche dhì-mhùchadhChaidh an cleachdaiche a dhì-bhacadh
@@ -485,15 +485,15 @@
Lean %s ortChan eil dad an-seo. Tarraing a-nuas airson ath-nuadhachadh!Chan eil dad an-seo.
- Co-theannaich
- Leudaich
- Seall nas lugha dheth
- Seall barrachd dheth
- Briog air gus a shealltainn
- Meadhanan falaichte
- Susbaint fhrionasach
- ’Ga bhrosnachadh le %s
- \@%s
+ Co-theannaich
+ Leudaich
+ Seall nas lugha dheth
+ Seall barrachd dheth
+ Briog air gus a shealltainn
+ Meadhanan falaichte
+ Susbaint fhrionasach
+ ’Ga bhrosnachadh le %s
+ \@%sCeadachasanIarrtasan leantainnÀrainnean falaichte
@@ -502,16 +502,16 @@
Comharran-lìnLuchd-leantainnA’ leantainn air
- Prìnichte
- Le freagairt
- Postaichean
+ Prìnichte
+ Le freagairt
+ PostaicheanTabaicheanTeachdaireachdan dìreachCo-naisgteIonadailDachaighDh’fhàillig leis an luchdadh suas.
- Chan urrainn dhut an dà chuid dealbhan is videothan a cheangal ris an aon staid.
+ Chan urrainn dhut an dà chuid dealbhan is videothan a cheangal ris an aon phost.Tha feum air cead gus meadhanan a stòradh.Tha feum air cead gus meadhanan a leughadh.Cha b’ urrainn dhuinn am faidhle sin fhosgladh.
@@ -519,7 +519,7 @@
Feumaidh faidhlichean fuaime a bhith nas lugha na 40MB.Feumaidh faidhlichean video a bhith nas lugha na 40MB.Feumaidh am faidhle a bhith nas lugha na 8MB.
- Tha an staid ro fhada!
+ Tha am post ro fhada!Cha deach leinn tòcan clàraidh a-steach fhaighinn.Chaidh an t-ùghdarrachadh a dhiùltadh.Thachair mearachd leis an ùghdarrachadh nach do dh’aithnich sinn.
@@ -534,4 +534,11 @@
Sguab às an còmhradhThoir an comharra-lìn air falbhCeall còmhradh dearbhaidh mus dèid post ’na annsachd
+ 30 latha
+ 90 latha
+ 180 latha
+ 365 latha
+ 14 làithean
+ 60 latha
+ Sgrìobh post
\ No newline at end of file
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index dbf0f5b8..bfabe4c8 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -1,8 +1,8 @@
Aviso sobre o contido
- Visibilidade do toot
- Toots programados
+ Visibilidade da publicación
+ Toots programadosBorradoresBuscarRexeitar
@@ -54,7 +54,7 @@
SeguirTes a certeza de que queres desconectar a conta %1$s\?Desconectar
- Conecta con Mastodon
+ Accede con MastodonRedactarMáisEliminar favorito
@@ -69,22 +69,22 @@
%s publicou agora%s solicitou seguirte%s seguiute
- %s fixo favorito o teu toot
- %s promoveu o teu toot
+ %s fixo favorita a publicación
+ %s promoveu a túa publicaciónNada por aquí. Arrastra hacia abaixo para actualizar!Nada por aquí.
- Pregar
- Expandir
- Amosar menos
- Amosar máis
- Click para ver
- Multimedia agochado
- Contido sensible
- %s promoveu
- \@%s
+ Pregar
+ Expandir
+ Ver menos
+ Ver máis
+ Click para ver
+ Multimedia agochado
+ Contido sensible
+ %s promoveu
+ \@%sLicenzasAnuncios
- Toots programados
+ Toots programadosBorradoresEdita o teu perfilSolicitudes de seguimento
@@ -95,19 +95,19 @@
FavoritosSeguidorasSegue
- Fixado
- Con resposta
- Publicacións
- Toot
+ Fixado
+ Con resposta
+ Publicacións
+ FíoLapelasMensaxes directasFederadaLocalNotificaciónsInicio
- Erro ao enviar o toot.
+ Erro ao enviar a publicación.Fallou a subida.
- As imaxes e vídeo non poden engadirse simultáneamente a un mesmo estado.
+ As imaxes e vídeo non poden engadirse simultáneamente á mesma publicación.Requírese o permiso de almacenaxe do multimedia.Requírese o permiso de lectura do multimedia.Non se puido abrir o ficheiro.
@@ -115,8 +115,8 @@
Os ficheiros de audio teñen que ser menores de 40MB.Os ficheiros de vídeo teñen que ser menores de 40MB.O ficheiro debe ser menor de 8MB.
- O estado é demasiado longo!
- Fallou a obtención do token de conexión.
+ A publicación é demasiado longa!
+ Fallou a obtención do token de acceso.A autorización foi rexeitada.Aconteceu un erro non identificado de autorización.Non se atopou un navegador para utilizar.
@@ -128,7 +128,7 @@
%1$sDesubscribirSubscribir
- Eliminouse o toot para o que redactaches a resposta
+ Eliminouse o toot para o que redactaches a respostaSen límiteDuraciónEnquisa
@@ -138,7 +138,7 @@
ContasA conta pertence a outro servidor. Queres enviar unha copia anónima da denuncia alí tamén\?A denuncia vaise enviar á moderación do teu servidor. Podes engadir algunha explicación ou razón pola que estás denunciando a conta:
- Fallou a obtención dos estados
+ Fallou a obtención dos estadosFallo ao realizar a denunciaReenviar a %sComentarios adicionais
@@ -179,7 +179,7 @@
Accións para a imaxe %sTes a certeza de que queres borrar permanentemente todas as notificacións\?Redactar
- Redactar Toot
+ Redactar publicaciónAplicarFiltrarDespexar
@@ -194,12 +194,12 @@
SeguidorasNon listadoPúblico
- Marcado
- Favorecido
- Repetido
- Sen descrición
- Aviso sobre o contido: %s
- Multimedia: %s
+ Marcado
+ Favorecido
+ Repetido
+ Sen descrición
+ Aviso sobre o contido: %s
+ Multimedia: %sacadouse o máximo de %1$d lapelaacadouse o máximo de %1$d lapelas
@@ -241,8 +241,8 @@
Máis tardeDeberás reiniciar Tusky para aplicar os cambiosRequire reiniciar app
- Abrir toot
- Expandir/Pregar tódolos estados
+ Abrir toot
+ Expandir/Pregar tódolos estadosRealizando a busca…Deberás descargar primeiro estos conxuntos de emojisPor defecto no sistema
@@ -250,11 +250,11 @@
Copiado ao portapapeisA túa instancia %s non ten emojis personalizadosRedactar
- Gardouse unha copia do toot nos borradores
- Envío cancelado
- Enviando Toots
- Erro ao enviar o toot
- Enviando Toot…
+ Gardouse unha copia do toot nos borradores
+ Envío cancelado
+ Enviando Toots
+ Erro ao enviar o toot
+ Enviando Toot…Gardar borrador\?Require que aprobes manualmente as seguidorasBloquear conta
@@ -293,7 +293,7 @@
cargar máisRespondendo a @%sMultimedia
- Expandir sempre toots marcados con avisos sobre o contido
+ Despregar sempre publicacións marcadas con avisos sobre o contidoMostrar sempre contido sensibleSéguete%ds
@@ -307,12 +307,12 @@
en %dden %dySeguimento solicitado
- Anexos
- Audio
- Vídeo
- Imaxes
- Compartir ligazón ao toot
- Compartir contido do toot
+ Anexos
+ Audio
+ Vídeo
+ Imaxes
+ Compartir ligazón ao toot
+ Compartir contido do tootPerfil de TuskyInformar de fallos e solicitar funcións:
\n https://github.com/tuskyapp/Tusky/issues
@@ -331,13 +331,13 @@
%1$s, %2$s, e %3$s%1$s, %2$s, %3$s e %4$d outras%s mencionoute
- Notificacións cando alguén a quen estás subscrita publica un novo toot
- Novos toots
+ Notificacións cando alguén a quen estás subscrita publica novo contido
+ Novas publicaciónsNotificacións cando rematan as enquisasEnquisas
- Notificacións cando os teus toots son marcados como favoritos
+ Notificacións cando as túas publicacións son favorecidasFavoritos
- Notificacións cando os teus toots son promovidos
+ Notificacións cando as túas publicacións sexan promovidasPromociónsNotificación acerca de solicitudes de seguimentoSolicitudes de seguimento
@@ -345,12 +345,12 @@
Novas seguidorasNotificación de novas menciónsNovas mencións
- O máis grande
- Grande
- Medio
- Pequeno
- O máis pequeno
- Tamaño do texto do estado
+ O máis grande
+ Grande
+ Medio
+ Pequeno
+ O máis pequeno
+ Tamaño do texto do estadoSó seguidorasNon listadoPúblico
@@ -369,8 +369,8 @@
Descarga vista previa do multimediaMostar respostasMostrar promocións
- Lapelas
- Filtros na cronoloxía
+ Lapelas
+ Filtros na cronoloxíaAnimar emojis personalizadosMostra gradientes coloridos para multimedia ocultoAnimar avatares GIF
@@ -388,7 +388,7 @@
CronoloxíasDecorado da appAparencia
- alguén a quen eu siga publique un toot
+ alguén a quen eu siga publique novo contidorematen as enquisasmarquen un toot meu como favoritopromocionen un dos meus toots
@@ -411,8 +411,8 @@
Bloquear @%s\?Agochar todo o dominioTes a certeza de querer bloquear a todo %s\? Non verás o contido dese dominio en ningunha cronoloxía pública ou nas notificacións. As túas seguidoras nese dominio serán eliminadas.
- Eliminar e reescribir este toot\?
- Eliminar este toot\?
+ Eliminar e reescribir esta publicación\?
+ Eliminar esta publicación\?Deixar de seguir esta conta\?Revogar a solicitude de seguimento\?Descargar
@@ -438,7 +438,7 @@
Que contas\?Borrador eliminadoFallou a carga da información da Resposta
- Fallou o envío do toot!
+ Fallou o envío do toot!Tes a certeza de querer eliminar a listaxe %s\?Non podes subir máis de %1$d anexo multimedia.
@@ -451,7 +451,7 @@
Agocharemos algunha información que podería afectar ao teu benestar mental. Esto inclúe:
\n
\n- Notificacións acerca de Favoritos/Promocións/Seguimentos
-\n- Número de Favoritos/Promocións nos toots
+\n- Número de Favoritos/Promocións nas publicacións
\n- Estatísticas de Seguidoras/Publicacións nos perfís
\n
\nAs notificacións tipo push non estarán afectadas, mais podes revisar as preferencias de notificacións manualmente.
@@ -459,11 +459,11 @@
Nota privada acerca desta contaBenestarAgochar o título da barra de ferramentas superior
- Amosar diálogo de confirmación antes de promover
- Amosar vista previa das ligazóns nas cronoloxías
+ Pedir confirmación antes de promover
+ Ver vista previa das ligazóns nas cronoloxíasMastodon ten un intervalo mínimo de 5 minutos para as programacións.Non hai anuncios.
- Non tes estados programados.
+ Non tes estados programados.Non tes borradores.Erro ao buscar publicación %sEditar
@@ -478,15 +478,15 @@
30 minutos5 minutosEn que instancia\?
- Resposta enviada correctamente.
- Enviado!
+ Resposta enviada correctamente.
+ Enviado!%s visibleUsuaria reactivadaUsuaria desbloqueadaEnviado!Compartir multimedia en…
- Compartir toot en…
- Compartir URL do toot a…
+ Compartir toot en…
+ Compartir URL do toot a…Descargando multimediaDescargar multimediaCompartir como …
@@ -505,11 +505,18 @@
LigazónsEngadir lapelaRestablecer
- Programar Toot
+ Programar TootTeclado EmojiAínda que a túa conta non está bloqueada, a administración de %1$s opina que debes revisar manualmente as peticións de seguimento destas contas.Eliminar esta conversa\?Eliminar conversaEliminar marcadorMostrar diálogo de confirmación antes de favorecer
+ 14 días
+ 30 días
+ 60 días
+ 90 días
+ 180 días
+ 365 días
+ Redactar publicación
\ No newline at end of file
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index 2ed1f08f..16882504 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -9,7 +9,7 @@
प्रोफाइल एडिट करेंखोजके बारे में
- उत्तरों के साथ
+ उत्तरों के साथअनुगामीउत्तर देंफ़ॉलो
@@ -60,8 +60,8 @@
वोटबन्द हैलिखें
- पिन की गई
- पोस्ट
+ पिन की गई
+ पोस्टघरटस्की में निम्नलिखित ओपन सोर्स परियोजनाओं से कोड और संपत्ति हैं:इन परिवर्तनों को लागू करने के लिए आपको टस्की को पुनः आरंभ करना होगा
@@ -79,11 +79,11 @@
%1$s, %2$s, %3$s तथा %4$d अन्य लोगजनमतपसंदीदा
- सबसे बड़ा
- बड़ा
- मध्यम
- छोटा
- सबसे छोटा
+ सबसे बड़ा
+ बड़ा
+ मध्यम
+ छोटा
+ सबसे छोटाअसूचीबद्धसार्वजनिकसबसे नीचे
@@ -94,7 +94,7 @@
डिफ़ॉल्ट पोस्ट गोपनीयतामीडिया पूर्वावलोकन डाउनलोड करेंजवाब दिखाएँ
- टैब्स
+ टैब्सछिपे हुए मीडिया के लिए रंगीन ग्रेडिएंट दिखाएंबॉट्स के लिए संकेतक दिखाएंभाषा
@@ -132,8 +132,8 @@
प्रदर्शित होने वाला नामविषय वस्तु चेतावनीक्या हो रहा है\?
- उत्तर सफलतापूर्वक भेजा गया।
- भेज दिया!
+ उत्तर सफलतापूर्वक भेजा गया।
+ भेज दिया!भेज दिया!मीडिया डाउनलोड हो रहा हैमीडिया डाउनलोड करें
@@ -146,11 +146,11 @@
हैशटैगज़िक्रऐड टैब
- अनुसूची टूट
+ अनुसूची टूटइमोजी कीबोर्डविषय वस्तु चेतावनीटूट दृश्यता
- अनुसूचित टूट
+ अनुसूचित टूटस्वीकार करेंड्राफ्टअस्वीकार करें
@@ -180,15 +180,15 @@
%s ने आपके टूट को बढावा दियायहाँ कुछ नहीं। ताज़ा करने के लिए नीचे खींचो!यहाँ कुछ नहीं।
- कम दिखाएं
- और दिखाओ
- देखने के लिए क्लिक करें
- मीडिया छिपा हुआ
- संवेदनशील विषय वस्तु
- \@%s
+ कम दिखाएं
+ और दिखाओ
+ देखने के लिए क्लिक करें
+ मीडिया छिपा हुआ
+ संवेदनशील विषय वस्तु
+ \@%sलाइसेंसटूट
- अनुसूचित टूट
+ अनुसूचित टूटछिपे हुए डोमेनम्यूट किए गए उपयोगकर्ताबुकमार्क
@@ -229,22 +229,22 @@
हैशटैग %1$s • %2$sसूची
- बुकमार्क किया हुआ
+ बुकमार्क किया हुआसूची का नाम
- कोई विवरण नहीं
- मीडिया: %s
+ कोई विवरण नहीं
+ मीडिया: %sजानकारी जोड़ेंCC-BY-SA 4.0CC-BY 4.0प्रोफ़ाइल मेटाडेटाडाउनलोड विफल
- टूट खोलें
+ टूट खोलेंदेखने की क्रिया जारी…सिस्टम डिफ़ॉल्टइमोजी का अंदाज
- भेजना रद्द हो गया
- टूट भेज रहे
- टूट भेज रहे…
+ भेजना रद्द हो गया
+ टूट भेज रहे
+ टूट भेज रहे…लिखने को सुरक्षित करें\?खाता लॉक करेंकैप्शन सेट करें
@@ -279,7 +279,7 @@
प्रत्यक्षअसूचीबद्धसार्वजनिक
- विषय वस्तु चेतावनी: %s
+ विषय वस्तु चेतावनी: %sअधिकतम %1$d टैब तक पहुंच गऐ
@@ -308,8 +308,8 @@
आपको पहले इस इमोजी सेट को डाउनलोड करना होगाक्लिपबोर्ड पर कॉपी किया गयालिखें
- टूट की एक प्रति आपके ड्राफ्ट में सहेज ली गई है
- टूट भेजने में त्रुटि
+ टूट की एक प्रति आपके ड्राफ्ट में सहेज ली गई है
+ टूट भेजने में त्रुटिहटाएँहटा दें
@@ -339,10 +339,10 @@
आपको फॉलो करते हैफ़ॉलो करने का अनुरोध कियाफ़ॉलो करने का अनुरोध किया हुआ
- वीडियो
- तस्वीरें
- टूट का लिंक साझा करें
- टूट की विषय वस्तु साझा करें
+ वीडियो
+ तस्वीरें
+ टूट का लिंक साझा करें
+ टूट की विषय वस्तु साझा करें%s ने आपका जिक्र कियाजनमत खत्म होने के बारे में सूचनाएंसूचनाएं जब आपके टूट पसंद किये जाये
@@ -356,7 +356,7 @@
एच टी टी पी प्रॉक्सी सक्षम करेंएच टी टी पी प्रॉक्सीप्रॉक्सी
- टाइमलाइन छानने का काम
+ टाइमलाइन छानने का कामप्रकाशटाइमलाइनएप्लिकेशन थीम
@@ -368,8 +368,8 @@
उपयोगकर्ता अनम्यूट किए गएउपयोगकर्ता अनब्लॉक किए गएमीडिया को साझा करें …
- टूट को साझा करें …
- टूट यूआरएल को साझा करें …
+ टूट को साझा करें …
+ टूट यूआरएल को साझा करें …साझा करें …%s के रूप में खोलें%1$s डाउनलोड हो रहा है
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 8a8a6753..7371cbe7 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -26,9 +26,9 @@
Közvetlen üzenetekFülekTülk
- Tülkök
- Válaszokkal
- Rögzített
+ Tülkök
+ Válaszokkal
+ RögzítettKövetettKövetőKedvencek
@@ -38,15 +38,15 @@
Profilod szerkesztésePiszkozatokLicenszek
- \@%s
- %s megtolta
- Kényes tartalom
- Rejtett média
- Kattints a megnézéshez
- Mutass többet
- Mutass kevesebbet
- Kibontás
- Összecsukás
+ \@%s
+ %s megtolta
+ Kényes tartalom
+ Rejtett média
+ Kattints a megnézéshez
+ Mutass többet
+ Mutass kevesebbet
+ Kibontás
+ ÖsszecsukásNincs itt semmi.Üres tartalom. Húzd le a frissítéshez!%s megtolta a tülködet
@@ -115,13 +115,13 @@
Link másolásaMegnyitás mint %sMegosztás mint …
- Tülk URL megosztása…
- Tülk megosztása…
+ Tülk URL megosztása…
+ Tülk megosztása…Elküldve!Felhasználó letiltása feloldvaFelhasználó némítása feloldva
- Elküldve!
- Válasz sikeresen elküldve.
+ Elküldve!
+ Válasz sikeresen elküldve.Melyik példány\?Mi jár a fejedben\?Tartalom figyelmeztetés
@@ -146,7 +146,7 @@
LetöltésVisszavonod a követési kérelmet?Követés megszüntetése?
- Törlöd ezt a tülköt?
+ Törlöd ezt a tülköt?Nyilvános: Tülkölés nyilvános idővonalraListázatlan: Nem jelenik meg a nyilvános idővonalonCsak követőknek: Tülkölés csak követőknek
@@ -171,8 +171,8 @@
BöngészőLinkek megnyitása applikáción belülSzerkesztés gomb elrejtése görgetés közben
- Idővonal szűrése
- Fülek
+ Idővonal szűrése
+ FülekMegtolások mutatásaVálaszok mutatásaMédia előnézet mutatása
@@ -187,12 +187,12 @@
NyilvánosListázatlanCsak követőknek
- Tülkölés szöveg mérete
- Legkisebb
- Kicsi
- Közepes
- Nagy
- Legnagyobb
+ Tülkölés szöveg mérete
+ Legkisebb
+ Kicsi
+ Közepes
+ Nagy
+ LegnagyobbÚj említésekÉrtesítések új említések eseténÚj követők
@@ -224,10 +224,10 @@
Hibajelentés & új funkciók igénylése:
\n https://git.chinwag.org/chinwag/chinwag-android/issuesTusky profilja
- Tülk tartalmának megosztása
- Tülk linkjének megosztása
- Képek
- Videók
+ Tülk tartalmának megosztása
+ Tülk linkjének megosztása
+ Képek
+ VideókKövetés kérelmezveKövet téged
@@ -241,11 +241,11 @@
TörlésFiók zárolásaElmented a piszkozatot\?
- Tülk elküldése…
- A tülk elküldése nem sikerült
- Tülkök elküldése
- Küldés megszakítva
- A tülk másolatát elmentettük a piszkozataid közé
+ Tülk elküldése…
+ A tülk elküldése nem sikerült
+ Tülkök elküldése
+ Küldés megszakítva
+ A tülk másolatát elmentettük a piszkozataid közéSzerkesztésA %s szervernek nincsenek egyedi emoji-jaiVágólapra másolva
@@ -253,7 +253,7 @@
Rendszer alapértelmezésElőször le kell töltened ezeket az emoji készleteketKeresés…
- Tülk megnyitása
+ Tülk megnyitásaAz app újraindítása szükségesA beállítások érvényesítéséhez újra kell indítani a TuskytKésőbb
@@ -280,7 +280,7 @@
elérted a fülek maximális számát (%1$d)elérted a fülek maximális számát (%1$d)
- Nincs leírás
+ Nincs leírás
Nyilvános Követők
@@ -290,7 +290,7 @@
Média letöltéseMédia letöltéseMédia megosztása következővel…
- Törlöd és újraírod ezt a tülköt\?
+ Törlöd és újraírod ezt a tülköt\?befejeződött egy szavazásSzűrőkRendszer téma használata
@@ -350,7 +350,7 @@
Cím beállításaMinden követődet külön engedélyezned kell
- Minden tülk kibontása/összecsukása
+ Minden tülk kibontása/összecsukásaA Google jelenlegi emodzsi készleteMegtolás az eredeti közönségnekMegtolás visszavonása
@@ -367,10 +367,10 @@
%1$s%1$s, %2$s és még %3$d
- Média: %s
- Tartalom figyelmeztetés: %s
- Megtolt
- Kedvelt
+ Média: %s
+ Tartalom figyelmeztetés: %s
+ Megtolt
+ KedveltListázatlanKözvetlenSzavazás válaszokkal: %1$s, %2$s, %3$s, %4$s; %5$s
@@ -416,7 +416,7 @@
Egyéb megjegyzésekTovábbítás neki %sNem sikerült a bejelentés
- Nem sikerült a tülkök letöltése
+ Nem sikerült a tülkök letöltéseA bejelentést a szervered moderátorának küldjük el. Alább megadhatsz egy magyarázatot arra, hogy miért jelented be ezt a fiókot:A fiók egy másik szerverről származik. Küldjünk oda is egy anonimizált másolatot a bejelentésről\?Értesítések szűrőjének mutatása
@@ -436,22 +436,22 @@
Több lehetőségVálasz %dSzerkesztés
- Időzített tülkök
+ Időzített tülkökSzerkesztés
- Időzített tülkök
- Tülk Időzítése
+ Időzített tülkök
+ Tülk IdőzítéseVisszaállításNem találjuk ezt a tülköt %sKönyvjelzőkKönyvjelzőzésKönyvjelzőkTusky által hajtva
- Könyvjelzőzve
+ KönyvjelzőzveLista kiválasztásaListaA hangfájloknak kisebbnek kell lenniük, mint 40 MB.Nincs egy piszkozatod sem.
- Nincs egy ütemezett tülköd sem.
+ Nincs egy ütemezett tülköd sem.A Mastodonban a legrövidebb ütemezhető időintervallum 5 perc.Követési kérelmekJóváhagyó ablak mutatása megtolás előtt
@@ -484,10 +484,10 @@
Saját, mások számára nem látható megjegyzés erről a fiókrólNincsenek közlemények.Közlemények
- A tülköt, melyre válaszul piszkozatot készítettél törölték
+ A tülköt, melyre válaszul piszkozatot készítettél töröltékPiszkozat törölveNem sikerült a Válasz információit betölteni
- Ez a tülk nem küldődött el!
+ Ez a tülk nem küldődött el!Tényleg le akarod törölni a %s listát\?Nem tölthetsz fel %1$d médiacsatolmányból többet.
@@ -506,8 +506,8 @@
\nA Push-értesítéseket ez nem befolyásolja, de kézzel átállíthatod az értesítési beállításaidat.VégtelenIdőtartam
- Csatolmányok
- Audio
+ Csatolmányok
+ AudioÉrtesítések általam követett személy új tülkjeirőlÚj tülkökvalaki, akit követek újat tülkölt
diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml
index ae33eecc..2018dc85 100644
--- a/app/src/main/res/values-is/strings.xml
+++ b/app/src/main/res/values-is/strings.xml
@@ -21,26 +21,26 @@
Óskilgreind auðkenningarvilla kom upp.Heimild var hafnað.Mistókst að fá innskráningarteikn.
- Stöðufærslan er of löng!
+ Færslan er of löng!Skráin verður að vera minni en 8MB.Myndskeiðaskrár verða að vera minni en 40MB.Þessa tegund skrár er ekki hægt að senda inn.Ekki var hægt að opna skrána.Krafist er heimilda til að lesa gögn.Krafist er heimilda til að geyma gögn.
- Ekki er hægt að hengja bæði myndir og myndskeið við sömu stöðufærslu.
+ Ekki er hægt að hengja bæði myndir og myndskeið við sömu færslu.Sendingin mistókst.
- Villa við að senda tíst.
+ Villa við að senda færslu.HeimTilkynningarStaðværtSameiginlegtBein skilaboðFlipar
- Tíst
- Færslur
- Með svörum
- Fest
+ Þráður
+ Færslur
+ Með svörum
+ FestFylgist meðFylgjendurBókamerki
@@ -49,21 +49,21 @@
Falin lénFylgjendabeiðnirBreyta notandasniðinu þínu
- Áætluð tíst
+ Áætluð tístNotkunarleyfi
- \@%s
- %s endurbirti
- Viðkvæmt efni
- Myndefni er falið
- Ýttu til að skoða
- Sýna meira
- Sýna minna
- Fletta út
- Fella saman
+ \@%s
+ %s endurbirti
+ Viðkvæmt efni
+ Myndefni er falið
+ Ýttu til að skoða
+ Sýna meira
+ Sýna minna
+ Fletta út
+ Fella samanEkkert hér.Ekkert hér. Togaðu niður til að endurhlaða!
- %s endurbirti tístið þitt
- %s setti tíst frá þér í eftirlæti
+ %s endurbirti færsluna þína
+ %s setti færslu frá þér í eftirlæti%s fylgist núna með þérKæra @%sAðrar athugasemdir\?
@@ -116,11 +116,11 @@
SamþykkjaHafnaDrög
- Áætluð tíst
- Sýnileiki tísts
+ Áætluð tíst
+ Sýnileiki færsluAðvörun vegna efnisLyklaborð með tjáningartáknum
- Tímasetja tíst
+ Tímasetja tístFrumstillaBæta við flipaTenglar
@@ -139,15 +139,15 @@
Deila sem …Sækja myndefniNæ í myndefni
- Deila slóð á tíst til…
- Deila tísti með…
+ Deila slóð á tíst til…
+ Deila tísti með…Deila myndefni með…Sent!Hætt að útiloka notandaHætt að þagga niður í notandaHætt að fela %s
- Sent!
- Það tókst að senda svarið.
+ Sent!
+ Það tókst að senda svarið.Hvaða tilvik\?Hvað er í gangi hérna\?Aðvörun vegna efnis
@@ -171,8 +171,8 @@
SækjaAfturkalla beiðni um að fylgjast með\?Hætta að fylgjast með þessum aðgangi\?
- Eyða þessu tísti\?
- Eyða og endurvinna þetta tíst\?
+ Eyða þessu tísti\?
+ Eyða og endurvinna þetta tíst\?Ertu alveg algjörlega viss um að þú viljir loka á allt %s\? Þú munt ekki sjá efni frá þessu léni í neinum opinberum tímalínum eða í tilkynningunum þínum. Fylgjendur þínir frá þessu léni verða fjarlægðir.Fela allt léniðOpinbert: Senda á opinberar tímalínur
@@ -206,8 +206,8 @@
TungumálBirta merki á róbótumSýna hreyfingar GIF-auðkennismynda
- Síun tímalínu
- Flipar
+ Síun tímalínu
+ FliparSýna endurbirtingarSýna svörSækja forskoðanir á myndefni
@@ -223,20 +223,20 @@
OpinbertÓskráðEinungis fylgjendur
- Textastærð stöðufærslu
- Minnstu
- Lítið
- Miðlungs
- Stórt
- Stærst
+ Textastærð stöðufærslu
+ Minnstu
+ Lítið
+ Miðlungs
+ Stórt
+ StærstNýjar tilvísanirTilkynningar um nýjar tilvísanirNýir fylgjendurTilkynningar um nýja fylgjendurEndurbirtingar
- Tilkynningar þegar tístin þín eru endurbirt
+ Tilkynningar þegar færslurnar þínar eru endurbirtarEftirlæti
- Tilkynningar þegar tístin þín eru sett í eftirlæti
+ Tilkynningar þegar færslurnar þínar eru settar í eftirlætiKannanirTilkynningar um kannanir sem er lokið%s minntist á þig
@@ -256,10 +256,10 @@
Villutilkynningar og beiðnir um nýja eiginleika:
\n https://git.chinwag.org/chinwag/chinwag-android/issuesNotandasnið Tusky
- Deila efni úr tísti
- Deila tengli á tíst
- Myndir
- Myndskeið
+ Deila efni úr tísti
+ Deila tengli á tíst
+ Myndir
+ MyndskeiðBeðið um að fylgjaeftir %dáreftir %dd
@@ -273,7 +273,7 @@
%dsFylgir þérAlltaf birta myndefni sem merkt er viðkvæmt
- Alltaf fletta út tístum sem eru með aðvörun vegna efnis
+ Alltaf fletta út færslum sem eru með aðvörun vegna efnisGagnaskrárSvar til @%shlaða inn fleiru
@@ -310,11 +310,11 @@
Læsa notandaaðgangiKrefst þess að þú samþykkir fylgjendur handvirktVista drög\?
- Sendi tíst…
- Villa við að senda tíst
- Sendi tíst
- Aflýsti sendingu
- Afrit af tístinu þínu hefur verið vistað drögunum þínum
+ Sendi tíst…
+ Villa við að senda tíst
+ Sendi tíst
+ Aflýsti sendingu
+ Afrit af tístinu þínu hefur verið vistað drögunum þínumSemja skilaboðTilvikið þitt %s er ekki með nein sérsniðin tjáningartáknAfritað á klippispjald
@@ -322,8 +322,8 @@
Sjálfgefið í kerfinuÞú þarft fyrst að ná í þessi táknmyndasettFramkvæmi uppflettingu…
- Þenja út / Fella saman allar stöðufærslur
- Opna tíst
+ Þenja út / Fella saman allar stöðufærslur
+ Opna tístEndurræsing forrits er nauðsynlegÞað þarf að endurræsa Tusky til að breytingarnar taki gildiSeinna
@@ -358,12 +358,12 @@
hámarksfjölda %1$d flipa náðhámarksfjölda %1$d flipa náð
- Myndefni: %s
- Aðvörun vegna efnis: %s
- Engin lýsing
- Endurbloggað
- Í eftirlætum
- Bókamerkt
+ Myndefni: %s
+ Aðvörun vegna efnis: %s
+ Engin lýsing
+ Endurbloggað
+ Í eftirlætum
+ BókamerktOpinbertÓskráðFylgjendur
@@ -376,7 +376,7 @@
HreinsaSíaVirkja
- Semja tíst
+ Semja færsluSemja skilaboðErtu viss um að þú viljir endanlega eyða öllum tilkynningunum þínum\?Aðgerðir fyrir mynd %s
@@ -397,7 +397,7 @@
Aðrar athugasemdirÁframsenda til %sMistókst að kæra
- Mistókst að sækja stöðufærslur
+ Mistókst að sækja stöðufærslurKæran verður send á umsjónarmenn vefþjónsins þíns. Þú getur gefið skýringu hér fyrir neðan á því af hverju þú ert að kæra þennan notandaaðgang:Notandaaðgangurinn er af öðrum vefþjóni. Á einnig að senda nafnlaust afrit af kærunni þangað\?Notandaaðgangar
@@ -417,7 +417,7 @@
BreytaVilla við að fletta upp færslunni %sÞú ert ekki með nein drög.
- Þú ert ekki með neinar áætlaðar stöðufærslur.
+ Þú ert ekki með neinar áætlaðar stöðufærslur.Hljóðskrár verða að vera minni en 40MB.Mastodon er með 5 mínútna lágmarksbil fyrir áætlaðar aðgerðir.Fylgjendabeiðnir
@@ -478,19 +478,19 @@
Sumar upplýsingar sem gætu haft áhrif á andlega vellíðan þína verða faldar. Þetta hefur áhrif á:
\n
\n - Eftirlæti/Endurbirtingar/Tilkynningar um fylgjendabeiðnir
-\n - Eftirlæti/Talningu á endurbirtingum tísta
+\n - Eftirlæti/Talningu á endurbirtingum færslna
\n - Fylgjendur/Tölfræði færslna í notendasniðum
\n
\n Þetta hefur ekki áhrif á ýti-tilkynningar, en þú getur yfirfarið handvirkt kjörstillingar þínar varðandi tilkynningar.Segja upp áskriftGerast áskrifandiHreyfa sérsniðin tjáningartákn
- Tístið sem þú gerðir drög að svari við hefur veriið fjarlægt
+ Tístið sem þú gerðir drög að svari við hefur veriið fjarlægtEyddi drögumMistókst að hlaða inn svarupplýsingum
- Mistókst að senda þetta tíst!
- Viðhengi
- Hljóð
+ Mistókst að senda þetta tíst!
+ Viðhengi
+ HljóðErtu viss um að þú viljir eyða %s listanum\?ÓtiltekiðTímalengd
@@ -503,13 +503,20 @@
Takmarka tilkynningar á tímalínuYfirfara tilkynningarVellíðan
- Tilkynningar þegar einhver sem þú ert áskrifandi að hefur birt nýtt tíst
- Ný tíst
- einhver sem ég er áskrifandi að birti nýtt tíst
+ Tilkynningar þegar einhver sem þú ert áskrifandi að hefur birt nýja færslu
+ Nýjar færslur
+ einhver sem ég er áskrifandi að birti nýja færslu%s sendi inn rétt í þessuJafnvel þótt aðgangurinn þinn sé ekki læstur, fannst starfsfólki %1$s að þú gætir viljað yfirfara handvirkt fylgjendabeiðnir frá þessum aðgöngum.Fjarlægja bókamerkiBirta staðfestingarglugga áður en sett er í eftirlætiEyða þessu samtali\?Eyða samtali
+ 30 dagar
+ 60 dagar
+ 90 dagar
+ 180 dagar
+ 365 dagar
+ 14 dagar
+ Semja færslu
\ No newline at end of file
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 216e0fa0..af39264f 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -26,11 +26,11 @@
Messaggi DirettiSchedeToot
- Post
- Con risposte
- Fissati in alto
- Seguono
- Ti seguono
+ Post
+ Con risposte
+ Fissati in alto
+ Seguiti
+ SeguonoPreferitiUtenti silenziatiUtenti bloccati
@@ -38,15 +38,15 @@
Modifica il tuo profiloBozzeLicenze
- \@%s
- %s ha boostato
- Contenuto sensibile
- Media nascosto
- Clicca per visualizzare
- Mostra di Più
- Mostra Meno
- Espandi
- Riduci
+ \@%s
+ %s ha boostato
+ Contenuto sensibile
+ Media nascosto
+ Clicca per visualizzare
+ Mostra di Più
+ Mostra Meno
+ Espandi
+ RiduciQui non c\'è niente.Qui non c\'è niente. Trascina verso il basso per aggiornare!%s ha boostato il tuo toot
@@ -120,14 +120,14 @@
Copia il linkApri come %sCondividi come …
- Condividi URL del toot su…
- Condividi toot su…
+ Condividi URL del toot su…
+ Condividi toot su…Condividi media su…Inviato!Utente sbloccatoUtente non più silenziato
- Inviato!
- Risposta inviata con successo.
+ Inviato!
+ Risposta inviata con successo.Quale istanza?Cosa succede?Avviso di contenuto sensibile
@@ -152,7 +152,7 @@
ScaricaRevocare la richiesta di seguire?Smettere di seguire questo account?
- Eliminare questo toot?
+ Eliminare questo toot?Pubblico: visibile sulla timeline pubblicaNon Elencato: non visibile sulla timeline pubblica e localeSolo Follower: visibile solo dai tuoi follower
@@ -181,8 +181,8 @@
Usa Tab Personalizzate di ChromeNascondi il pulsante componi mentre scorriLingua
- Filtraggio della timeline
- Schede
+ Filtraggio della timeline
+ SchedeMostra boostMostra risposteMostra anteprime media
@@ -198,12 +198,12 @@
PubblicoNon elencatoSolo per chi ti segue
- Dimensione del testo degli stati
- Piccolissimo
- Piccolo
- Normale
- Grande
- Grandissimo
+ Dimensione del testo degli stati
+ Piccolissimo
+ Piccolo
+ Normale
+ Grande
+ GrandissimoNuove MenzioniNotifiche quando qualcuno ti menzionaNuove persone che ti seguono
@@ -237,10 +237,10 @@
Segnala problemi & richiedi funzionalità:\n
https://git.chinwag.org/chinwag/chinwag-android/issuesProfilo di Tusky
- Condividi contenuto del toot
- Condividi link al toot
- Immagini
- Video
+ Condividi contenuto del toot
+ Condividi link al toot
+ Immagini
+ VideoIn attesa di approvazionein %d a
@@ -290,11 +290,11 @@
Blocca accountRichiede la tua approvazione manuale di chi ti segueSalvare bozza?
- Inviando il Toot…
- Errore durante l\'invio
- Invio Toot
- Invio annullato
- Una copia del toot è stata salvata nelle tue bozze
+ Inviando il Toot…
+ Errore durante l\'invio
+ Invio Toot
+ Invio annullato
+ Una copia del toot è stata salvata nelle tue bozzeComponiLa tua istanza %s non ha nessuna emoji personalizzataCopiato negli appunti
@@ -302,8 +302,8 @@
Predefiniti del sistemaDovrai prima scaricare questo pacchetto di emojiEseguendo una ricerca…
- Espandi/Riduci tutti gli stati
- Apri toot
+ Espandi/Riduci tutti gli stati
+ Apri tootRiavvio dell\'app richiestoDevi riavviare Tusky per applicare queste modifichePiù tardi
@@ -345,15 +345,15 @@
limite massimo di %1$d tab raggiuntolimite massimo di %1$d tab raggiunto
- Media: %s
+ Media: %s
- Contenuto sensibile: %s
+ Contenuto sensibile: %s
- Nessuna descrizione
+ Nessuna descrizione
- Ribloggato
+ Ribloggato
- Apprezzato
+ Apprezzato
Pubblico
@@ -374,7 +374,7 @@
Mostra indicatore per botSei sicuro di voler permanentemente eliminare tutte le tue notifiche\?Cancella e riscrivi
- Cancellare e riscrivere questo toot\?
+ Cancellare e riscrivere questo toot\?%s voto%s voti
@@ -402,7 +402,7 @@
Aggiungi sondaggioFatto con TuskyEspandi sempre i toot segnalati come contenuto sensibile
- Messo nei segalibri
+ Messo nei segalibriSondaggio con scelte: %1$s, %2$s, %3$s, %4$s; %5$sScegli listaLista
@@ -432,7 +432,7 @@
Altri commentiInoltra a %sErrore durante l\'invio
- Errore durante lo scaricamento degli aggiornamenti
+ Errore durante lo scaricamento degli aggiornamentiLa segnalazione sarà inviata al moderatore del tuo server. Puoi spiegare perchè vuoi segnalare questo utente qui sotto:L\'utente è su un altro server. Mandare una copia della segnalazione anche lì\?Utenti
@@ -451,9 +451,9 @@
Scelta %dModificaErrore nella ricerca del post %s
- Toot programmati
- Toot programmati
- Programma un toot
+ Toot programmati
+ Toot programmati
+ Programma un tootRIpristina %1$s • %2$sNon hai bozze.
@@ -479,7 +479,7 @@
Mostra le anteprime dei collegamenti nelle timelinesMastodon ha un intervallo minimo di programmazione di 5 minuti.Non ci sono annunci.
- Non hai stati pianificati.
+ Non hai stati pianificati.Abilita il gesto di scorrimento per passare da una scheda all\'altraNotifiche sulle richieste di essere seguitiParte inferiore
@@ -504,13 +504,34 @@
Non puoi caricare più di %1$d allegato multimediale.Non puoi caricare più di %1$d allegati multimediali.
- Il toot a cui hai scritto una risposta è stato rimosso
+ Il toot a cui hai scritto una risposta è stato rimossoBozza cancellata
- L\'invio di questo toot è fallito!
+ L\'invio di questo toot è fallito!Sei sicuro di voler cancellare la lista %s\?IndefinitaDurata
- Allegati
- Audio
+ Allegati
+ AudioMostra le animazioni delle emojis personalizzate
+ Iscriviti
+ Rimuovere questa conversazione\?
+ Errore nel recuperare le informazioni sulla risposta
+ Disiscriviti
+ Rimuovi conversazione
+ Alcune informazioni che potrebbero influenzare il tuo benessere mentale saranno nascoste. Questo include:
+\n
+\n - Notifiche riguardo a Preferiti/Boost/Following
+\n - Conteggio dei Preferiti/Boost nei toot
+\n - Statistiche riguardo a Preferiti e Post nei profili
+\n
+\n Le notifiche push non saranno influenzate, ma puoi rivedere le tue impostazioni delle notifiche manualmente.
+ Rimuovi segnalibro
+ Chiedi conferma prima di boostare
+ 14 giorni
+ 30 giorni
+ 60 giorni
+ 90 giorni
+ 180 giorni
+ 365 giorni
+ Anche se il tuo account non è bloccato, lo staff di %1$s ha pensato che potresti voler controllare queste richieste di following da parte questi account manualmente.
\ No newline at end of file
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index f9d868fe..bb8c892f 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -25,9 +25,9 @@
ダイレクトメッセージタブスレッド
- 投稿
- 投稿と返信
- ピン留め
+ 投稿
+ 投稿と返信
+ ピン留めフォローフォロワーお気に入り
@@ -37,14 +37,14 @@
プロフィールを編集下書きライセンス
- %sさんがブーストしました
- 閲覧注意
- 非表示のメディア
- タップして表示
- 続きを表示
- 続きを隠す
- 続きを読む
- 閉じる
+ %sさんがブーストしました
+ 閲覧注意
+ 非表示のメディア
+ タップして表示
+ 続きを表示
+ 続きを隠す
+ 続きを読む
+ 閉じる何もありません。現在トゥートはありません。更新するにはプルダウンしてください!%sさんがトゥートをブーストしました
@@ -111,14 +111,14 @@
リンクをコピー%s として開く共有先…
- トゥートのURLを共有…
- トゥートを共有…
+ トゥートのURLを共有…
+ トゥートを共有…メディアを共有…送信しました!ブロックを解除しましたミュートを解除しました
- 送信しました!
- 返信しました。
+ 送信しました!
+ 返信しました。インスタンス今なにしてる?注意書き
@@ -143,7 +143,7 @@
ダウンロードフォローリクエストを取り消しますか?このアカウントをフォロー解除しますか?
- 本当に削除しますか?
+ 本当に削除しますか?公開:公開タイムラインに投稿する未収載:公開タイムラインには表示しないフォロワー限定:フォロワーだけに公開
@@ -171,8 +171,8 @@
Chrome Custom Tabsを使用するスクロール中は投稿ボタンを隠す言語
- タイムラインのフィルタリング
- タブ
+ タイムラインのフィルタリング
+ タブブーストを表示返信を表示メディアのプレビューを表示する
@@ -188,12 +188,12 @@
公開未収載フォロワーに限定
- トゥートのテキストサイズ
- 最小
- 小
- 中
- 大
- 最大
+ トゥートのテキストサイズ
+ 最小
+ 小
+ 中
+ 大
+ 最大新しい返信新しい返信の通知新しいフォロワー
@@ -228,10 +228,10 @@
https://git.chinwag.org/chinwag/chinwag-android/issues
Tusky公式アカウント
- トゥートの内容を共有
- トゥートへのリンクを共有
- 画像
- 動画
+ トゥートの内容を共有
+ トゥートへのリンクを共有
+ 画像
+ 動画フォローリクエスト中%d年後
@@ -268,11 +268,11 @@
アカウントをロックフォロワーを手動で承認する必要があります下書きを保存しますか?
- トゥートを送信中です…
- トゥート送信エラー
- トゥートの送信
- 送信がキャンセルされました
- トゥートのコピーが下書きに保存されました
+ トゥートを送信中です…
+ トゥート送信エラー
+ トゥートの送信
+ 送信がキャンセルされました
+ トゥートのコピーが下書きに保存されました新規投稿インスタンス %s にはカスタム絵文字がありませんクリップボードにコピーされました
@@ -280,8 +280,8 @@
システムのデフォルト最初にこれらの絵文字セットをダウンロードする必要があります検索中…
- 全て開く/閉じる
- トゥートを開く
+ 全て開く/閉じる
+ トゥートを開くアプリの再起動が必要ですこれらの変更を適用するには、Tuskyの再起動が必要になります後で
@@ -325,7 +325,7 @@
リスト名ネットワークエラーが発生しました!接続を確認してもう一度試してください!
- \@%s
+ \@%sブーストを解除お気に入りを解除ブーストを表示
@@ -362,7 +362,7 @@
投票返信返信
- このトゥートを削除し、下書きに戻しますか?
+ このトゥートを削除し、下書きに戻しますか?削除更新リストを作成できませんでした
@@ -389,7 +389,7 @@
ボットマークを表示GIFアバターを動かす公開タイムライン
- 閲覧注意:%s
+ 閲覧注意:%s適用投票終了アカウント
@@ -401,21 +401,21 @@
ブックマーク編集ブックマーク
- 予約トゥート
- 予約トゥート
- 予約トゥート
+ 予約トゥート
+ 予約トゥート
+ 予約トゥートフォロワー%1$sさん、%2$sさんフォローリクエスト%sさんのミュートを解除%sさんがあなたにフォローリクエストしました\@%sさんを通報しました
- 予約した投稿はありません。
+ 予約した投稿はありません。下書きはありません。項目 %dこのアカウントは外部のサーバーにあります。匿名化された通報の複製をそちらにも送信しますか?通報をサーバーのモデレーターに送信します。以下にこのアカウントを通報理由を入力できます:
- 投稿を取得できませんでした
+ 投稿を取得できませんでした完了戻る続ける
@@ -424,8 +424,8 @@
リストハッシュタグハッシュタグを追加
- 説明なし
- メディア: %s
+ 説明なし
+ メディア: %s%1$sさん、%2$sさんと他%3$d人%1$sさんフィルターする語句
@@ -465,7 +465,7 @@
%sさんがトゥートしましたお知らせ本当に %s のすべてをブロックするのですか? そのドメインからのコンテンツは、公開タイムラインや通知に表示されなくなります。また、そのドメインのフォロワーは削除されます。
- 音声
+ 音声ドメイン全体を非表示Tuskyによって提供されています
\ No newline at end of file
diff --git a/app/src/main/res/values-kab/strings.xml b/app/src/main/res/values-kab/strings.xml
index c467920c..64c660ca 100644
--- a/app/src/main/res/values-kab/strings.xml
+++ b/app/src/main/res/values-kab/strings.xml
@@ -11,16 +11,16 @@
ƔefTabdartTabdarin
- Tijewwiqt-ik aṭas i ɣuzzifet!
+ Izen-ik·im aṭas i ɣezzif!AgejdanIccaren
- Tijewwiqt
- Iznan
- S tririyin
+ Sensla
+ Iznan
+ S tririyinẒreg amaɣnu-ik
- \@%s
- Zeṛ ugar
- Zeṛ kra kan
+ \@%s
+ Zeṛ ugar
+ Zeṛ kra kanUlac walu da.%s yeṭṭafar-ik·ikem-idErr
@@ -64,29 +64,29 @@
Nɣel aseɣwenLdi amzun d %sBḍu amzun d…
- Bḍu aseɣwen n tijewwiq s…
- Bḍu tijewwiqt d…
+ Bḍu aseɣwen n tijewwiq s…
+ Bḍu tijewwiqt d…Anta tummant\?d-acu i gellan d amaynut\?Nadi…Tiririn…Tugna n umaɣnuSider
- Kkes tijewwiqt-a\?
+ Kkes tijewwiqt-a\?Ẓreg tilɣaAgrudemAceɛlalAberkanTutlayt
- Iccaren
+ IccarenApṛuksi%1$s, %2$s, %3$s d %4$d nniḍen%1$s, %2$s, akked %3$s%1$s akked %2$sTusky %sAmaɣnu n Tusky
- Tugniwin
- Tibidyutin
+ Tugniwin
+ TibidyutinYeṭṭafar-ik·ikem-idKkesLqem
@@ -94,7 +94,7 @@
Rnu yiwen umiḍan amaynut n MaṣṭudunAruTummant-ik·im %s ur tesɛi ara imujiyen udmawanen
- Ldi tijewwiqt
+ Ldi tijewwiqtCC-BY 4.0CC-BY-SA 4.0Senṭeḍ
@@ -113,14 +113,14 @@
KkesAzenẒreg
- Yettwanṭḍen
+ YettwanṭḍenRnu amidyaRnu assenqedṬef tugna
- Timeẓriwt n tijewwaqt
- Sɣiwes tijewwaqt-a
- Bḍu agbur n tijewwiqt-a
- Bḍu aseɣwen ɣer tijewwiqt
+ Timeẓriwt n yizen
+ Sɣiwes tijewwaqt-a
+ Bḍu agbur n tijewwiqt-a
+ Bḍu aseɣwen ɣer tijewwiqtRnu amsizdegẒreg amsizdegSnulfu-d tabdart
@@ -168,7 +168,7 @@
%1$s%1$s akked %2$s%1$s, %2$s akked %3$d nniḍen
- Aru tijewwiqt
+ Aru izen %1$s • %2$s%s n wedɣar
@@ -213,10 +213,10 @@
TibdarinIseɣwanYettwaceyyeɛ!
- Yettwaceyyaɛ!
+ Yettwaceyyaɛ!Ula d yiwen n ugmuḍI yimeḍfaṛen kan
- Teɣzi n weḍṛis
+ Teɣzi n weḍṛisYettwamdemmar s TuskyAsmel Web n usenfaṛ:
\n https://chinwag.org
@@ -226,7 +226,7 @@
Sekles amzun d arewway\?TickiAṛubut
- Yettwarna ɣer ticṛad
+ Yettwarna ɣer ticṛaddeg %dsrdeg %dtsddeg %dtsn
@@ -234,16 +234,16 @@
%d n tasint id yugran%d n tasinin id yugran
- Agbur amḥulfu
+ Agbur amḥulfuCreḍ allal n teywalt amzun d amḥulfuWennez tikkelt-nniḍenAsali ur yeddi ara.Tuccḍa deg tuzna n tijewwiqt.AdiganTuragin
- Yebḍa-t %s
- %s yebḍa tijewwiqt-ik·im
- %s yerna tijewwiqt-ik·im ɣer ismenyafen-is
+ Yebḍa-t %s
+ %s yebḍa izen-ik·im
+ %s yerna izen-ik·im ɣer ismenyafen-isTiririt taruradtBḍuKkes beṭu
@@ -268,9 +268,9 @@
Bren-it ɣer %sAsentel n wesnas
- Ulac ɣur-k·m ula d yiwet n tjewwiqt yettwasɣawsen.
- Tijewwiqin yettwasɣawsen
- Tijewwiqin yettwasɣawsen
+ Ulac ɣur-k·m ula d yiwet n tjewwiqt yettwasɣawsen.
+ Tijewwiqin yettwasɣawsen
+ Tijewwiqin yettwasɣawsenSken-d beṭuyatIhacṭagenIsuturen n teḍfeṛt
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index f0255d70..e413d1af 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -26,9 +26,9 @@
다이렉트 메시지탭툿
- 툿
- 툿과 답장
- 고정된 툿
+ 툿
+ 툿과 답장
+ 고정된 툿팔로우팔로워즐겨찾기
@@ -39,15 +39,15 @@
프로필 편집임시 저장라이선스
- \@%s
- %s님이 부스트 했습니다
- 민감한 미디어
- 미디어 숨겨짐
- 클릭하여 보기
- 더 보기
- 숨기기
- 더 보기
- 줄이기
+ \@%s
+ %s님이 부스트 했습니다
+ 민감한 미디어
+ 미디어 숨겨짐
+ 클릭하여 보기
+ 더 보기
+ 숨기기
+ 더 보기
+ 줄이기메시지가 없습니다.게시물이 없습니다. 아래로 당겨서 새로고침하세요!%s님이 부스트 했습니다
@@ -125,15 +125,15 @@
공유다운로드미디어 다운로드 중
- 툿 URL 공유
- 툿 공유
+ 툿 URL 공유
+ 툿 공유미디어 공유신고를 보냈습니다!차단이 해제됨뮤트가 해제됨%s 숨김 해제됨
- 보냈습니다!
- 답장을 보냈습니다.
+ 보냈습니다!
+ 답장을 보냈습니다.인스턴스 주소지금 무엇을 하고 있나요\?열람 주의
@@ -158,12 +158,12 @@
다운로드팔로우 요청을 취소하시겠습니까\?이 계정을 팔로우 해제하시겠습니까\?
- 이 툿을 삭제하시겠습니까\?
- 이 툿을 지우고 다시 작성하시겠습니까\?
+ 이 툿을 삭제하시겠습니까\?
+ 이 툿을 지우고 다시 작성하시겠습니까\?정말로 %s 전체를 숨기시겠습니까\? 모든 공개 타임라인과 알림에서 해당 도메인에서 작성된 컨텐츠를 보지 못합니다. 해당 도메인 팔로워와의 관계가 사라집니다.도메인 전체를 숨기기공개: 공개 타임라인에 표시
- "비표시: 공개 타임라인에 표시하지 않음 "
+ 비표시: 공개 타임라인에 표시하지 않음비공개: 팔로워에게만 공개다이렉트: 멘션한 사용자에게만 공개알림
@@ -193,8 +193,8 @@
언어/Language봇 식별자 추가GIF 아바타 애니메이션 보이기
- 타임라인 필터링
- 탭
+ 타임라인 필터링
+ 탭부스트 보이기답장 보이기미디어 미리보기 다운로드
@@ -210,12 +210,12 @@
공개타임라인에 비표시비공개
- 게시물 글자 크기
- 매우 작게
- 작게
- 보통
- 크게
- 매우 크게
+ 게시물 글자 크기
+ 매우 작게
+ 작게
+ 보통
+ 크게
+ 매우 크게멘션누군가 나를 멘션할 때 알림팔로우
@@ -248,10 +248,10 @@
버그 신고/건의사항:
\n https://git.chinwag.org/chinwag/chinwag-android/issuesTusky 공식 계정
- 이 툿의 내용 공유
- 이 툿의 링크 공유
- 사진
- 비디오
+ 이 툿의 내용 공유
+ 이 툿의 링크 공유
+ 사진
+ 비디오팔로우 요청함%d년 후
@@ -304,11 +304,11 @@
계정 잠금팔로워를 수동으로 승인합니다작성 중인 내용을 저장하시겠습니까\?
- 툿을 보내고 있습니다…
- 툿을 보낼 수 없습니다
- 툿을 보내고 있습니다
- 보내기 취소됨
- 복사본이 임시 저장에 저장되었습니다
+ 툿을 보내고 있습니다…
+ 툿을 보낼 수 없습니다
+ 툿을 보내고 있습니다
+ 보내기 취소됨
+ 복사본이 임시 저장에 저장되었습니다글쓰기이 인스턴스 %s 은(는) 커스텀 이모지가 없습니다.클립보드에 복사되었습니다
@@ -316,8 +316,8 @@
시스템 기본시스템 기본 외의 이모지를 설정하시려면 우선 다운로드해야 합니다탐색하고 있습니다…
- 모두 보이기/줄이기
- 툿 열기
+ 모두 보이기/줄이기
+ 툿 열기어플리케이션 재시작 필요변경 사항을 적용하려면 Tusky를 재시작해야 합니다다음에
@@ -357,11 +357,11 @@
최대 탭 수 %1$d에 도달했습니다
- 미디어: %s
- 열람주의: %s
- 설명 없음
- 부스트함
- 즐겨찾기함
+ 미디어: %s
+ 열람주의: %s
+ 설명 없음
+ 부스트함
+ 즐겨찾기함공개타임라인에 비표시비공개
@@ -405,7 +405,7 @@
부가 설명%s에 포워딩신고하지 못했습니다
- 게시물을 불러오지 못했습니다
+ 게시물을 불러오지 못했습니다인스턴스 관리자에게 신고합니다. 이 계정을 신고하려는 이유를 작성하실 수 있습니다:이 유저는 다른 인스턴스에 속해 있습니다. 그 인스턴스에도 익명으로 신고 내용을 보내시겠습니까\?알림 필터 보이기
diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml
index 86549097..951ed475 100644
--- a/app/src/main/res/values-ml/strings.xml
+++ b/app/src/main/res/values-ml/strings.xml
@@ -38,9 +38,9 @@
നേരേയുള്ള സന്ദേശങ്ങൾടാബുകൾടൂട്ട്
- പോസ്റ്റുകൾ
- മറുപടികളോടൊപ്പം
- പിൻ ചെയ്തത്
+ പോസ്റ്റുകൾ
+ മറുപടികളോടൊപ്പം
+ പിൻ ചെയ്തത്പിന്തുടരലുകൾപിന്തുടരുന്നവർനിശ്ശബ്ദരാക്കിയ ഉപയോക്താക്കൾ
@@ -61,15 +61,15 @@
പിന്തുടരുന്നവർപുതിയത് ലഭിക്കാൻ താഴേക്ക് വലിക്കുകലഭ്യമല്ല
- ചുരുക്കുക
- വിപുലപ്പെടുത്തുക
- അൽപ്പം കാണിക്കൂ
- കൂടുതൽ കാണിക്കൂ
- തുറന്ന് കാണുവാൻ
- മറയ്ക്കപ്പെട്ട മീഡിയ
- സെൻസിറ്റീവ് ഉള്ളടക്കം
+ ചുരുക്കുക
+ വിപുലപ്പെടുത്തുക
+ അൽപ്പം കാണിക്കൂ
+ കൂടുതൽ കാണിക്കൂ
+ തുറന്ന് കാണുവാൻ
+ മറയ്ക്കപ്പെട്ട മീഡിയ
+ സെൻസിറ്റീവ് ഉള്ളടക്കംഅനുവാദം
- മുന്നിശ്ചയിച്ച ടൂറ്റ്സ്
+ മുന്നിശ്ചയിച്ച ടൂറ്റ്സ്ബുക് മാർക്ക്പുനഃക്രമീകരിക്കുകബ്രൗസറിൽ തുറക്കുക
@@ -105,16 +105,16 @@
എഴുതുകപിന്തുടാനുള്ള അപേക്ഷകൾബൂട്ട്സ് കാണിക്കുക
- മുന്നിശ്ചയിച്ച ടൂറ്റ്സ്
+ മുന്നിശ്ചയിച്ച ടൂറ്റ്സ്കരടുകൾതിരുത്ത്അറിയിപ്പുകൾ
- ടാബുകൾ
+ ടാബുകൾഅറിയിപ്പുകൾപ്രഖ്യാപനങ്ങൾപിന്നീട്സംരക്ഷിച്ചു!
- %s ബൂസ്റ്റ് ചെയ്തു
+ %s ബൂസ്റ്റ് ചെയ്തുഫലങ്ങൾ ഒന്നും ഇല്ലഅയച്ചൂ!പങ്കിടുക
@@ -130,7 +130,7 @@
നിങ്ങളെ പിന്തുടരുന്നുഫോട്ടോ എടുക്കുകതിരയുക…
- ചിത്രങ്ങൾ
+ ചിത്രങ്ങൾകൂടുതൽ ലഭ്യമാക്കുകസൂചനകൾബയോ
@@ -157,8 +157,8 @@
പുതുക്കുകഅവതാർലിങ്കുകൾ
- \@%s
- വിഡിയോ
+ \@%s
+ വിഡിയോസൂചിപ്പിക്കുകനീക്കം ചെയ്യുക
\ No newline at end of file
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 0b987231..1acee464 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -26,9 +26,9 @@
Directe berichtenTabsToot
- Toots
- Met reacties
- Vastgezet
+ Toots
+ Met reacties
+ VastgezetVolgendVolgersFavorieten
@@ -38,15 +38,15 @@
Profiel bewerkenConceptenLicenties
- \@%s
- %s boostte
- Gevoelige inhoud
- Verborgen media
- Klik om te bekijken
- Meer tonen
- Minder tonen
- Uitklappen
- Inklappen
+ \@%s
+ %s boostte
+ Gevoelige inhoud
+ Verborgen media
+ Klik om te bekijken
+ Meer tonen
+ Minder tonen
+ Uitklappen
+ InklappenHier is niets.Niets te zien. Swipe naar beneden om te verversen!%s boostte jouw toot
@@ -120,14 +120,14 @@
Link kopiërenAls %s openenDelen als …
- Link van de toot delen
- Inhoud van de toot delen met…
+ Link van de toot delen
+ Inhoud van de toot delen met…Media delen met …Verzonden!Gebruiker is gedeblokkeerdGebruiker wordt niet langer genegeerd
- Verzonden!
- Reactie succesvol verzonden.
+ Verzonden!
+ Reactie succesvol verzonden.Welke Mastodonserver?Wat wil je kwijt?Tekstwaarschuwing
@@ -152,7 +152,7 @@
DownloadenHet volgverzoek intrekken?Dit account ontvolgen?
- Deze toot verwijderen?
+ Deze toot verwijderen?Openbaar: op openbare tijdlijnen tonenMinder openbaar: niet op openbare tijdlijnen tonenAlleen volgers: alleen aan jouw volgers tonen
@@ -180,8 +180,8 @@
Aangepaste tabbladen gebruikenVerberg zwevende tootknop tijdens scrollenTaal
- Filteren
- Tijdlijnen
+ Filteren
+ TijdlijnenBoosts tonenReacties tonenVoorbeelden van media tonen
@@ -197,12 +197,12 @@
OpenbaarMinder openbaarAlleen volgers
- Tekstgrootte van toots
- Kleinst
- Klein
- Standaard
- Groot
- Grootst
+ Tekstgrootte van toots
+ Kleinst
+ Klein
+ Standaard
+ Groot
+ GrootstNieuwe vermeldingenMeldingen over nieuwe vermeldingenNieuwe volgers
@@ -234,10 +234,10 @@
Foutmeldingen & nieuwe functies aanvragen:\n
https://git.chinwag.org/chinwag/chinwag-android/issuesTusky\'s profiel
- Deel de inhoud van de toot
- Deel de link van de toot
- Afbeeldingen
- Video
+ Deel de inhoud van de toot
+ Deel de link van de toot
+ Afbeeldingen
+ VideoVolgverzoek verzondenover %dj
@@ -270,11 +270,11 @@
Account besloten makenHandmatige goedkeuring vereist voor volgersConcept bewaren?
- Toot aan het verzenden…
- Verzenden van toot mislukt
- Toots aan het verzenden
- Verzenden geannuleerd
- Een kopie van de toot werd opgeslagen als concept
+ Toot aan het verzenden…
+ Verzenden van toot mislukt
+ Toots aan het verzenden
+ Verzenden geannuleerd
+ Een kopie van de toot werd opgeslagen als conceptToot schrijvenJouw server %s heeft geen lokale emojisNaar het klembord gekopieerd
@@ -282,8 +282,8 @@
SysteemstandaardJe moet eerst deze emoji-sets downloadenAan het zoeken…
- Alle toots in- of uitklappen
- Toot openen
+ Alle toots in- of uitklappen
+ Toot openenHerstarten app vereistJe moet Tusky herstarten om deze veranderingen te kunnen doorvoerenLater
@@ -325,15 +325,15 @@
maximum van %1$d tab bereiktmaximum van %1$d tabs bereikt
- Media: %s
+ Media: %s
- Inhoudswaarschuwing: %s
+ Inhoudswaarschuwing: %s
- Geen omschrijving
+ Geen omschrijving
- Geboost
+ Geboost
- Aan favorieten toegevoegd
+ Aan favorieten toegevoegd
Openbaar
@@ -366,7 +366,7 @@
Naam van lijstHashtag zonder #Verwijderen en herschrijven
- Deze toot verwijderen en herschrijven\?
+ Deze toot verwijderen en herschrijven\?LeegmakenFilterToepassen
@@ -420,7 +420,7 @@
Extra opmerkingenVerder naar %sHet rapporteren is mislukt
- Het ophalen van toots is mislukt
+ Het ophalen van toots is misluktDeze rapportage wordt naar jouw servermoderator(en) gestuurd. Je kunt hieronder een uitleg geven over waarom je het account wilt rapporteren:Het account is van een andere server. Wil je ook een geanonimiseerde kopie van de rapportage daarnaartoe sturen\?Meldingenfilter tonen
@@ -439,17 +439,17 @@
BewerkenGeluidsbestanden moeten minder dan 40MB zijn.Bladwijzers
- Ingeplande toots
+ Ingeplande tootsBladwijzerBewerkenBladwijzersPoll toevoegen
- Ingeplande toots
- Ingeplande toot
+ Ingeplande toots
+ Ingeplande tootHerstellenPowered by TuskyAltijd toots met tekstwaarschuwingen uitklappen
- Als bladwijzer toegevoegd
+ Als bladwijzer toegevoegdKies een lijstLijstAccounts
@@ -457,16 +457,16 @@
PollFout tijdens opzoeken toot %sJe hebt nog geen concepten
- Je hebt nog geen ingeplande toots
+ Je hebt nog geen ingeplande tootsOm in te plannen moet je in Mastodon een minimum interval van 5 minuten gebruiken.VolgverzoekenHashtags
- Bijlagen
+ Bijlagenvolgverzoek verstuurdAfmeldenAbonneren
- De toot waarvoor jij een reactie had opgesteld, is verwijderd
- Het versturen van deze toot is mislukt!
+ De toot waarvoor jij een reactie had opgesteld, is verwijderd
+ Het versturen van deze toot is mislukt!Weet je zeker dat je de lijst %s wilt verwijderen\?Je kan niet meer dan %1$d mediabijlage uploaden.
@@ -488,7 +488,7 @@
%s personenHashtag toevoegen
- Geluid
+ GeluidMeldingen wanneer iemand waar je op bent geabonneerd een nieuwe toot plaatstNieuwe tootsMeldingen over volgverzoeken
diff --git a/app/src/main/res/values-no-rNB/strings.xml b/app/src/main/res/values-no-rNB/strings.xml
index 033f4578..b9203d7a 100644
--- a/app/src/main/res/values-no-rNB/strings.xml
+++ b/app/src/main/res/values-no-rNB/strings.xml
@@ -9,26 +9,26 @@
En ukjent autoriseringsfeil oppsto.Autorisasjon ble nektet.Henting av logintoken feilet.
- Statusen er for lang!
+ Innlegget er for langt!Filen må være mindre enn 8MB.Videofiler må være mindre enn 40MB.Den filtypen kan ikke lastes opp.Den filen kunne ikke åpnes.Trenger tillatelse til å lese media.Trenger tillatelse for å lagre media.
- Bilder og videoer kan ikke kobles til samme status.
+ Bilder og videoer kan ikke kobles til samme innlegg.Opplastingen feilet.
- En feil oppsto under sending av tootet.
+ En feil oppsto under sending av innlegget.HjemVarslerLokalForentDirektemeldingerFaner
- Toot
- Toots
- Med svar
- Festet
+ Tråd
+ Innlegg
+ Med svar
+ FestetFølgerFølgereFavoritter
@@ -38,19 +38,19 @@
Endre profilen dinKladderLisenser
- \@%s
- %s boosted
- Sensitivt innhold
- Media skjult
- Klikk for å vise
- Vis mer
- Vis mindre
- Utvid
- Kollaps
+ \@%s
+ %s boostet
+ Sensitivt innhold
+ Media skjult
+ Klikk for å vise
+ Vis mer
+ Vis mindre
+ Utvid
+ KollapsHer er det ingenting.Her er det ingenting. Dra ned for å oppdatere!
- %s boostet tootet ditt
- %s favoriserte tootet ditt
+ %s boostet innlegget ditt
+ %s favoriserte innlegget ditt%s følger degRapporter @%sYtterligere kommentarer\?
@@ -102,7 +102,7 @@
AvvisSøkKladder
- Toot-synlighet
+ Synlighet på innleggInnholdsadvarselEmoji-tastaturLegg til fane
@@ -122,14 +122,14 @@
Del som …Last ned mediaLaster ned media
- Del toot-URL til…
- Del toot til…
+ Del innlegg-URL til…
+ Del innlegg til…Del media til…Sendt!Fjernet blokkering av brukerFjernet demping av bruker
- Sendt!
- Svaret ble sendt.
+ Sendt!
+ Svaret ble sendt.Hvilken instanse\?Hva skjer\?Innholdsadvarsel
@@ -154,7 +154,7 @@
Last nedTrekk tilbake følgeforespørselen\?Slutte å følge denne kontoen\?
- Slette dette tootet\?
+ Slette dette tootet\?Offentlig: Vis i offentlig tidslinjerIkke oppført: Ikke vis i offentlige tidslinjerBare følgere: Vis bare til følgere
@@ -178,8 +178,8 @@
Bruke Chrome tilpassede fanerSkjul skriv-knappen under scrollingSpråk
- Tidslinjefiltrering
- Faner
+ Tidslinjefiltrering
+ FanerVis boostsVis svarLast ned forhåndsvisning av media
@@ -191,13 +191,13 @@
Marker alltid media som sensitivtPubliserer (synkronisert med server)Synkronisering av innstillinger feilet
- Størrelse på statustekst
+ Størrelse på statustekstNye følgereVarsler om nye følgere
- Boosts
- Varsler når tootene dine blir boostet
+ Booster
+ Varsler når innleggene dine blir boostetFavoritter
- Varsler når tootene dine blir favorisert
+ Varsler når innleggene dine blir favorisert%s nevnte deg%1$s, %2$s, %3$s og %4$d anre%1$s, %2$s, og %3$s
@@ -212,10 +212,10 @@
Rapporter feil og ønsker om funksjonalitet her:
\n https://git.chinwag.org/chinwag/chinwag-android/issuesTuskys Mastodon-profil
- Del inneholdet i tootet
- Del link til toot
- Bilder
- Video
+ Del inneholdet i innlegget
+ Del link til innlegget
+ Bilder
+ VideoForespørsel sendtom %ddom %dh
@@ -271,11 +271,11 @@
Lås kontoKrever at du manuelt godkjenner nye følgereLagre kladd\?
- Sender Toot…
- Det oppsto en feil under sending av tootet
- Sender Toots
- Sending avbrutt
- En kopi av tootet er lagret i kladdene dine
+ Sender toot…
+ Det oppsto en feil under sending av tootet
+ Sender toots
+ Sending avbrutt
+ En kopi av tootet er lagret i kladdene dineSkrivInstansen %s har ingen egendefinerte emojisKopiert til utklippstavlen
@@ -283,8 +283,8 @@
SystemstandardDu må laste ned emoji-samlingene før de kan brukesGjennomfører oppslag…
- Utvid/kollaps alle statuser
- Åpne toot
+ Utvid/kollaps alle statuser
+ Åpne tootOmstart av applikasjonen er påkrevdDu må starte Tusky på nytt for at endringene skal bli aktiveSenere
@@ -314,8 +314,8 @@
<b>%1$s</b> Favoritter
- <b>%s</b> Boost
- <b>%s</b> Boosts
+ %s Boost
+ %s BoosterBoostet avFavorisert av
@@ -326,11 +326,11 @@
grensen på %1$d fane er nåddgrensen på %1$d faner er nådd
- Media: %s
- Innholdsadvarsel: %s
- Ingen beskrivelse
- Reblogged
- Favorisert
+ Media: %s
+ Innholdsadvarsel: %s
+ Ingen beskrivelse
+ Reblogget
+ FavorisertOffentligIkke listetFølgere
@@ -340,12 +340,12 @@
FjernFilterBruk
- Skriv Toot
+ Skriv innleggSkrivVis at konto er en robotEr du sikker på at du vil slette alle varsler\?Slett og skriv på nytt
- Vil du slette dette tottet og skrive det på nytt\?
+ Vil du slette dette tottet og skrive det på nytt\? %1$s • %2$s%s stemme
@@ -362,11 +362,11 @@
OffentligIkke listetKun følgere
- Minste
- Liten
- Medium
- Stor
- Størst
+ Minste
+ Liten
+ Medium
+ Stor
+ StørstAvstemminger er avsluttetAvstemmingerVarsler om avstemminger som er avsluttet
@@ -399,7 +399,7 @@
Flere kommentarerVideresend til %sKlarte ikke å rapportere
- Klarte ikke å hente statuser
+ Klarte ikke å hente innleggRapporten vil bli sendt til instansmoderatoren. Under kan du skrive en forklaring på hvorfor du rapporterer denne kontoen:Kontoen tilhører en annen instans. Vil du også sende en anonymisert kopi av rapporten dit\?Skjulte domener
@@ -413,7 +413,7 @@
Når nøkkelordet kun inneholder bokstaver og tall, vil det bare brukes dersom det stemmer overens med hele ordetKontoerKlarte ikke å søke
- Ekspander alltid toots markert med innholdsadvarsel
+ Ekspander alltid innlegg markert med innholdsadvarselLegg til avstemmingAvstemming5 minutter
@@ -427,20 +427,20 @@
Flere valgValg %dEndre
- Planlagte toots
+ Planlagte tootsRediger
- Planlagte toots
- Planlegg toot
+ Planlagte toots
+ Planlegg tootTilbakestillDet oppsto en feil under henting av %sDrevet av TuskyBokmerkerBokmerkeBokmerker
- Bokmerke lagt til
+ Bokmerke lagt tilVelg listeListe
- Du har ingen planlagte statuser.
+ Du har ingen planlagte innlegg.Du har ikke lagret noen kladder.Lydfiler må være mindre enn 40MB.Mastodon har et minimums planleggingsinterval på 5 minutter.
@@ -482,14 +482,14 @@
Informasjon som kan påvirke ditt mentale velvære vil bli skjult. Dette inkluderer:
\n
\n - Varsler om favorisering, boosts og følgere
-\n - Antall favoriseringer og boots på toots
-\n - Antall følgere og toots på profiler
+\n - Antall favoriseringer og boots på innlegg
+\n - Antall følgere og innlegg på profiler
\n
\n Push-varsler vil ikke påvirkes, men du kan se over dine varselinnstillinger manuelt.Velvære
- Varsler når noen jeg følger publiserer en ny toot
- Nye toots
- noen jeg følger publiserer en ny toot
+ Varsler når noen jeg følger publiserer et nytt innlegg
+ Nye innlegg
+ noen jeg følger publiserer et nytt innlegg%s tootet akkuratDu kan ikke laste opp flere enn %1$d mediavedlegg.
@@ -498,12 +498,12 @@
UendeligVarighetEr du sikker på at du vil slette listen %s\?
- Vedlegg
- Lyd
- Tootet du kladdet et svar til har blitt fjernet
+ Vedlegg
+ Lyd
+ Tootet du kladdet et svar til har blitt fjernetKladd slettetLasting av svarinformasjon feilet
- Sending av toot feilet!
+ Sending av toot feilet!Animer egendefinerte emojisAvslutt abonnementetAbonner
@@ -512,4 +512,11 @@
Slett samtaleSlett bokmerkeVis bekreftelsesdialog når favoritt skal legges til
+ 30 dager
+ 60 dager
+ 90 dager
+ 180 dager
+ 365 dager
+ 14 dager
+ Komponer toot
\ No newline at end of file
diff --git a/app/src/main/res/values-oc/strings.xml b/app/src/main/res/values-oc/strings.xml
index 4b6a27ee..c41fe5a2 100644
--- a/app/src/main/res/values-oc/strings.xml
+++ b/app/src/main/res/values-oc/strings.xml
@@ -22,8 +22,8 @@
NotificacionsFederacionTut
- Pòstes
- Amb responsas
+ Pòstes
+ Amb responsasAbonamentSeguidorsPreferits
@@ -33,14 +33,14 @@
Modificar lo perfilBorrolhonsLicéncias
- %s partejat
- Contengut sensible
- Mèdia amagat
- Clicar per mostrar
- Mostrar mai
- Mostrar mens
- Desplegar
- Replegar
+ %s partejat
+ Contengut sensible
+ Mèdia amagat
+ Clicar per mostrar
+ Mostrar mai
+ Mostrar mens
+ Desplegar
+ ReplegarI a pas res aquí. Davalatz per actualizar !%s a partajat vòstre tut%s a aimat vòstre tut
@@ -97,14 +97,14 @@
Clavièr EmojiTelecargament %1$sCopiar lo ligam
- Partejar l\'URL del tut amb…
- Partejar vòstre tut amb…
+ Partejar l\'URL del tut amb…
+ Partejar vòstre tut amb…Partejar l’imatge amb…Enviat !Utilizaire desblocatUtilizaire sortit del silenci
- Enviat !
- Responsa ben enviada.
+ Enviat !
+ Responsa ben enviada.Quina instància ?A de qué pensatz ?Avís de contengut
@@ -128,7 +128,7 @@
TelecargarAnullar la demandar d’abonament ?Volètz quitar de seguir aqueste compte ?
- Suprimir aqueste tut \?
+ Suprimir aqueste tut \?Publica : es visibla a la cronologia publicaPas listada :es pas visibla a las cronologias publicasSolament seguidors : pas que visibla pels vòstres seguidors
@@ -153,8 +153,8 @@
NavegadorOnglets personalizats de ChromeAmagar lo boton de redaccion en desplaçament
- Filtre de la cronologia
- Onglets
+ Filtre de la cronologia
+ OngletsMostrar los retutsMostrar las responsasMostrar los apercebuts
@@ -167,12 +167,12 @@
PublicaPas listatSeguidors solament
- Talha de text de l\'estatut
- Mendre
- Pichona
- Mejana
- Granda
- Grandassa
+ Talha de text de l\'estatut
+ Mendre
+ Pichona
+ Mejana
+ Granda
+ GrandassaMencions nòvasNotificacions de mencions novesSeguidors nòus
@@ -207,10 +207,10 @@
https://git.chinwag.org/chinwag/chinwag-android/issues
Perfil de Tusky
- Partejar lo contengut del tut
- Partejar lo ligam del tut
- Imatges
- Vidèo
+ Partejar lo contengut del tut
+ Partejar lo ligam del tut
+ Imatges
+ VidèoDemanda d’abonamenten %d ans
@@ -236,11 +236,11 @@
Clavar lo compteDemanda que validetz manualament los seguidorsSalvar lo borrolhon ?
- Mandadís del tut…
- Error en enviar lo tut
- Mandadís dels tuts
- Mandadís anullat
- Una còpia del tut es estat salvat dins los borrolhons
+ Mandadís del tut…
+ Error en enviar lo tut
+ Mandadís dels tuts
+ Mandadís anullat
+ Una còpia del tut es estat salvat dins los borrolhonsRedactarL’instància %s es pas compatibla amb los emoji personalizatsCopiat al quichapapièr
@@ -248,8 +248,8 @@
Çò del sistèmaD’en primièr vos cal telecargar los emojis seguentsRecèrca…
- Desplegar/Plegar totes los estatuts
- Dobrir lo tut
+ Desplegar/Plegar totes los estatuts
+ Dobrir lo tutReaviada necessàriaVos caldrà reaviar Tusky per aplicar aquestes cambiamentsMai tard
@@ -276,8 +276,8 @@
LocalMessatges dirèctesOnglets
- Penjats
- \@%s
+ Penjats
+ \@%sPas res aicí.Suprimir lo partatgeSuprimir lo favorit
@@ -334,7 +334,7 @@
CC-BY-SA 4.0%1$s Favorit
- 3%1$s4 Favorits
+ %1$s Favorits%s partatge
@@ -349,11 +349,11 @@
nombre maximum d’onglet %1$d atengutnombre maximum d’onglets %1$d atengut
- Mèdia : %s
- Avertiment : %s
- Cap de descripcion
- Repartajat
- Mes en favorit
+ Mèdia : %s
+ Avertiment : %s
+ Cap de descripcion
+ Repartajat
+ Mes en favoritPublicPas listadaSeguidors
@@ -363,7 +363,7 @@
Escriure un tutRedactarSuprimir e reformular
- Suprimir e reformular aqueste tut \?
+ Suprimir e reformular aqueste tut \?Utilizar lo tèma sistèmaNetejarFiltrar
@@ -410,7 +410,7 @@
Comentaris suplementarisTransferir a %sFracàs del senhalament
- Recuperacion dels estatuts impossibla
+ Recuperacion dels estatuts impossiblaLo senhalament serà enviat a vòstre moderator de servidor. Podètz fornir una explicacion de perque senhalatz lo compte çai-jos :Aqueste compte es en un autre servidor. Enviar una còpia anonimizada del senhalament \?Domenis resconduts
@@ -438,22 +438,22 @@
Opcions multiplasOpcion %dModificar
- Tuts planificats
+ Tuts planificatsModificar
- Tuts planificats
- Planificar de tuts
+ Tuts planificats
+ Planificar de tutsEscafarError en cercant la publicacion %sPropulsat per TuskyMarcapaginasAjustar als marcapaginasMarcapaginas
- Ajustat als marcapaginas
+ Ajustat als marcapaginasSeleccionar la listListaLos fichièrs àudio devon èsser inferiors a 40 Mo.Avètz pas cap de borrolhon.
- Avètz pas cap de tut planificat.
+ Avètz pas cap de tut planificat.L’interval minimum de planificacion sus Mastodon e de 5 minutas.Demandas d’abonamentEtiquetas
@@ -469,7 +469,7 @@
SeguirBorrolhon suprimitFracàs del cargament de las info de responsa
- Fracàs de l’enviament !
+ Fracàs de l’enviament !Volètz vertadièrament suprimir la lista %s \?Repassar las notificacionsEnregistrat !
@@ -482,8 +482,8 @@
%s personasApondre hashtag
- Pèças juntas
- Àudio
+ Pèças juntas
+ ÀudioTuts novèlsNotificacions de demandas de seguimentEnbàs
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index d4239cf5..f2aa559d 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -22,8 +22,8 @@
LokalneGlobalneWątek
- Wpisy
- Z odpowiedziami
+ Wpisy
+ Z odpowiedziamiŚledzeniŚledzącyUlubione
@@ -33,12 +33,12 @@
Edytuj profilSzkiceLicencje
- %s podbił
- Wrażliwe treści
- Ukryto zawartość multimedialną
- Naciśnij, aby wyświetlić
- Pokaż więcej
- Ukryj
+ %s podbił
+ Wrażliwe treści
+ Ukryto zawartość multimedialną
+ Naciśnij, aby wyświetlić
+ Pokaż więcej
+ UkryjPusto tutaj. Pociągnij, aby odświeżyć!%s podbił(-a) Twój wpis%s dodał Twój post do ulubionych
@@ -95,13 +95,13 @@
Klawiatura emojiPobieranie %1$sSkopiuj odnośnik
- Udostępnij odnośnik do wpisu…
- Udostępnij wpis do…
+ Udostępnij odnośnik do wpisu…
+ Udostępnij wpis do…Wyślij!Odblokowano użytkownikaCofnięto wyciszenie użytkownika
- Wyślij!
- Pomyślnie wysłano odpowiedź.
+ Wyślij!
+ Pomyślnie wysłano odpowiedź.Jaka instancja?Co Ci chodzi po głowie?Ostrzeżenie o zawartości
@@ -150,8 +150,8 @@
PrzeglądarkaUżywaj niestandardowych kart ChromeUkryj przycisk śledzenia podczas przewijania
- Filtrowanie osi czasu
- Zakładki
+ Filtrowanie osi czasu
+ ZakładkiPokaż podbiciaPokazuj odpowiedziPokazuj podgląd zawartości multimedialnej
@@ -164,12 +164,12 @@
PubliczneNiewypisaneTylko dla śledzonych
- Rozmiar tekstu wpisów
- Najmniejszy
- Mały
- Średni
- Duży
- Ogromny
+ Rozmiar tekstu wpisów
+ Najmniejszy
+ Mały
+ Średni
+ Duży
+ OgromnyNowe wspomnieniaPowiadomienia o nowych wspomnieniachNowi śledzący
@@ -204,10 +204,10 @@
https://git.chinwag.org/chinwag/chinwag-android/issues
Profil Tusky’ego
- Udostępnij zawartość wpisu
- Udostępnij link do postu
- Obrazy
- Wideo
+ Udostępnij zawartość wpisu
+ Udostępnij link do postu
+ Obrazy
+ WideoWysłano prośbę o możliwość śledzeniaw %d lata
@@ -237,11 +237,11 @@
Zablokuj kontoWymaga od Ciebie ręcznej akceptacji próśb o śledzenieCzy chcesz zapisać szkic?
- Wysyłanie wpisu…
- Wystąpił błąd podczas wysyłania wpisu
- Wysyłanie wpisów
- Anulowano wysyłanie
- Kopia wpisu została zapisana jako szkic
+ Wysyłanie wpisu…
+ Wystąpił błąd podczas wysyłania wpisu
+ Wysyłanie wpisów
+ Anulowano wysyłanie
+ Kopia wpisu została zapisana jako szkicNowy wpisTwoja instancja %s nie używa żadnych niestandardowych emojiSkopiowano do schowka
@@ -249,8 +249,8 @@
Domyślny systemuMusisz najpierw pobrać te zestawy emojiWyszukiwanie…
- Rozwiń/zwiń wszystkie wpisy
- Otwórz wpis
+ Rozwiń/zwiń wszystkie wpisy
+ Otwórz wpisWymagane jest ponowne uruchomienieMusisz uruchomić ponownie Tuskyego, aby zastosować zmianyPóźniej
@@ -271,9 +271,9 @@
Wystąpił problem z łącznością! Sprawdź swoje połączenie internetowe i spróbuj ponownie!Pliki wideo muszą być mniejsze niż 40MB.Wiadomości bezpośrednie
- Przypięte
- Rozwiń
- Zwiń
+ Przypięte
+ Rozwiń
+ ZwińNic tu nie ma.Usuń z ulubionychUsuń i przeredaguj
@@ -289,7 +289,7 @@
Udostępnij jako …ZakładkiUkryte domeny
- \@%s
+ \@%sCofnij podbicieUkryte domenyDodaj głosowanie
@@ -302,8 +302,8 @@
Pobieranie mediówWyślij media do…Domena %s nie jest już schowana
- Usunąć ten wpis\?
- Usunąć i napisać ponownie ten wpis\?
+ Usunąć ten wpis\?
+ Usunąć i napisać ponownie ten wpis\?Czy jesteś pewien/pewna że chcesz zablokować wszystko z domeny %s\? Nie będziesz widzieć zawartości z tej domeny w żadnej osi czasu ani w twoich powiadomieniach. Twoi obserwujący z tej domeny nie będą usunięci.Schowaj całą domenęgłosowania zostały zakończone
@@ -373,11 +373,11 @@
maksymalna liczba zakładek (%1$d) osiągniętamaksymalna liczba zakładek (%1$d) osiągnięta
- Media: %s
- Ostrzeżenie o zawartości: %s
- Brak opisu
- Podbity
- Polubiony
+ Media: %s
+ Ostrzeżenie o zawartości: %s
+ Brak opisu
+ Podbity
+ PolubionyPublicznyNiewidoczneŚledzący
@@ -435,7 +435,7 @@
Dodatkowe komentarzeWyślij zgłoszenie do %sZgłoszenie nie powiodło się
- Pobieranie wpisów nie powiodło się
+ Pobieranie wpisów nie powiodło sięZgłoszenie zostanie przesłąne do moderatora twojego serwera. Możesz podać przyczynę zgłoszenia tego konta poniżej:To konto jest na innym serwerze. Czy przesłać anonimizowaną kopię zgłoszenia na ten serwer\?Konta
@@ -453,22 +453,22 @@
Kilka wyborówOpcja %dEdytuj
- Zaplanowane wpisy
+ Zaplanowane wpisyEdytuj
- Zaplanowane wpisy
- Zaplanuj wpis
+ Zaplanowane wpisy
+ Zaplanuj wpisResetujNapędzane przez TuskyBłąd przy wyszukiwaniu wpisu %sZakładkiDodaj do zakładekZakładki
- Dodane do zakładek
+ Dodane do zakładekWybierz listęListaPliki audio muszą być mniejsze niż 40MB.Nie masz żadnych szkiców.
- Nie masz żadnych zaplanowanych wpisów.
+ Nie masz żadnych zaplanowanych wpisów.Mastodon umożliwia wysłanie minimalnie 5 minut od zaplanowania.Prośby o możliwość śledzeniaPytaj o potwierdzenie przed podbiciem
@@ -500,21 +500,21 @@
Nie możesz przesłać więcej niż %1$d załączników.Nie udało się załadować informacji o odpowiedzi
- Przesłanie wpisu nie powiodło się!
+ Przesłanie wpisu nie powiodło się!Czy na pewno chcesz usunąć listę %s\?Nie ma ogłoszeń.Ogranicz liczbę powiadomień o zmianach na osi czasuCzas trwaniaNowe wpisy
- Niektóre informacje, które mogą wpływać na Twoj dobrostan psychiczny zostaną ukryte. W ich skład wchodzą:
+ Niektóre informacje, które mogą wpływać na Twój dobrostan psychiczny zostaną ukryte. W ich skład wchodzą:
\n
\n - powiadomienia o ulubionych/podbiciach/obserwowaniu
-\n - liczba polubień/podbić toota
+\n - liczba polubień/podbić wpisu
\n - statystyki obserwujących/postów na profilach
\n
\nNie będzie to miało wpływu na powiadomienia typu push, ale możesz zmienić ustawienia powiadomień ręcznie.Włącz gest przesuwania by przełączać między zakładkami
- Załączniki
+ ZałącznikiPowiadomienia o prośbach o obserwowaniektoś kogo zasubskrybowałem/zasubskrybowałam opublikował nowy wpisWysłano prośbę o obserwowanie
@@ -523,7 +523,7 @@
Anuluj subskrypcjęZasubskrybujMimo tego, że twoje konto nie jest zablokowane, administracja %1$s uznała, że możesz chcieć ręcznie przejrzeć te prośby o możliwość śledzenia od tych kont.
- Wpis dla którego naszkicowałeś/naszkicowałaś odpowiedź został usunięty
+ Wpis dla którego naszkicowałeś/naszkicowałaś odpowiedź został usuniętyUsunięto szkicUkryj ilościowe statystyki na profilachUkryj ilościowe statystyki na postach
@@ -531,7 +531,7 @@
Zapisano!Twoja prywatna notatka o tym koncieCzas nieokreślony
- Dźwięk
+ DźwiękPowiadomienia o opublikowaniu nowego wpisu przez kogoś, kogo obserwujeszPozycja głównego paska nawigacjiAnimuj niestandardowe emoji
@@ -542,4 +542,11 @@
%s poprosił(a) o możliwość śledzenia CięUsuń z zakładekPytaj o potwierdzenie przed dodaniem do ulubionych
+ 14 dni
+ 30 dni
+ 60 dni
+ 90 dni
+ 180 dni
+ 365 dni
+ Utwórz wpis
\ No newline at end of file
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index eee9856a..5f703152 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -25,8 +25,8 @@
Mensagens DiretasEditar abasConversa
- Toots
- Com respostas
+ Toots
+ Com respostasSegueSeguidoresFavoritos
@@ -36,12 +36,12 @@
Editar perfilRascunhosLicenças
- %s deu boost
- Mídia sensível
- Mídia sensível
- Toque para ver
- Expandir
- Ocultar
+ %s deu boost
+ Mídia sensível
+ Mídia sensível
+ Toque para ver
+ Expandir
+ OcultarNada aqui. Arraste para atualizar!%s deu boost no teu toot%s favoritou teu toot
@@ -109,14 +109,14 @@
Copiar linkAbrir como %sCompartilhar como…
- Compartilhar link do toot em…
- Compartilhar toot em…
+ Compartilhar link do toot em…
+ Compartilhar toot em…Compartilhar mídia via…Enviado!Usuário desbloqueadoUsuário dessilenciado
- Enviado!
- Resposta enviada com sucesso.
+ Enviado!
+ Resposta enviada com sucesso.Qual instância?No que você está pensando?Aviso de Conteúdo aqui
@@ -141,7 +141,7 @@
BaixarCancelar solicitação para seguir\?Deixar de seguir esta conta?
- Excluir este toot?
+ Excluir este toot?Público: Postar em linhas públicasNão-listado: Não postar em linhas públicasPrivado: Postar só para seguidores
@@ -168,8 +168,8 @@
NavegadorUsar abas do ChromeOcultar compositor ao rolar a tela
- Filtro da linha do tempo
- Abas
+ Filtro da linha do tempo
+ AbasMostrar boostsMostrar respostasMostrar prévias de mídia
@@ -184,12 +184,12 @@
Erro ao sincronizar configuraçõesPúblicoNão-listado
- Tamanho da fonte
- Menor
- Pequeno
- Médio
- Grande
- Maior
+ Tamanho da fonte
+ Menor
+ Pequeno
+ Médio
+ Grande
+ MaiorMençõesNotificações sobre mençõesSeguidores
@@ -221,10 +221,10 @@
Reporte bugs e solicite funcionalidades:
\n https://git.chinwag.org/chinwag/chinwag-android/issuesPerfil do Tusky
- Compartilhar conteúdo do toot
- Compartilhar link do toot
- Imagens
- Vídeo
+ Compartilhar conteúdo do toot
+ Compartilhar link do toot
+ Imagens
+ VídeoSolicitação enviadaem %dy
@@ -254,11 +254,11 @@
Trancar perfilRequer aprovação manual de seguidoresSalvar rascunho?
- Enviando toot…
- Erro ao enviar toot
- Enviando toots
- Envio cancelado
- Uma cópia do toot foi salva nos seus rascunhos
+ Enviando toot…
+ Erro ao enviar toot
+ Enviando toots
+ Envio cancelado
+ Uma cópia do toot foi salva nos seus rascunhosComporA sua instância %s não possui emojis personalizadosCopiado para a área de transferência
@@ -266,8 +266,8 @@
Padrão do sistemaÉ necessário baixar estes pacotes de emojis primeiroCarregando…
- Expandir/Ocultar todos os toots
- Abrir toot
+ Expandir/Ocultar todos os toots
+ Abrir tootÉ necessário reiniciar o aplicativoÉ necessário reiniciar o aplicativo para aplicar as alteraçõesDepois
@@ -292,10 +292,10 @@
Público PrivadoOcorreu um erro de conexão! Por favor, verifique sua internet e tente novamente!
- Fixado
- \@%s
- Mostrar mais
- Mostrar menos
+ Fixado
+ \@%s
+ Mostrar mais
+ Mostrar menosNada aqui.Excluir e rascunharPreferências da conta
@@ -305,7 +305,7 @@
Abrir mídia #%dBaixar mídiaBaixando mídia
- Excluir e rascunhar este toot\?
+ Excluir e rascunhar este toot\?enquetes terminaremFiltrosIdioma
@@ -353,11 +353,11 @@
excedeu o máximo de %1$d abaexcedeu o máximo de %1$d abas
- Mídia: %s
- Aviso de Conteúdo: %s
- Sem descrição
- Você deu boost
- Favoritado
+ Mídia: %s
+ Aviso de Conteúdo: %s
+ Sem descrição
+ Você deu boost
+ FavoritadoNão-listadoDiretoNome da lista
@@ -406,7 +406,7 @@
Comentários adicionaisEncaminhar para %sErro ao denunciar
- Erro ao carregar toots
+ Erro ao carregar tootsA denúncia será enviada aos moderadores da instância. Explique por que denunciou a conta:A conta está em outra instância. Enviar uma cópia anônima da denúncia para lá\?Instâncias bloqueadas
@@ -434,20 +434,20 @@
Múltiplas opçõesOpção %dEditar
- Agendados
+ AgendadosEditar
- Agendados
- Agendar toot
+ Agendados
+ Agendar tootCancelarErro ao pesquisar %sSalvosSalvarSalvosDesenvolvido por Tusky
- Salvo
+ SalvoSelecionar listaLista
- Sem toots agendados.
+ Sem toots agendados.O áudio deve ser menor que 40MB.Sem rascunhos.Mastodon possui um intervalo mínimo de 5 minutos para agendar.
@@ -481,8 +481,8 @@
Notificar sobre toots de quem me interessaquem me interessa tootarErro ao carregar toot para responder
- Erro ao enviar o toot!
- O toot em que se rascunhou uma resposta foi excluído
+ Erro ao enviar o toot!
+ O toot em que se rascunhou uma resposta foi excluídoRascunho excluídoNão é possível anexar mais de %1$d arquivo de mídia.
@@ -505,8 +505,8 @@
Sem comunicados.IndefinidoDuração
- Anexos
- Áudio
+ Anexos
+ ÁudioNovos toots%s recém tootouComunicados
@@ -517,4 +517,12 @@
Excluir esta conversa\?Excluir conversaDeseja excluir a lista %s\?
+ Remover do Salvos
+ Solicitar confirmação antes de favoritar
+ 30 dias
+ 60 dias
+ 90 dias
+ 180 dias
+ 14 dias
+ 365 dias
\ No newline at end of file
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 7656877a..184497b8 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -26,9 +26,9 @@
Личные сообщенияВкладкиКутеж
- Посты
- Посты и ответы
- Закреплённые
+ Посты
+ Посты и ответы
+ ЗакреплённыеПодпискиПодписчикиИзбранное
@@ -38,15 +38,15 @@
Редактировать профильЧерновикиЛицензии
- \@%s
- %s продвинул(а)
- Чувствительный контент
- Медиа скрыто
- Нажмите для просмотра
- Показать больше
- Показать меньше
- Развернуть
- Свернуть
+ \@%s
+ %s продвинул(а)
+ Чувствительный контент
+ Медиа скрыто
+ Нажмите для просмотра
+ Показать больше
+ Показать меньше
+ Развернуть
+ СвернутьНичего нет.Ничего нет. Потяните вниз, чтобы обновить!%s продвинул(а) вашу запись
@@ -123,14 +123,14 @@
Поделиться как…Скачать медиафайлСкачивание медиафайла
- Поделиться ссылкой на гудок…
- Поделиться гудком с…
+ Поделиться ссылкой на гудок…
+ Поделиться гудком с…Поделиться медифайлом…Отправить!Пользователь разблокированПользователь включен
- Отправлено!
- Ответ успешно отправлен.
+ Отправлено!
+ Ответ успешно отправлен.Какой узел?Что тут происходит\?Предупреждение о содержании
@@ -155,8 +155,8 @@
СкачатьОтозвать запрос на подписку\?Отписаться от этого аккаунта?
- Удалить гудок\?
- Удалить гудок и превратить его в черновик\?
+ Удалить гудок\?
+ Удалить гудок и превратить его в черновик\?Публичный: Показать в публичных лентахНеизвестно: Не показывать в публичных лентахТолько подписчики: Показать только подписчикам
@@ -185,8 +185,8 @@
Используйте пользовательские вкладки ChromeСкрывать кнопку композиционирования гудка при прокрутке лентыЯзык
- Фильтрование ленты
- Вкладки
+ Фильтрование ленты
+ ВкладкиПоказывать продвиженияПоказывать ответыЗагрузить предпросмотр медиаконтента
@@ -202,12 +202,12 @@
ПубличныеНеизвестноДля подписчиков
- Размер текста статусов
- Крохотный
- Маленький
- Средний
- Большой
- Огромный
+ Размер текста статусов
+ Крохотный
+ Маленький
+ Средний
+ Большой
+ ОгромныйНовые УпоминанияУведомлять о новых упоминанияхНовые подписчики
@@ -239,10 +239,10 @@
Отчеты об ошибках и ваши пожелания:
\n https://git.chinwag.org/chinwag/chinwag-android/issuesПрофиль Tusky
- Поделиться содержанием гудка
- Поделиться ссылкой на гудок
- Изображения
- Видео
+ Поделиться содержанием гудка
+ Поделиться ссылкой на гудок
+ Изображения
+ ВидеоЗапрошенные подпискичерез %dг
@@ -317,11 +317,11 @@
Закрыть аккаунтВам придётся вручную подтверждать подписчиковСохранить черновик?
- Отправка гудка…
- Ошибка при отправке гудка
- Отправка гудков
- Отправка отменена
- Копия поста сохранена в ваши черновики
+ Отправка гудка…
+ Ошибка при отправке гудка
+ Отправка гудков
+ Отправка отменена
+ Копия поста сохранена в ваши черновикиСочинитьУ вашего узла %s нет собственных эмодзиСкопировано в буфер обмена
@@ -329,8 +329,8 @@
СистемныйСперва эти наборы эмодзи нужно скачатьПроизводится поиск…
- Раскрыть/свернуть все статусы
- Открыть гудок
+ Раскрыть/свернуть все статусы
+ Открыть гудокНеобходимо перезапустить приложениеВам нужно перезапустить Tusky для применения измененийПозже
@@ -378,15 +378,15 @@
достигнут лимит в %1$d вкладокдостигнут лимит в %1$d вкладок
-
+
Медиафайл: %s
- Предупреждение о содержании: %s
-
+ Предупреждение о содержании: %s
+
Без описания
- Реблогнуто
- Понравилось
+ Реблогнуто
+ Понравилось
Публичный
@@ -436,7 +436,7 @@
Жалоба на @%s отправленаПереслать в %sНе удалось пожаловаться
- Не удалось получить статусы
+ Не удалось получить статусыЖалоба будет отправлена модератору вашего узла. Ниже вы можете добавить пояснение о причинах жалобы:Этот аккаунт расположен на другом узле. Отправить анонимную копию жалобы туда\?Показать фильтр уведомлений
@@ -456,22 +456,22 @@
Множественный выборВариант %dИзменить
- Запланированные гудки
+ Запланированные гудкиРедактировать
- Запланированные гудки
- Запланировать гудок
+ Запланированные гудки
+ Запланировать гудокСбросЗакладкиДобавить в закладкиЗакладкиРаботает на Tusky
- Добавлено в закладки
+ Добавлено в закладкиВыбрать списокСписокАудиофайлы должны быть меньше 40МБ.Ошибка поиска поста %sУ вас нет черновиков.
- У вас нет запланированный статусов.
+ У вас нет запланированный статусов.Минимальный интервал планирования в Mastodon составляет 5 минут.Показывать диалог подтверждения перед продвижениемПоказывать предпросмотр ссылок в лентах
@@ -516,8 +516,8 @@
СамочувствиеНеопределённаяПродолжительность
- Вложения
- Аудио
+ Вложения
+ Аудио%s только что опубликовал(а)Несмотря на то, что ваша учетная запись не закрыта, наши сотрудники %1$s решили, что вы, возможно, захотите просмотреть запросы на отслеживание от этих учетных записей вручную.
@@ -529,10 +529,10 @@
Скрыть количественную статистику по постамОтписатьсяПодписаться
- Гудок который Вы записали в черновик был удален
+ Гудок который Вы записали в черновик был удаленНе удалось загрузить информацию об ответеЧерновик удалён
- Этот гудок не удалось отправить!
+ Этот гудок не удалось отправить!Вы действительно хотите удалить список %s\?Скрыть количественную статистику по профилям пользователейОграничение уведомлений в ленте
diff --git a/app/src/main/res/values-sa/strings.xml b/app/src/main/res/values-sa/strings.xml
index ffb8a374..bb411871 100644
--- a/app/src/main/res/values-sa/strings.xml
+++ b/app/src/main/res/values-sa/strings.xml
@@ -25,17 +25,17 @@
दोषो जातः ।न किमप्यत्र । नवीकरणार्थमाकृष्यतामधः !न किमप्यत्र ।
- संनिपत्यताम्
- विस्तार्यताम्
- स्वल्पं दृश्यताम्
- अधिकं दृश्यताम्
- द्रष्टुमत्र नुद्यताम्
- प्रच्छन्नसामग्र्यः
- संवेदनशीलो विषयः
- %s अप्रकाशयत्
- \@%s
+ संनिपत्यताम्
+ विस्तार्यताम्
+ स्वल्पं दृश्यताम्
+ अधिकं दृश्यताम्
+ द्रष्टुमत्र नुद्यताम्
+ प्रच्छन्नसामग्र्यः
+ संवेदनशीलो विषयः
+ %s अप्रकाशयत्
+ \@%sअनुज्ञापत्राणि
- कालबद्धदौत्यानि
+ कालबद्धदौत्यानिलेखविकर्षाःस्वीयव्यक्तिविवरणं सम्पाद्यताम्अनुसरणार्थमनुरोधाः
@@ -46,9 +46,9 @@
प्रियाःअनुसर्तारःअनुसरति
- कीलिताः
- सप्रत्युत्तरम्
- प्रकटनानि
+ कीलिताः
+ सप्रत्युत्तरम्
+ प्रकटनानिदौत्यम्पीठिकाःप्रत्यक्षसन्देशाः
@@ -106,8 +106,8 @@
चित्रं गृह्यताम्मतदानं युज्यताम्सामग्र्यस्मै विभाज्यताम् …
- दौत्यमस्मै विभाज्यताम् …
- दौत्यजालस्थलमस्मै विभाज्यताम् …
+ दौत्यमस्मै विभाज्यताम् …
+ दौत्यजालस्थलमस्मै विभाज्यताम् …सामग्री अवारोप्यमाणासामग्री अवारोप्यताम्एवं विभाज्यताम् …
@@ -126,11 +126,11 @@
जालस्थलानिपीठिका युज्यताम्पुनरारम्भः
- कालबद्धदौत्यं क्रियताम्
+ कालबद्धदौत्यं क्रियताम्भावचिह्नटङ्कणफलकम्विषयप्रत्यादेशःदौत्यसुदर्शता
- कालबद्धदौत्यानि
+ कालबद्धदौत्यानिलेखविकर्षाःअन्विष्यताम्अस्वीक्रियताम्
@@ -161,8 +161,8 @@
विषयप्रत्यादेशःकिं वर्तमानमस्ति \?किं विशिष्टस्थलम् \?
- सफलं प्रत्युत्तरप्रेषणम् ।
- प्रेषितम्!
+ सफलं प्रत्युत्तरप्रेषणम् ।
+ प्रेषितम्!%s अनावृतःसूच्यतां मे यदाज्योत्या सूच्यताम्
@@ -180,8 +180,8 @@
किल अवरुध्यताम् @%s\?प्रदेशः छाद्यताम्निश्चियेन सर्वमेव निषिद्धं भवेदेतस्य जनस्य %s \? कोऽपि विषयो न द्रष्टुं शक्यते तत्प्रदेशात् कस्यामपि समयतालिकायामुत वा ते सूचनापेटिकायाम् । भवदनुसर्तारः तस्मात्प्रदेशान्निष्क्रियन्ते ।
- विनश्य पुनः लिख्यताम् \?
- दौत्यमेतन्नश्यताम्\?
+ विनश्य पुनः लिख्यताम् \?
+ दौत्यमेतन्नश्यताम्\?अनुसरणं नश्यताम् \?अवारोप्यताम्उपारोप्यमाणम्…
@@ -233,10 +233,10 @@
%dd दि%dy वर्षअनुसरणं निवेदितम्
- चलचित्राणि
- चित्राणि
- दौत्याय जालस्थानं विभाज्यताम्
- दौत्यविषयो विभाज्यताम्
+ चलचित्राणि
+ चित्राणि
+ दौत्याय जालस्थानं विभाज्यताम्
+ दौत्यविषयो विभाज्यताम्टस्कीवर्यस्य व्यक्तिगतविवरणम्अशुद्धीनामावेदनं वैशिष्ट्यनिवेदनञ्च
\n https://git.chinwag.org/chinwag/chinwag-android/issues
@@ -266,12 +266,12 @@
नवानुसर्तृृन्नधिकृत्य सूचनाःनवानुसर्तारःनवोल्लेखाः
- स्थूलतमः
- स्थूलः
- मध्यमः
- सूक्ष्मः
- सूक्ष्मतमः
- दौत्यस्य / स्थितेरक्षराकारः
+ स्थूलतमः
+ स्थूलः
+ मध्यमः
+ सूक्ष्मः
+ सूक्ष्मतमः
+ दौत्यस्य / स्थितेरक्षराकारःकेवलमनुसर्तृभ्यःअनिर्दिष्टम्सार्वजनिकम्
@@ -290,8 +290,8 @@
सामग्रीणां पूर्वोद्घाटनमवारोप्यताम्प्रत्युत्तराणि दृश्यन्ताम्प्रकाशनानि दृश्यन्ताम्
- पीठिकाः
- समयतालिका-शोधनम्
+ पीठिकाः
+ समयतालिका-शोधनम्छादितसामग्रीभ्यो बहुवर्णयुतचित्रं दर्शयतुसञ्जीवितावतारः क्रियताम्स्वचालितयन्त्रेभ्यः सूचको दृश्यताम्
@@ -320,11 +320,11 @@
अंशफलकेऽनुसृतम्भवदीयं विशिष्टस्थलं %s स्वीयानुकूलभावचिह्नरहितं वर्ततेलिख्यताम्
- दौत्यप्रतिलिपिस्तत्र विकर्षेसु रक्षिता
- प्रेषणं निराकृतम्
- प्रेष्यमाणानि
- दौत्यप्रेषणे दोषः
- दौत्यं प्रेष्यमाणम्…
+ दौत्यप्रतिलिपिस्तत्र विकर्षेसु रक्षिता
+ प्रेषणं निराकृतम्
+ प्रेष्यमाणानि
+ दौत्यप्रेषणे दोषः
+ दौत्यं प्रेष्यमाणम्…रक्षणीयम् \?स्वयमेवाऽनुसर्तॄणां कृतेऽनुमतिर्दातव्यालेखा अवरुध्यताम्
@@ -348,8 +348,8 @@
पश्चात्पुनश्च टस्कीप्रारम्भोऽपेक्षितो वर्तते परिवर्तनानुसरेण चलितुम्अनुप्रयोगप्रारम्भः आवश्यकः
- दौत्यमुद्घाट्यताम्
- विस्तार्यन्तां नश्यन्तां वा स्थतयः
+ दौत्यमुद्घाट्यताम्
+ विस्तार्यन्तां नश्यन्तां वा स्थतयःअन्वेषणं भवद्वर्तते…कीलयतुकीलनं नश्यताम्
@@ -372,7 +372,7 @@
प्रकाशनात् प्राक् पुष्टिसंवादमञ्जूषा दर्शनीयाजालस्थानप्रदर्शनं समयतालिकायां दर्शयतुमास्टोडोने पञ्चनिमेषपरिमितो न्यूनतमः कालबद्धसमयः ।
- न ते कालबद्धदौत्यानि सन्ति ।
+ न ते कालबद्धदौत्यानि सन्ति ।सम्पाद्यताम्मतम् %dबहूनि मतानि
@@ -391,7 +391,7 @@
व्यक्तित्वविवरणलेखाःअन्यजालवितारकादियं व्यक्तित्वविवरणलेखा । आवेदनस्य रक्षितप्रतिलिपिरपि प्रेष्यतां वा \?आवेदनमिदं जालवितारकाय प्रेष्यते । स्वीयविवरणमस्मिन् विषयेऽधो लेखितुं शक्नोषि-:
- दौत्यानि गृहीतुं विफलता
+ दौत्यानि गृहीतुं विफलताआवेदनप्रेषणे विफलताअस्मै पुरस्क्रियताम् %sअन्याः टिप्पण्यः
@@ -447,12 +447,12 @@
अनुसर्तारःअनिर्दिष्टम्सार्वजनिकम्
- पुटचिह्नं कृतम्
- प्रीतिर्दत्ता
- पुनर्लिखितम्
- विवरणं नास्ति
- विषयपूर्वसतर्कता: %s
- सामग्र्यः %s
+ पुटचिह्नं कृतम्
+ प्रीतिर्दत्ता
+ पुनर्लिखितम्
+ विवरणं नास्ति
+ विषयपूर्वसतर्कता: %s
+ सामग्र्यः %sअधिकतमपीठिकासङ्ख्या %1$d भूता
diff --git a/app/src/main/res/values-si/strings.xml b/app/src/main/res/values-si/strings.xml
index 5b88bf6f..df654a29 100644
--- a/app/src/main/res/values-si/strings.xml
+++ b/app/src/main/res/values-si/strings.xml
@@ -14,7 +14,7 @@
දවස් 1දවස් 7සංස්කරණය
- පිළිතුරු සමඟ
+ පිළිතුරු සමඟඅවහිර කළ පරිශීලකයින්කටුපිටපත්කිසිවක් නැත. නැවුම් කිරීමට පහළට අදින්න!
@@ -28,26 +28,26 @@
සම්බන්ධ වෙමින්…දැනුම්දීම්ප්රසිද්ධ
- ඇමුණුම්
+ ඇමුණුම්නව සැඳහුම්රචනා කරන්න
- තව පෙන්වන්න
- ටූට් හි පිටපතක් ඔබගේ කටුපිටපත් තුළට සුරකින ලදි
+ තව පෙන්වන්න
+ ටූට් හි පිටපතක් ඔබගේ කටුපිටපත් තුළට සුරකින ලදිමාධ්ය සඟවන්නපැතිකඩ සංස්කරණයයැවිණි!යළි සකසන්න
- අඩුවෙන් පෙන්වන්න
+ අඩුවෙන් පෙන්වන්නතත්. %d කින්නිහඬ කළ පරිශීලකයින්බෙදාගන්න%1$s ගෙන ගොස් ඇත:
- ටූට් වෙත සබැඳියක් බෙදාගන්න
+ ටූට් වෙත සබැඳියක් බෙදාගන්නබලපත්රපැතිකඩ සංස්කරණයදර්ශන නාමය
- මධ්යම
- ශ්රව්ය
+ මධ්යම
+ ශ්රව්යදැනුම්දීම් පෙරහන පෙන්වන්නදව. %dනික්මෙන්න
@@ -58,8 +58,8 @@
%1$s • %2$sයළි උත්සාහයගිණුම අගුළුලන්න
- මාධ්ය සැඟවී ඇත
- පිළිතුර සාර්ථකව යැවිණි.
+ මාධ්ය සැඟවී ඇත
+ පිළිතුර සාර්ථකව යැවිණි.ඒකාබද්ධඋඩුගත වෙමින්…ගිණුම එකතු කරන්න
@@ -73,10 +73,10 @@
\@%s වාර්තා කරන්නඅතිරේක අදහස්\?සඳහන් කළ
- වෙත ටූට් ඒ.ස.නි. බෙදාගන්න…
+ වෙත ටූට් ඒ.ස.නි. බෙදාගන්න…දීප්තකටුපිටපත සුරකින්නද\?
- සංවේදී අන්තර්ගතයකි
+ සංවේදී අන්තර්ගතයකිස්වයංක්රමලේඛයපොත්යොමුවගූගල් හි වත්මන් ඉමෝජි කට්ටලය
@@ -118,18 +118,18 @@
දැනුම්දීම්පරිශීලක අනවහිර කෙරිණිදත්ත එක්කරන්න
- වෙත ටූට් බෙදාගන්න…
- යැවීම අවලංගු කෙරිණි
+ වෙත ටූට් බෙදාගන්න…
+ යැවීම අවලංගු කෙරිණිඅනවහිරටූට්!ප්රියතමයන්%1$s බාගත වෙමින්
- තත්ව ගෙන ඒමට අසමත් විය
- මාධ්ය: %s
+ තත්ව ගෙන ඒමට අසමත් විය
+ මාධ්ය: %sසංවාදය නිහඬ කරන්න
- ටූට්ස් යැවෙමින්
+ ටූට්ස් යැවෙමින්සංවාද
- විශාල
+ විශාලප්රසිද්ධනව මාස්ටඩන් ගිණුමක් එක්කරන්නමාධ්ය උඩුගත වීම අහවර වෙමින්
@@ -142,7 +142,7 @@
ප්රියතමයන්පිළිතුරු…කාලරේඛා දැනුම්දීම් සීමාකරන්න
- ටූට් යැවීමේ දෝෂයකි
+ ටූට් යැවීමේ දෝෂයකිපෙරහන එකතු කරන්නසැමවිටම මාධ්ය සංවේදී ලෙස සලකුණු කරන්නයෙදුම යළි ඇරඹීම ඇවැසිය
@@ -152,7 +152,7 @@
මෙම වෙනස්කම් යෙදීමට ඔබ ටුස්කි නැවත ඇරඹිය යුතුයසංස්කරණයඉදිරියට
- කාලරේඛාව පෙරීම
+ කාලරේඛාව පෙරීම%1$s, %2$s සහ තවත් %3$dකාලරේඛා%s නිහඬ කරන්න
@@ -161,10 +161,10 @@
අවහිරමාධ්ය බාගන්නසැඟවුනු වසම්
- කුඩා
+ කුඩාඅන්තර්ගත අවවාද සමඟ ඇති ටූට්ස් සැමවිටම විහිදන්නපෙරසේ
- විහිදන්න
+ විහිදන්නනිහඬ කරන්නටුස්කි %sවියමන අඩවිය:
@@ -177,7 +177,7 @@
මාධ්ය එකතු කරන්නද. %d කින්%1$s, %2$s, %3$s සහ වෙනත් %4$d
- ටූට් විවෘත කරන්න
+ ටූට් විවෘත කරන්නසැඟවුනු වසම්පැය %dසැකසුම් සමමුහූර්ත වීමට අසමත් විය
@@ -202,7 +202,7 @@
භාෂාවසුරැකිණි!ටුස්කි\'හි පැතිකඩ
- ටූට්හි අන්තර්ගතය බෙදාගන්න
+ ටූට්හි අන්තර්ගතය බෙදාගන්නඅන්තර්ගතයනව ටූට්ස්#%d මාධ්ය විවෘත කරන්න
@@ -213,9 +213,9 @@
වෙත මාධ්ය බෙදාගන්න…ප්රසිද්ධ කාලරේඛා
- කුඩාම
+ කුඩාමමත විමසුම්
- දැකීමට ඔබන්න
+ දැකීමට ඔබන්නවසා ඇතදවස් %d ක් ඉතිරිය
@@ -248,23 +248,23 @@
මෙම ගිණුම පිළිබඳව ඔබගේ පෞද්ගලික සටහනවසන්නදැනුම්දීම්
- \@%s
- යැවිණි!
+ \@%s
+ යැවිණි!මාස්ටඩන් සමඟ පිවිසෙන්නජන්දයමුළු වචනය
- මෙම ටූට් යැවීමට අසමත් විය!
- දෘශ්යකය
+ මෙම ටූට් යැවීමට අසමත් විය!
+ දෘශ්යකයපසුවසංස්කරණයඅඳුරුකිසිවක් නැත.
- ටූට් යැවෙමින්…
+ ටූට් යැවෙමින්…පද්ධති පෙරනිමියසඳැහුමඉවත් කරන්නදැනුම්දීම් සඟවන්න
- තත්ව පාඨයේ ප්රමාණය
+ තත්ව පාඨයේ ප්රමාණයකාලරේඛාවෙහි සබැඳි පෙරදසුන් පෙන්වන්නසබැඳිඅතිරික්සුව
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index 5b026442..15d05945 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -12,18 +12,18 @@
Vyskytla sa chyba.OznámeniaPriame správy
- S odpoveďmi
- Pripnuté
+ S odpoveďmi
+ PripnutéSledujúciZáložkyLicencie
- \@%s
- Citlivý obsah
- Kliknite pre zobrazenie
- Zobraziť viac
- Zobraziť menej
- Rozbaliť
- Zabaliť
+ \@%s
+ Citlivý obsah
+ Kliknite pre zobrazenie
+ Zobraziť viac
+ Zobraziť menej
+ Rozbaliť
+ ZabaliťNahlásiť používateľa @%sRýchla odpoveďOdpovedať
@@ -63,8 +63,8 @@
Otvoriť ako %sOdoslané!Používateľ bol odblokovaný
- Odoslané!
- Odpoveď bola úspešne odoslaná.
+ Odoslané!
+ Odpoveď bola úspešne odoslaná.Ktorý server\?Zobrazované menoO vás
@@ -85,24 +85,24 @@
TOOTTOOT!Viditeľnosť tootu
- Naplánovať toot
- Vymazať tento toot\?
- Vymazať a prepísať tento toot\?
- Zdieľať obsah tootu
- Zdieľať odkaz tootu
- Odosielanie tootu…
- Chyba pri odosielaní tootu
- Kópia vášho tootu bola uložená do konceptov
- Otvoriť toot
+ Naplánovať toot
+ Vymazať tento toot\?
+ Vymazať a prepísať tento toot\?
+ Zdieľať obsah tootu
+ Zdieľať odkaz tootu
+ Odosielanie tootu…
+ Chyba pri odosielaní tootu
+ Kópia vášho tootu bola uložená do konceptov
+ Otvoriť tootNapísať toot
- Plánované tooty
- Plánované tooty
+ Plánované tooty
+ Plánované tootyAvatarOdstrániťUzamknúť účetUložiť koncept\?
- Odosielanie tootov
- Odosielanie bolo zrušené
+ Odosielanie tootov
+ Odosielanie bolo zrušenéVyhľadávanie…NeskôrReštartovať
@@ -114,7 +114,7 @@
Obsah%1$s%1$s a %2$s
- Žiadny popis
+ Žiadny popisVerejnýPodporiťPrestať podporovať
@@ -131,5 +131,5 @@
ObľúbenéOdstrániťObľúbené
- Panely
+ Panely
\ No newline at end of file
diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml
index c5b531b7..4919b3ec 100644
--- a/app/src/main/res/values-sl/strings.xml
+++ b/app/src/main/res/values-sl/strings.xml
@@ -24,9 +24,9 @@
Neposredna SporočilaZavihkiTut
- Objave
- Z odgovori
- Pripeto
+ Objave
+ Z odgovori
+ PripetoSlediSledilciPriljubljene
@@ -36,18 +36,18 @@
Uredi svoj profilOsnutkiLicence
- \@%s
- Občutljiva vsebina
- Medij je skrit
- Kliknite za ogled
- Pokaži več
- Pokaži manj
- Razširi
- Strni
+ \@%s
+ Občutljiva vsebina
+ Medij je skrit
+ Kliknite za ogled
+ Pokaži več
+ Pokaži manj
+ Razširi
+ StrniTukaj ni ničesar.Tukaj ni ničesar. Potegnite navzdol za osvežitev!%s je spodbudil tvoj tut
- % je vzljubil vaš tut
+ %s je vzljubil vaš tut%s vam slediPrijavi @%sDodatni komentarji\?
@@ -115,12 +115,12 @@
Deli kot …Prenos medijaPrejemanje medija
- Deli URL tuta z…
- Deli tut z…
+ Deli URL tuta z…
+ Deli tut z…Deli medij z…Pošlji!
- Pošlji!
- Odgovor je bil uspešno poslan.
+ Pošlji!
+ Odgovor je bil uspešno poslan.Kaj se dogaja\?Opozorilo o vsebiniPrikazano ime
@@ -153,7 +153,7 @@
PrejmiŽelite preklicati to zahtevo\?Prenehajte slediti temu računu\?
- Želite izbrisati ta tut\?
+ Želite izbrisati ta tut\?Javno: Objavi v javnih časovnicahNi prikazano: Ne prikaže v javnih časovnicahSamo sledilci: Objavi samo sledilcem
@@ -177,8 +177,8 @@
Uporabi Chromove zavihke po meriMed pomikanjem skrij gumb za sestavljanjeJezik
- Filtriranje časovnice
- Zavihki
+ Filtriranje časovnice
+ ZavihkiPokaži spodbudePokaži odgovorePrenesi predoglede medijev
@@ -191,7 +191,7 @@
Vedno označite medije kot občutljiveObjavljanje (sinhronizirano s strežnikom)Nastavitev ni bilo mogoče sinhronizirati
- Velikost besedila statusa
+ Velikost besedila statusaNove omembeObvestila o novih omembahNovi sledilci
@@ -216,10 +216,10 @@
Poročila o napakah in želje za nove funkcije:
\nhttps://git.chinwag.org/chinwag/chinwag-android/issuesProfil Tusky
- Deli vsebino tuta
- Deli povezavo do tuta
- Slike
- Video
+ Deli vsebino tuta
+ Deli povezavo do tuta
+ Slike
+ VideoProšnja za sledenjev %dyv %dd
@@ -269,11 +269,11 @@
Zakleni računZahtevana je ročna potrditev sledilcevShrani osnutek\?
- Pošiljanje tuta…
- napaka pri pošiljanju tuta
- Pošiljanje tutov
- Pošiljanje je preklicano
- Kopija tuta je bila shranjena v osnutke
+ Pošiljanje tuta…
+ napaka pri pošiljanju tuta
+ Pošiljanje tutov
+ Pošiljanje je preklicano
+ Kopija tuta je bila shranjena v osnutkeSestaviVaše vozlišče %s nima emotikonov po meriKopirano v odložišče
@@ -281,13 +281,13 @@
Privzete nastavitve sistemaNajprej boste morali prenesti te emotikoneIzvajanje iskanja…
- Razširi/Strni vse statuse
- Odpri tut
+ Razširi/Strni vse statuse
+ Odpri tutPotreben je ponovni zagon aplikacijeČe želite uveljaviti te spremembe, morate znova zagnati TuskyKasnejeZnova zaženi
- "Privzeti komplet emotikonov vaše naprave "
+ Privzeti komplet emotikonov vaše napraveBlob emotikoni so znani od Android 4.4-7.1Mastodonov privzeti komplet emotikonovPrenos ni uspel
@@ -321,11 +321,11 @@
doseženih maksimalnih %1$d zavihkov
- Mediji: %s
- Opozorila o vsebini: %s
- Brez opisa
- Ponovno objavljen
- Priljubljene
+ Mediji: %s
+ Opozorila o vsebini: %s
+ Brez opisa
+ Ponovno objavljen
+ PriljubljeneJavnoNi prikazanoSledilci
@@ -340,7 +340,7 @@
Prikaži kazalnik za roboteAli ste prepričani, da želite trajno izbrisati vsa obvestila\?Izbriši in preoblikuj
- Izbriši in preoblikuj tut\?
+ Izbriši in preoblikuj tut\? %1$s • %2$s%s glas
@@ -360,11 +360,11 @@
JavnoNi prikazanoSamo za sledilce
- Najmanjša
- Majhna
- Srednja
- Velika
- Največja
+ Najmanjša
+ Majhna
+ Srednja
+ Velika
+ NajvečjaAnketeObvestilo o anketah, ki so se končaleDejanje za sliko %s
@@ -404,7 +404,7 @@
Dodatni komentarjiPosreduj %sPrijava je bila neuspešna
- Statusov ni bilo mogoče pridobiti
+ Statusov ni bilo mogoče pridobitiPoročilo bo poslano moderatorju strežnika. Spodaj lahko navedete, zakaj prijavljate ta račun:Račun je iz drugega strežnika. Pošljem anonimno kopijo poročila tudi na drugi strežnik\?Skrite domene
@@ -432,14 +432,14 @@
Več izbirIzbira %dUredi
- Napovedani tuti
+ Napovedani tutiUredi
- Napovedani tuti
+ Napovedani tutiPonastavi
- Napovej tut
+ Napovej tutNapaka pri iskanju objave %sPoganja ga Tusky
- %s spodbudil
+ %s spodbudilKljučnikiZahteve za Sledenje
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 4e0a6e14..1bbc64a8 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -26,9 +26,9 @@
Direkta meddelandenFlikarToot
- Inlägg
- Med svar
- Fastnålade
+ Inlägg
+ Med svar
+ FastnåladeFöljerFöljareFavoriter
@@ -38,15 +38,15 @@
Ändra din profilUtkastLicenser
- \@%s
- %s knuffade
- Känsligt innehåll
- Dold media
- Tryck för att visa
- Visa mer
- Visa mindre
- Expandera
- Dölj
+ \@%s
+ %s knuffade
+ Känsligt innehåll
+ Dold media
+ Tryck för att visa
+ Visa mer
+ Visa mindre
+ Expandera
+ DöljIngenting här.Inget här. Dra ner för att uppdatera!%s knuffade din toot
@@ -120,14 +120,14 @@
Kopiera länkÖppna med %sDela som …
- Dela toot-URL till…
- Dela toot till…
+ Dela toot-URL till…
+ Dela toot till…Dela media till…Skickat!Användare avblockeradAnvändaren är inte tystad längre
- Skickat!
- Svar skickades framgångsrikt.
+ Skickat!
+ Svar skickades framgångsrikt.Vilken instans?Vad händer?Innehållsvarning
@@ -153,7 +153,7 @@
Ladda nedÅterkalla följningsförfrågan?Sluta följ detta konto\?
- Radera denna toot?
+ Radera denna toot?Offentlig: Skicka till offentliga tidslinjerOlistad: Visa inte i offentliga tidslinjerEnbart-följare: Ses enbart av följare
@@ -182,8 +182,8 @@
Använd Chrome-anpassade flikarDölj skriv-knappen vid skrollningSpråk
- Filtrering av tidslinje
- Flikar
+ Filtrering av tidslinje
+ FlikarVisa knuffarVisa svarVisa en förhandsgranskning
@@ -199,12 +199,12 @@
OffentligOlistadEndast följare
- Textstorlek på status
- Minsta
- Liten
- Mellan
- Stor
- Största
+ Textstorlek på status
+ Minsta
+ Liten
+ Mellan
+ Stor
+ StörstaNya omnämnandenAviseringar om nya omnämnandenNya följare
@@ -237,10 +237,10 @@
https://git.chinwag.org/chinwag/chinwag-android/issues
Tuskys Profil
- Dela innehåll av toot
- Dela länk till toot
- Bilder
- Video
+ Dela innehåll av toot
+ Dela länk till toot
+ Bilder
+ VideoFöljarförfråganom %dy
@@ -290,11 +290,11 @@
Lås kontoKräver att du manuellt godkänner följareSpara utkast?
- Skickar toot…
- Kunde inte skicka toot
- Skickar toot
- Sändning avbruten
- En kopia av tooten har sparats i dina utkast
+ Skickar toot…
+ Kunde inte skicka toot
+ Skickar toot
+ Sändning avbruten
+ En kopia av tooten har sparats i dina utkastSkrivDin instans %s har inga anpassade emojisKopierat till urklipp
@@ -302,8 +302,8 @@
SystemstandardDu behöver ladda ned dessa emojis förstUtför sökning…
- Expandera/Dölj alla statusar
- Öppna toot
+ Expandera/Dölj alla statusar
+ Öppna tootOmstart av appen krävsDu måste starta om Tusky för att tillämpa ändringarnaSenare
@@ -344,14 +344,14 @@
max antal flikar %1$d uppnådd
- Media: %s
+ Media: %s
- Innehållsvarning: %s
- Ingen beskrivning
+ Innehållsvarning: %s
+ Ingen beskrivning
- Knuffad
+ Knuffad
- Favoriserad
+ Favoriserad
Publik
@@ -373,7 +373,7 @@
Visa robotindikatorÄr du säker på att du vill rensa dina aviseringar permanent\?Radera och skriv på nytt
- Radera och skriv ny toot\?
+ Radera och skriv ny toot\? %1$s • %2$s%s röst
@@ -420,7 +420,7 @@
Ytterligare kommentarerVidarebefordra till %sMisslyckades att anmäla
- Misslyckades att hämta status
+ Misslyckades att hämta statusAnmälan kommer att skickas till din servermoderator. Du kan beskriva varför du anmäler kontot nedan:Kontot är från en annan server. Skicka en anonym kopia av anmälan dit också\?Visa notifikationsfilter
@@ -442,20 +442,20 @@
FlervalVal %dRedigera
- Schemalagda toots
+ Schemalagda tootsÄndra
- Schemalagda toots
- Schemalägg toot
+ Schemalagda toots
+ Schemalägg tootÅterställFel vid uppslagning av status %sBokmärkenBokmärkBokmärkenDrivs av Tusky
- Bokmärkt
+ BokmärktVälj listaLista
- Du har inga schemalagda statusar.
+ Du har inga schemalagda statusar.Ljudfiler måste vara mindre än 40MB.Du har inga utkast.Mastodon har ett minimalt schemaläggningsintervall på 5 minuter.
diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml
index 203f33e9..6625a19e 100644
--- a/app/src/main/res/values-ta/strings.xml
+++ b/app/src/main/res/values-ta/strings.xml
@@ -20,8 +20,8 @@
அறிவிப்புகள்அருகாமயில்ஒருங்கிணைந்த
- பதிவுகள்
- பதிலளிக்கபட்டவை
+ பதிவுகள்
+ பதிலளிக்கபட்டவைபின்பற்றுகிறீர்பின்பற்றுபவர்கள்விரும்பியவை
@@ -30,12 +30,12 @@
பின்பற்ற கோரிக்கைசுயவிவரத்தை திருத்தவரைவுகள்
- %s மேலேற்றப்பட்டது
- உணர்ச்சிகரமான உள்ளடக்கம்
- ஊடகம் மறைக்கப்பட்டது
- பார்வையிட சொடுக்கவும்
- அதிகமாக்கு
- கம்மியாக்கு
+ %s மேலேற்றப்பட்டது
+ உணர்ச்சிகரமான உள்ளடக்கம்
+ ஊடகம் மறைக்கப்பட்டது
+ பார்வையிட சொடுக்கவும்
+ அதிகமாக்கு
+ கம்மியாக்குஇங்கு எதுவுமில்லை. புதுப்பிக்க கீழே இழுக்கவும்!%s தங்களின் toot உயர்த்தப்பட்டுள்ளது%s தங்களின் toot பிடித்தவையானது
@@ -90,14 +90,14 @@
Emoji விசைபலகைபதிவிறக்கப்படுகிறது %1$sஇணைப்பை நகலெடுக்கவும்
- Toot URL-யை பகிர…
- Toot உள்ளடக்கத்தை பகிர…
+ Toot URL-யை பகிர…
+ Toot உள்ளடக்கத்தை பகிர…Mediaவை பகிர…அனுப்பு!பயனர் முடக்கம் நீக்கப்பட்டதுபயனர் ஒலிக்க செய்யபட்டது
- அனுப்பு!
- வெற்றிகரமாக பதிலளிக்கபட்டது.
+ அனுப்பு!
+ வெற்றிகரமாக பதிலளிக்கபட்டது.எந்த instance(களம்)?என்ன நடக்கிறது?உள்ளடக்க எச்சரிக்கை
@@ -143,8 +143,8 @@
உலாவிChrome தனிப்பயன் கீற்றை பயன்படுத்துஉருளலின் போது எழுது பொத்தானை மறை
- காலவரிசை வடிகட்டல்
- கீற்றுகள்
+ காலவரிசை வடிகட்டல்
+ கீற்றுகள்மேலேற்றத்தை காண்பிபதில்களைக் காண்பிஊடக மாதிரிக்காட்சிகளைக் காண்பி
@@ -158,7 +158,7 @@
அனைவருக்கும்பட்டியலிடப்படாதவர்களுக்குபின்பற்றுபவர்களுக்கு மட்டும்
- நிலை உரை அளவு
+ நிலை உரை அளவுபுதிய குறிப்புகள்புதிய குறிப்புகள் பற்றிய அறிவிப்புகள்புதிய பின்பற்றுபவர்கள்
@@ -191,10 +191,10 @@
https://git.chinwag.org/chinwag/chinwag-android/issues
Tusky-ன் கணக்கு
- Toot உள்ளடக்கத்தைப் பகிர்
- Toot இணைப்பைப் பகிர்
- படங்கள்
- காணொளி
+ Toot உள்ளடக்கத்தைப் பகிர்
+ Toot இணைப்பைப் பகிர்
+ படங்கள்
+ காணொளிகோரிக்கையைப் பின்பற்றவும்%dஆ-முன்
@@ -224,11 +224,11 @@
கணக்கை முடக்குநீங்களாக பின்பற்றுபவர்களை அங்கீகரிக்கவரைவை சேமிக்கவா?
- Toot அனுப்பபடுகிறது…
- Toot அனுப்புவதில் பிழை
- Toots அனுப்பபடுகிறது
- Toot அனுப்பபல் நீக்கபட்டது
- நகலெடுக்கபட்ட toot வரைவில் சேமிக்கபட்டது
+ Toot அனுப்பபடுகிறது…
+ Toot அனுப்புவதில் பிழை
+ Toots அனுப்பபடுகிறது
+ Toot அனுப்பபல் நீக்கபட்டது
+ நகலெடுக்கபட்ட toot வரைவில் சேமிக்கபட்டதுஎழுதுதங்கள் %s instance(களம்)-ல் எந்தவொரு custom emojis-ம் இல்லை பிடிப்புப்பலகையில் நகலெடுக்க
@@ -236,8 +236,8 @@
அமைப்பின் இயல்புநிலைதாங்கள் முதலில் இந்த Emoji sets-னை பதிவிறக்கவேண்டும்சேயல்பாட்டு தேடல்…
- அதிகமாக்கு/கம்மியாக்கு பற்றிய நிலைகள்
- Tootயை திற
+ அதிகமாக்கு/கம்மியாக்கு பற்றிய நிலைகள்
+ Tootயை திறசெயலி மறுதொடக்கம் தேவைபடுகிறதுஇந்த மாறுதல்கள் செயற்படுத்த செயலியை மறுதொடக்கம் செய்ய வேண்டும்பிறகு
@@ -266,7 +266,7 @@
டூத் அனுப்புவதில் பிழை ஏற்பட்டுள்ளதுநேரடி தகவல்பட்டைகள்
- பொருத்தப்பட்டது
+ பொருத்தப்பட்டது1 நாள்3 நாட்கள்7 நாட்கள்
diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml
index c0b270bb..fa27fbe0 100644
--- a/app/src/main/res/values-th/strings.xml
+++ b/app/src/main/res/values-th/strings.xml
@@ -15,7 +15,7 @@
บัญชีบัญชีนี้มาจากเซิร์ฟเวอร์อื่น ส่งสำเนารายงานที่ไม่ระบุชื่อไปที่นั่นด้วยหรือไม่\?รายงานจะถูกส่งไปยังผู้ดูแลเซิร์ฟเวอร์ของคุณ สามารถให้คำอธิบายว่าทำไมจึงรายงานบัญชีนี้ด้านล่าง:
- ดึงข้อมูลสถานะล้มเหลว
+ ดึงข้อมูลสถานะล้มเหลวรายงานล้มเหลวส่งต่อไปยัง %sความคิดเห็นเพิ่มเติม
@@ -65,12 +65,12 @@
ผู้ติดตามไม่อยู่ในรายการสาธารณะ
- คั่นหน้า
- ชื่นชอบ
- ได้ถูกเขียนใหม่
- ไม่มีคำอธิบาย
- เตือนเนื้อหา : %s
- สื่อ: %s
+ คั่นหน้า
+ ชื่นชอบ
+ ได้ถูกเขียนใหม่
+ ไม่มีคำอธิบาย
+ เตือนเนื้อหา : %s
+ สื่อ: %sถึงจำนวนแท็บสูงสุดคือ %1$d แล้ว
@@ -110,8 +110,8 @@
ภายหลังจำเป็นต้องเริ่ม Tusky ใหม่ เพื่อใช้การเปลี่ยนแปลงเหล่านี้จำเป็นต้องเริ่มแอปใหม่
- เปิด Toot
- ขยาย/ย่อทั้งหมด
+ เปิด Toot
+ ขยาย/ย่อทั้งหมดกำลังค้นหา…ต้องดาวน์โหลดชุดเอโมจิเหล่านี้ก่อนค่าปริยายของระบบ
@@ -119,11 +119,11 @@
คัดลอกไปยังคลิบบอร์ดแล้วInstance %s ไม่มีเอโมจิแบบกำหนดเองเขียน
- สำเนา Toot บันทึกเป็นฉบับร่างแล้ว
- การส่งถูกยกเลิก
- ส่ง Toot
- การส่ง Toot เกิดข้อผิดผลาด
- กำลังส่ง Toot…
+ สำเนา Toot บันทึกเป็นฉบับร่างแล้ว
+ การส่งถูกยกเลิก
+ ส่ง Toot
+ การส่ง Toot เกิดข้อผิดผลาด
+ กำลังส่ง Toot…บันทึกฉบับร่าง\?ต้องอนุมัติผู้ติดตามด้วยตัวเองล็อกบัญชี
@@ -174,10 +174,10 @@
ใน %d วันใน %d ปีกำลังขอติดตาม
- วิดีทัศน์
- ภาพ
- แบ่งปันลิงก์ Toot
- แบ่งปันเนื้อหา Toot
+ วิดีทัศน์
+ ภาพ
+ แบ่งปันลิงก์ Toot
+ แบ่งปันเนื้อหา Tootบัญชีทางการของ Tuskyรายงานช่องโหว่ และ ขอฟีเจอร์ (ภาษาอังกฤษ):
\nhttps://git.chinwag.org/chinwag/chinwag-android/issues
@@ -206,12 +206,12 @@
ผู้ติดตามใหม่การกล่าวถึงใหม่การแจ้งเตือนเกี่ยวกับการกล่าวถึงใหม่
- ใหญ่มาก
- ใหญ่
- กลาง
- เล็ก
- เล็กมาก
- ขนาดอักษร Toot
+ ใหญ่มาก
+ ใหญ่
+ กลาง
+ เล็ก
+ เล็กมาก
+ ขนาดอักษร Tootเฉพาะผู้ติดตามไม่อยู่ในรายการสาธารณะ
@@ -227,8 +227,8 @@
ดาวน์โหลดตัวอย่างสื่อแสดงการตอบกลับแสดงบูสต์
- แท็บ
- คัดกรองไทม์ไลน์
+ แท็บ
+ คัดกรองไทม์ไลน์อวตาร GIF เคลื่อนไหวได้แสดงสัญลักษณ์ว่าเป็นบอตภาษา
@@ -265,8 +265,8 @@
บล็อก @%s\?ซ่อนทั้งโดเมนต้องการบล็อกทุกอย่างจาก %s \? คุณจะไม่เห็นเนื้อหาจากโดเมนนั้นในไทม์ไลน์สาธารณะหรือในการแจ้งเตือน ผู้ติดตามของคุณจากโดเมนนั้นจะถูกลบออก
- ลบ แล้ว ร่าง Toot นี้ใหม่\?
- ลบ Toot นี้\?
+ ลบ แล้ว ร่าง Toot นี้ใหม่\?
+ ลบ Toot นี้\?เลิกติดตามผู้ใช้นี้\?ยกเลิกคำขอติดตาม\?ดาวน์โหลด
@@ -290,15 +290,15 @@
คำเตือนเนื้อหาเกิดอะไรขึ้นเอย\?Instance ไหน\?
- ตอบกลับสำเร็จ
- ส่งแล้ว!
+ ตอบกลับสำเร็จ
+ ส่งแล้ว!เลิกซ่อน %s แล้วเลิกบล็อกผู้ใช้แล้วเลิกปิดเสียงผู้ใช้นี้แล้วส่งแล้ว!แบ่งปันสื่อไป…
- แบ่งปัน Toot ไป…
- แชร์ URL Toot ไป…
+ แบ่งปัน Toot ไป…
+ แชร์ URL Toot ไป…กำลังดาวน์โหลดสื่อดาวน์โหลดสื่อแบ่งปันโดย…
@@ -316,11 +316,11 @@
โต้ตอบลิงก์เพิ่มแท็บ
- Toot แบบตั้งเวลา
+ Toot แบบตั้งเวลาคีย์บอร์ดเอโมจิเตือนเนื้อหาการมองเห็น Toot
- Toot แบบตั้งเวลา
+ Toot แบบตั้งเวลาฉบับร่างปฏิเสธยอมรับ
@@ -380,17 +380,17 @@
%s ได้ดันโพสต์ของคุณไม่มีอะไรที่นี่ ลากลงเพื่อรีเฟรช!ไม่มีอะไรที่นี่
- ย่อ
- ขยาย
- แสดงน้อยลง
- แสดงเพิ่มเติม
- แตะเพื่อดู
- ซ่อนสื่ออยู่
- เนื้อหาอ่อนไหว
- %s ได้ดัน
- \@%s
+ ย่อ
+ ขยาย
+ แสดงน้อยลง
+ แสดงเพิ่มเติม
+ แตะเพื่อดู
+ ซ่อนสื่ออยู่
+ เนื้อหาอ่อนไหว
+ %s ได้ดัน
+ \@%sสัญญาอนุญาต
- โพสต์แบบกำหนดเวลา
+ โพสต์แบบกำหนดเวลาแก้ไขโปรไฟล์คำขอติดตามโดเมนที่ซ่อนไว้
@@ -399,9 +399,9 @@
ที่คั่นหน้าผู้ติดตามติดตาม
- ปักหมุด
- โพสต์และตอบกลับ
- โพสต์
+ ปักหมุด
+ โพสต์และตอบกลับ
+ โพสต์โพสต์แท็บข้อความโดยตรง
@@ -446,7 +446,7 @@
แสดงข้อความยืนยันก่อนที่จะบูสต์แสดงตัวอย่างลิงก์ในไทม์ไลน์Mastodon กำหนดเวลาขั้นต่ำ 5 นาที
- ไม่มีสถานะแบบตั้งเวลาใด ๆ
+ ไม่มีสถานะแบบตั้งเวลาใด ๆไม่มีฉบับร่างใด ๆการค้นหาโพสต์ %s เกิดข้อผิดผลาดแก้ไข
@@ -461,7 +461,7 @@
ซ่อนการแจ้งเตือนปิดเสียงการแจ้งเตือนจาก %sซ่อนหัวข้อของแถบเครื่องมือด้านบน
- ล้มเหลวในการส่งโพสต์นี้!
+ ล้มเหลวในการส่งโพสต์นี้!ข้อมูลบางอย่างที่อาจส่งผลต่อสุขภาพจิตของคุณจะถูกซ่อนไว้ซึ่งรวมถึง:
\n
\n- การแจ้งเตือน ชื่นชอบ/ดัน/ติดตาม
@@ -477,7 +477,7 @@
สุขภาวะบันทึกส่วนตัวของคุณเกี่ยวกับบัญชีนี้แจ้งเตือน เมื่อคนที่คุณติดตาม ได้เผยแพร่โพสต์ใหม่
- โพสต์ที่คุณได้ร่างตอบไว้ ถูกลบแลัว
+ โพสต์ที่คุณได้ร่างตอบไว้ ถูกลบแลัวลบฉบับร่างแล้วล้มเหลวในการโหลดข้อมูลตอบกลับคุณต้องการลบลิสต์ %s ใช่ไหม\?
@@ -488,8 +488,8 @@
ไม่มีประกาศไม่มีกำหนดระยะเวลา
- ไฟล์แนบ
- เสียง
+ ไฟล์แนบ
+ เสียงโพสต์ใหม่%s เพิ่งโพสต์ประกาศ
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index d2f9294d..25a5efcb 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -26,9 +26,9 @@
Direkt mesajlarSekmelerToot
- Gönderiler
- Yanıtlarıyla
- Sabitlenmiş
+ Gönderiler
+ Yanıtlarıyla
+ SabitlenmişTakip edilenlerTakipçilerFavoriler
@@ -38,15 +38,15 @@
Profili düzenleTaslaklarLisanslar
- \@%s
- %s yineledi
- Hasas medya
- Gizlenmiş medya
- Görüntülemek için dokunun
- Daha fazla göster
- Daha az göster
- Genişlet
- Daralt
+ \@%s
+ %s yineledi
+ Hasas medya
+ Gizlenmiş medya
+ Görüntülemek için dokunun
+ Daha fazla göster
+ Daha az göster
+ Genişlet
+ DaraltBurada hiçbir şey yok.Burada henüz hiç birşey yok. Yenilemek için aşağıya çekin!%s tootunuzu yineledi
@@ -108,14 +108,14 @@
Bağlantıyı kopyalaFarklı aç %sOlarak paylaş …
- Durumun adresini paylaş…
- Tootu paylaş…
+ Durumun adresini paylaş…
+ Tootu paylaş…Medyayı paylaş…Gönderildi!Kullanıcının engeli kaldırıldıKullanıcının sesi açıldı
- İletildi!
- Yanıt başarıyla gönderildi.
+ İletildi!
+ Yanıt başarıyla gönderildi.Hangi sunucu\?Neler oluyor?İçerik uyarısı
@@ -140,7 +140,7 @@
İndirTakip isteğini iptal et\?Takibi bırakmak istiyor musun\?
- Bu durumu silmek istiyor musunuz\?
+ Bu durumu silmek istiyor musunuz\?Kamu: Herkese açık ve sosyal çizelgelerinde çıkarListelenmemiş: Genel zaman çizelgelerinde göstermeÖzel: Sadece takipçiler ve bahsedilenlere açık
@@ -166,8 +166,8 @@
TarayıcıChrome Özel Şekmelerini KullanKaydırırken takip düğmesi gizlensin
- Zaman çizelgesi filtreleme
- Sekmeler
+ Zaman çizelgesi filtreleme
+ SekmelerYükseltilenleri gösterYanıtları gösterMedya önizlemelerini indir
@@ -183,12 +183,12 @@
Herkese açıkListe dışıSadece takipçiler
- Durum metin boyutu
- Çok küçük
- Küçük
- Orta
- Büyük
- En büyük
+ Durum metin boyutu
+ Çok küçük
+ Küçük
+ Orta
+ Büyük
+ En büyükYeni BahsetmelerYeni bahsetmeler hakkında bildirimYeni Takipçiler
@@ -219,10 +219,10 @@
& özellik istekleri hata raporları:
\n https://git.chinwag.org/chinwag/chinwag-android/issuesTusky\'nin Profili
- İletinin içeriğini paylaş
- İletinin adresini paylaş
- Görseller
- Video
+ İletinin içeriğini paylaş
+ İletinin adresini paylaş
+ Görseller
+ VideoTakip edebilme istendi%dy
@@ -254,11 +254,11 @@
Hesabı KilitleTakipçileri elle onaylamanız gerekirTaslaklara kaydedilsin mi\?
- Toot gönderiliyor…
- Toot gönderilirken hata oluştu
- Toot Gönderiliyor
- Gönderme iptal edildi
- Tootun bir kopyası taslaklara kaydedildi
+ Toot gönderiliyor…
+ Toot gönderilirken hata oluştu
+ Toot Gönderiliyor
+ Gönderme iptal edildi
+ Tootun bir kopyası taslaklara kaydedildiOluştur%s örneğinizin herhangi bir özel ifadesi yokPanoya kopyalandı
@@ -266,8 +266,8 @@
Sistem varsayılanıÖnce bu ifade paketini indirmeniz gerekecekAraştırılıyor…
- Tüm durumları Genişlet/Küçült
- Durumu aç
+ Tüm durumları Genişlet/Küçült
+ Durumu açUygulamayı yeniden başlatmanız lazımBu değişiklikleri uygulamak için Tusky\'yi yeniden başlatmanız gerekecekSonra
@@ -346,11 +346,11 @@
Listeye hesap ekleHesabı listeden kaldırGoogle\'ın mevcut ifade paketi
- Medya: %s
- İçerik uyarısı: %s
- Açıklama yok
- Yeniden blogladı
- Favorilendi
+ Medya: %s
+ İçerik uyarısı: %s
+ Açıklama yok
+ Yeniden blogladı
+ FavorilendiHerkese açıkListe dışıTakipçiler
@@ -396,7 +396,7 @@
\@%s başarıyla bildirildiEk Yorumlar%s adresine ilet
- Durumlar getirilemedi
+ Durumlar getirilemediBildirim sunucu yöneticinize gönderilecektir. Bu hesabı neden bildirdiğinizle ilgili açıklama yapabilirsiniz:Hesap başka bir sunucudan. Raporun anonim bir kopyasını da oraya gönderilsin mi\?Bildirim filtresini göster
@@ -406,19 +406,19 @@
Bahsedenler#%d medyayı açYer imleri
- Zamanlanmış tootlar
+ Zamanlanmış tootlarYer imiDüzenleSil ve düzenleYer imleriAnket ekle
- Zamanlanmış tootlar
- Tootu zamanla
+ Zamanlanmış tootlar
+ Tootu zamanlaSıfırla
- Bu durumu silip yeniden düzenlemek istiyor musunuz\?
+ Bu durumu silip yeniden düzenlemek istiyor musunuz\?Botlar için işaret gösterTusky tarafından desteklenmektedir
- Yerimine eklendi
+ Yerimine eklendiListe seçListeHesaplar
@@ -444,7 +444,7 @@
Seçenek %d%s gönderisi aranırken hata oluştuHiç taslağınız yok.
- Zamanlanmış durumunuz yok.
+ Zamanlanmış durumunuz yok.Kendi kitlenize yükseltinHashtags\'lerBoost etmeden önce onay iletişim kutusunu göster
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index fc73d1b5..0031334b 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -1,22 +1,22 @@
Сталася помилка.
- \@%s
+ \@%sЛіцензіїРедагувати профільЗапити на підпискуЗакладкиПідписникиПідписки
- Прикріплені
- З відповідями
+ Прикріплені
+ З відповідямиЗагальніЛокальніПриватні повідомленняСповіщенняГоловна
- Помилка надіслання допису.
- Зображення та відео не можуть бути прикріплені до статусу одночасно.
+ Помилка надсилання допису.
+ Зображення та відео не можуть бути прикріплені до допису одночасно.Потрібен дозвіл на зберігання медіа.Потрібен дозвіл на читання медіа.Не вдається відкрити цей файл.
@@ -24,7 +24,7 @@
Аудіофайли повинні бути менше 40 МБ.Відео повинне бути менше 40 МБ.Файл повинен бути менше 8 МБ.
- Статус надто довгий!
+ Допис задовгий!Не вдалося знайти браузер, який можна використати.Не може бути порожнім.Сталася помилка мережі! Перевірте інтернет-з\'єднання та спробуйте знову!
@@ -45,7 +45,7 @@
Пошук…Про себеЩо відбувається\?
- Надіслати!
+ Надіслати!Надіслано!Поділитися як …Відкрити як %s
@@ -57,7 +57,7 @@
ЗгадкиПосиланняПопередження про вміст
- Заплановані дмухи
+ Заплановані дмухиЧернеткиВідхилитиПрийняти
@@ -101,16 +101,16 @@
%s підписується на васТут нічого немає. Потягніть вниз, щоб оновити!Тут нічого немає.
- Згорнути
- Розгорнути
- Натисніть для перегляду
- Медіа приховано
+ Згорнути
+ Розгорнути
+ Натисніть для перегляду
+ Медіа прихованоПопередження про вмістЗмінитиНаписатиСкасувати приглушення розмовиЗаглушити розмову
- Заплановані дмухи
+ Заплановані дмухиПідписникиНаписатиМедіа
@@ -130,16 +130,16 @@
РозгорнутиПрибрати просуванняПросунути
- %s вподобує ваш дмух
- %s просуває ваш дмух
- Згорнути
- Розгорнути
- Делікатний вміст
- %s просуває
+ %s вподобує ваш допис
+ %s просуває ваш допис
+ Згорнути
+ Розгорнути
+ Делікатний вміст
+ %s просуваєПриховані домениЗаглушені користувачі
- Дописи
- Дмухнути
+ Дописи
+ ТредВкладкиНе вдалося відвантажити.Не вдалося отримати токен входу.
@@ -149,17 +149,17 @@
Введено недійсний доменПоказати просуванняПоказати просування
- Вкладки
+ ВкладкиНе глушити %s
- Видимість дмухів
+ Видимість дописівДеякі відомості, які можуть вплинути на ваше психічний стан, буде приховано. Це включає:
\n
\n - Вподобання/Просування/Сповіщення про підписки
-\n - Вподобання/Кількість просувань дмухів
+\n - Вподобання/Кількість просувань дописів
\n - Статистика підписників/Публікацій у профілях
\n
\n На push-сповіщення це не вплине, але ви можете переглянути налаштування сповіщень вручну.
- Вподобано
+ ВподобаноВподобали%1$s вподобання
@@ -167,7 +167,7 @@
%1$s вподобань%1$s вподобань
- Сповіщати про вподобання кимось дмухів
+ Сповіщати про вподобання кимось дописівмої дописи вподобаноСховати медіаЗаглушити сповіщення від %s
@@ -256,9 +256,9 @@
%s голосів %1$s • %2$s
- Без опису
- Попередження про вміст: %s
- Медіа: %s
+ Без опису
+ Попередження про вміст: %s
+ Медіа: %sПросунулиВмістCC-BY-SA 4.0
@@ -268,13 +268,13 @@
ПізнішеВам потрібно буде перезапустити Tusky, щоб застосувати ці зміниНеобхідно перезапустити застосунок
- Відкрити дмух
- Розгорнути/згорнути всі статуси
- Копію дмуху збережено до ваших чернеток
- Надсилання скасовано
- Надсилання дмухів
- Помилка надсилання дмуху
- Надсилання дмуху…
+ Відкрити дмух
+ Розгорнути/згорнути всі статуси
+ Копію дмуху збережено до ваших чернеток
+ Надсилання скасовано
+ Надсилання дмухів
+ Помилка надсилання дмуху
+ Надсилання дмуху…Оприлюднення з облікового запису %1$sВилучити обліковий запис зі спискуДодати обліковий запис до списку
@@ -302,7 +302,7 @@
Загальнодоступні стрічкизавантажити щеВідповідь для @%s
- Завжди розгортати дмухи, з попередженнями про вміст
+ Завжди розгортати допис, з попередженнями про вмістПідписникиЗавжди показувати делікатний вміст%dс
@@ -316,12 +316,12 @@
за %dднза %dр.Запит на підписку надіслано
- Вкладення
- Звуки
- Відео
- Зображення
- Поділитися посиланням на дмух
- Поділитися вмістом дмуху
+ Вкладення
+ Звуки
+ Відео
+ Зображення
+ Поділитися посиланням на допис
+ Поділитися вмістом дописуПрофіль TuskyЗвіти про вади та запити функцій:
\n https://github.com/tuskyapp/Tusky/issues
@@ -344,23 +344,23 @@
%1$s, %2$s, та %3$s%1$s, %2$s, %3$s та %4$d інших%s згадує вас
- Сповіщати про нові дмухи осіб, на яких ви підписалися
- Нові дмухи
+ Сповіщати про нові дописи осіб, на яких ви підписалися
+ Нові дописиСповіщати про завершення опитуваньОпитування
- Сповіщати про просування кимось
+ Сповіщати про просування кимось дописуПросуванняСповіщати про нові запити на підпискиСповіщати про нових підписниківНові підписникиСповіщати про нові згадкиНові згадки
- Найбільший
- Великий
- Середній
- Маленький
- Найменший
- Розмір шрифту статусу
+ Найбільший
+ Великий
+ Середній
+ Маленький
+ Найменший
+ Розмір шрифту статусуЛише для підписниківПрихованоПриховано
@@ -380,7 +380,7 @@
ПроксіЗавантаження попереднього перегляду медіаПоказати відповіді
- Фільтрування стрічки
+ Фільтрування стрічкиАнімувати власні емодзіПоказувати барвисті градієнти замість прихованих медіаАнімовані GIF-аватарки
@@ -398,7 +398,7 @@
СтрічкиТема застосункуВигляд
- хтось, на кого мене підписано, публікує новий дмух
+ хтось, на кого мене підписано, публікує новий дописопитування завершеномої дописи просунутоотримано запит на підписку
@@ -418,8 +418,8 @@
Заблокувати @%s\?Сховати весь доменВи впевнені, що хочете заблокувати все з %s\? Ви не побачите вміст із цього домену в жодних загальнодоступних стрічках або у своїх сповіщеннях. Ваших підписників з цього домену буде видалено.
- Видалити й переписати цей дмух\?
- Видалити цей дмух\?
+ Видалити й переписати цей дмух\?
+ Видалити цей дмух\?Не стежити за цим обліковим записом\?Відкликати запит на підписку\?Завантаження
@@ -438,13 +438,13 @@
АватарВідповісти…Показуване ім\'я
- Відповідь успішно надіслано.
+ Відповідь успішно надіслано.%s показаноГлушіння користувача прибраноКористувача розблокованоПоділитися медіа з…
- Поділитися дмухом з…
- Поділитися URL-адресою дмуха з…
+ Поділитися дописом з…
+ Поділитися URL-адресою допису з…Завантаження медіаЗавантажити медіаВідкрити медіа #%d
@@ -453,12 +453,12 @@
ХештегиВідкрити автора просуванняДодати вкладку
- Запланувати дмух
+ Запланувати дмухКлавіотура емодзі
- Дмух, для якого ви створили чернетку відповіді, вилучено
+ Дмух, для якого ви створили чернетку відповіді, вилученоЧернетку видаленоНе вдалося завантажити дані відповіді
- Не вдалося надіслати цей дмух!
+ Не вдалося надіслати цей дмух!Ви дійсно хочете видалити список %s\?Ви не можете завантажити більше ніж %1$d медіавкладення.
@@ -477,7 +477,7 @@
Показувати попередній перегляд посилань у стрічкахНайкоротший час планування Mastodon становить 5 хвилин.Оголошень немає.
- Черга статусів порожня.
+ Черга статусів порожня.У вас немає чернеток.Помилка пошуку допису %sУвімкнути перемикання між вкладками жестом проведення пальцем
@@ -485,11 +485,11 @@
Не вдалося здійснити пошукОбліковий запис з іншого сервера. Надіслати анонімізовану копію звіту й туди\?Скаргу буде надіслано вашому модератору сервера. Ви можете надати пояснення, чому ви повідомляєте про цей обліковий запис знизу:
- Не вдалося отримати статуси
+ Не вдалося отримати статусиПереслати до %sДії для зображення %sВи впевнені, що хочете остаточно очистити всі сповіщення\?
- Створити дмух
+ Створити дописЗастосуватиФільтрОчистити
@@ -500,8 +500,8 @@
Назва спискуОпитування з варіантами: %1$s, %2$s, %3$s, %4$s; %5$sБезпосередньо
- Додано до закладок
- Просунуто
+ Додано до закладок
+ Просунутодосягнено обмеження %1$d вкладкадосягнено обмеження %1$d вкладки
@@ -534,4 +534,11 @@
Видалити бесідуВилучити закладкуЗапитувати підтвердження перед додаванням до вподобаних
+ 14 днів
+ 30 днів
+ 60 днів
+ 90 днів
+ 180 днів
+ 365 днів
+ Створити допис
\ No newline at end of file
diff --git a/app/src/main/res/values-v27/styles.xml b/app/src/main/res/values-v27/styles.xml
index 78d32747..586c7f34 100644
--- a/app/src/main/res/values-v27/styles.xml
+++ b/app/src/main/res/values-v27/styles.xml
@@ -1,15 +1,5 @@
-
-
-
diff --git a/app/src/test/java/com/keylesspalace/tusky/BottomSheetActivityTest.kt b/app/src/test/java/com/keylesspalace/tusky/BottomSheetActivityTest.kt
index 6d761b38..ef6d2632 100644
--- a/app/src/test/java/com/keylesspalace/tusky/BottomSheetActivityTest.kt
+++ b/app/src/test/java/com/keylesspalace/tusky/BottomSheetActivityTest.kt
@@ -19,9 +19,9 @@ import android.text.SpannedString
import android.widget.LinearLayout
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.google.android.material.bottomsheet.BottomSheetBehavior
-import com.keylesspalace.tusky.entity.Account
import com.keylesspalace.tusky.entity.SearchResult
import com.keylesspalace.tusky.entity.Status
+import com.keylesspalace.tusky.entity.TimelineAccount
import com.keylesspalace.tusky.network.MastodonApi
import com.nhaarman.mockitokotlin2.doReturn
import com.nhaarman.mockitokotlin2.mock
@@ -57,19 +57,13 @@ class BottomSheetActivityTest {
private val emptyCallback = Single.just(SearchResult(emptyList(), emptyList(), emptyList()))
private val testScheduler = TestScheduler()
- private val account = Account(
+ private val account = TimelineAccount(
id = "1",
localUsername = "admin",
username = "admin",
displayName = "Ad Min",
- note = SpannedString(""),
url = "http://mastodon.foo.bar",
- avatar = "",
- header = "",
- locked = false,
- followersCount = 0,
- followingCount = 0,
- statusesCount = 0
+ avatar = ""
)
private val accountSingle = Single.just(SearchResult(listOf(account), emptyList(), emptyList()))
@@ -93,6 +87,7 @@ class BottomSheetActivityTest {
visibility = Status.Visibility.PUBLIC,
attachments = ArrayList(),
mentions = emptyList(),
+ tags = emptyList(),
application = null,
pinned = false,
muted = false,
diff --git a/app/src/test/java/com/keylesspalace/tusky/ComposeActivityTest.kt b/app/src/test/java/com/keylesspalace/tusky/ComposeActivityTest.kt
index 156a6b41..e7b3a1a9 100644
--- a/app/src/test/java/com/keylesspalace/tusky/ComposeActivityTest.kt
+++ b/app/src/test/java/com/keylesspalace/tusky/ComposeActivityTest.kt
@@ -23,6 +23,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import com.keylesspalace.tusky.components.compose.ComposeActivity
import com.keylesspalace.tusky.components.compose.ComposeViewModel
import com.keylesspalace.tusky.components.compose.DEFAULT_CHARACTER_LIMIT
+import com.keylesspalace.tusky.components.compose.DEFAULT_MAXIMUM_URL_LENGTH
import com.keylesspalace.tusky.components.compose.MediaUploader
import com.keylesspalace.tusky.components.drafts.DraftHelper
import com.keylesspalace.tusky.db.AccountEntity
@@ -33,6 +34,8 @@ import com.keylesspalace.tusky.db.InstanceEntity
import com.keylesspalace.tusky.di.ViewModelFactory
import com.keylesspalace.tusky.entity.Account
import com.keylesspalace.tusky.entity.Instance
+import com.keylesspalace.tusky.entity.InstanceConfiguration
+import com.keylesspalace.tusky.entity.StatusConfiguration
import com.keylesspalace.tusky.network.MastodonApi
import com.keylesspalace.tusky.service.ServiceClient
import com.nhaarman.mockitokotlin2.any
@@ -109,7 +112,7 @@ class ComposeActivityTest {
val instanceDaoMock = mock(InstanceDao::class.java)
`when`(instanceDaoMock.loadMetadataForInstance(any())).thenReturn(
- Single.just(InstanceEntity(instanceDomain, emptyList(), null, null, null, null))
+ Single.just(InstanceEntity(instanceDomain, emptyList(), null, null, null, null, null, null, null))
)
val dbMock = mock(AppDatabase::class.java)
@@ -182,7 +185,7 @@ class ComposeActivityTest {
@Test
fun whenMaximumTootCharsIsNull_defaultLimitIsUsed() {
- instanceResponseCallback = { getInstanceWithMaximumTootCharacters(null) }
+ instanceResponseCallback = { getInstanceWithCustomConfiguration(null) }
setupActivity()
assertEquals(DEFAULT_CHARACTER_LIMIT, activity.maximumTootCharacters)
}
@@ -190,12 +193,39 @@ class ComposeActivityTest {
@Test
fun whenMaximumTootCharsIsPopulated_customLimitIsUsed() {
val customMaximum = 1000
- instanceResponseCallback = { getInstanceWithMaximumTootCharacters(customMaximum) }
+ instanceResponseCallback = { getInstanceWithCustomConfiguration(customMaximum, getCustomInstanceConfiguration(maximumStatusCharacters = customMaximum)) }
setupActivity()
shadowOf(getMainLooper()).idle()
assertEquals(customMaximum, activity.maximumTootCharacters)
}
+ @Test
+ fun whenOnlyLegacyMaximumTootCharsIsPopulated_customLimitIsUsed() {
+ val customMaximum = 1000
+ instanceResponseCallback = { getInstanceWithCustomConfiguration(customMaximum) }
+ setupActivity()
+ shadowOf(getMainLooper()).idle()
+ assertEquals(customMaximum, activity.maximumTootCharacters)
+ }
+
+ @Test
+ fun whenOnlyConfigurationMaximumTootCharsIsPopulated_customLimitIsUsed() {
+ val customMaximum = 1000
+ instanceResponseCallback = { getInstanceWithCustomConfiguration(null, getCustomInstanceConfiguration(maximumStatusCharacters = customMaximum)) }
+ setupActivity()
+ shadowOf(getMainLooper()).idle()
+ assertEquals(customMaximum, activity.maximumTootCharacters)
+ }
+
+ @Test
+ fun whenDifferentCharLimitsArePopulated_statusConfigurationLimitIsUsed() {
+ val customMaximum = 1000
+ instanceResponseCallback = { getInstanceWithCustomConfiguration(customMaximum, getCustomInstanceConfiguration(maximumStatusCharacters = customMaximum * 2)) }
+ setupActivity()
+ shadowOf(getMainLooper()).idle()
+ assertEquals(customMaximum * 2, activity.maximumTootCharacters)
+ }
+
@Test
fun whenTextContainsNoUrl_everyCharacterIsCounted() {
val content = "This is test content please ignore thx "
@@ -208,16 +238,16 @@ class ComposeActivityTest {
val url = "https://www.google.dk/search?biw=1920&bih=990&tbm=isch&sa=1&ei=bmDrWuOoKMv6kwWOkIaoDQ&q=indiana+jones+i+hate+snakes+animated&oq=indiana+jones+i+hate+snakes+animated&gs_l=psy-ab.3...54174.55443.0.55553.9.7.0.0.0.0.255.333.1j0j1.2.0....0...1c.1.64.psy-ab..7.0.0....0.40G-kcDkC6A#imgdii=PSp15hQjN1JqvM:&imgrc=H0hyE2JW5wrpBM:"
val additionalContent = "Check out this @image #search result: "
insertSomeTextInContent(additionalContent + url)
- assertEquals(activity.calculateTextLength(), additionalContent.length + ComposeActivity.MAXIMUM_URL_LENGTH)
+ assertEquals(activity.calculateTextLength(), additionalContent.length + DEFAULT_MAXIMUM_URL_LENGTH)
}
@Test
- fun whenTextContainsMultipleUrls_onlyEllipsizedURLIsCounted() {
+ fun whenTextContainsShortUrls_allUrlsGetEllipsized() {
val shortUrl = "https://tusky.app"
val url = "https://www.google.dk/search?biw=1920&bih=990&tbm=isch&sa=1&ei=bmDrWuOoKMv6kwWOkIaoDQ&q=indiana+jones+i+hate+snakes+animated&oq=indiana+jones+i+hate+snakes+animated&gs_l=psy-ab.3...54174.55443.0.55553.9.7.0.0.0.0.255.333.1j0j1.2.0....0...1c.1.64.psy-ab..7.0.0....0.40G-kcDkC6A#imgdii=PSp15hQjN1JqvM:&imgrc=H0hyE2JW5wrpBM:"
val additionalContent = " Check out this @image #search result: "
insertSomeTextInContent(shortUrl + additionalContent + url)
- assertEquals(activity.calculateTextLength(), additionalContent.length + shortUrl.length + ComposeActivity.MAXIMUM_URL_LENGTH)
+ assertEquals(activity.calculateTextLength(), additionalContent.length + (DEFAULT_MAXIMUM_URL_LENGTH * 2))
}
@Test
@@ -225,7 +255,44 @@ class ComposeActivityTest {
val url = "https://www.google.dk/search?biw=1920&bih=990&tbm=isch&sa=1&ei=bmDrWuOoKMv6kwWOkIaoDQ&q=indiana+jones+i+hate+snakes+animated&oq=indiana+jones+i+hate+snakes+animated&gs_l=psy-ab.3...54174.55443.0.55553.9.7.0.0.0.0.255.333.1j0j1.2.0....0...1c.1.64.psy-ab..7.0.0....0.40G-kcDkC6A#imgdii=PSp15hQjN1JqvM:&imgrc=H0hyE2JW5wrpBM:"
val additionalContent = " Check out this @image #search result: "
insertSomeTextInContent(url + additionalContent + url)
- assertEquals(activity.calculateTextLength(), additionalContent.length + (ComposeActivity.MAXIMUM_URL_LENGTH * 2))
+ assertEquals(activity.calculateTextLength(), additionalContent.length + (DEFAULT_MAXIMUM_URL_LENGTH * 2))
+ }
+
+ @Test
+ fun whenTextContainsUrl_onlyEllipsizedURLIsCounted_withCustomConfiguration() {
+ val url = "https://www.google.dk/search?biw=1920&bih=990&tbm=isch&sa=1&ei=bmDrWuOoKMv6kwWOkIaoDQ&q=indiana+jones+i+hate+snakes+animated&oq=indiana+jones+i+hate+snakes+animated&gs_l=psy-ab.3...54174.55443.0.55553.9.7.0.0.0.0.255.333.1j0j1.2.0....0...1c.1.64.psy-ab..7.0.0....0.40G-kcDkC6A#imgdii=PSp15hQjN1JqvM:&imgrc=H0hyE2JW5wrpBM:"
+ val additionalContent = "Check out this @image #search result: "
+ val customUrlLength = 16
+ instanceResponseCallback = { getInstanceWithCustomConfiguration(configuration = getCustomInstanceConfiguration(charactersReservedPerUrl = customUrlLength)) }
+ setupActivity()
+ shadowOf(getMainLooper()).idle()
+ insertSomeTextInContent(additionalContent + url)
+ assertEquals(activity.calculateTextLength(), additionalContent.length + customUrlLength)
+ }
+
+ @Test
+ fun whenTextContainsShortUrls_allUrlsGetEllipsized_withCustomConfiguration() {
+ val shortUrl = "https://tusky.app"
+ val url = "https://www.google.dk/search?biw=1920&bih=990&tbm=isch&sa=1&ei=bmDrWuOoKMv6kwWOkIaoDQ&q=indiana+jones+i+hate+snakes+animated&oq=indiana+jones+i+hate+snakes+animated&gs_l=psy-ab.3...54174.55443.0.55553.9.7.0.0.0.0.255.333.1j0j1.2.0....0...1c.1.64.psy-ab..7.0.0....0.40G-kcDkC6A#imgdii=PSp15hQjN1JqvM:&imgrc=H0hyE2JW5wrpBM:"
+ val additionalContent = " Check out this @image #search result: "
+ val customUrlLength = 18 // The intention is that this is longer than shortUrl.length
+ instanceResponseCallback = { getInstanceWithCustomConfiguration(configuration = getCustomInstanceConfiguration(charactersReservedPerUrl = customUrlLength)) }
+ setupActivity()
+ shadowOf(getMainLooper()).idle()
+ insertSomeTextInContent(shortUrl + additionalContent + url)
+ assertEquals(activity.calculateTextLength(), additionalContent.length + (customUrlLength * 2))
+ }
+
+ @Test
+ fun whenTextContainsMultipleURLs_allURLsGetEllipsized_withCustomConfiguration() {
+ val url = "https://www.google.dk/search?biw=1920&bih=990&tbm=isch&sa=1&ei=bmDrWuOoKMv6kwWOkIaoDQ&q=indiana+jones+i+hate+snakes+animated&oq=indiana+jones+i+hate+snakes+animated&gs_l=psy-ab.3...54174.55443.0.55553.9.7.0.0.0.0.255.333.1j0j1.2.0....0...1c.1.64.psy-ab..7.0.0....0.40G-kcDkC6A#imgdii=PSp15hQjN1JqvM:&imgrc=H0hyE2JW5wrpBM:"
+ val additionalContent = " Check out this @image #search result: "
+ val customUrlLength = 16
+ instanceResponseCallback = { getInstanceWithCustomConfiguration(configuration = getCustomInstanceConfiguration(charactersReservedPerUrl = customUrlLength)) }
+ setupActivity()
+ shadowOf(getMainLooper()).idle()
+ insertSomeTextInContent(url + additionalContent + url)
+ assertEquals(activity.calculateTextLength(), additionalContent.length + (customUrlLength * 2))
}
@Test
@@ -387,7 +454,7 @@ class ComposeActivityTest {
activity.findViewById(R.id.composeEditField).setText(text ?: "Some text")
}
- private fun getInstanceWithMaximumTootCharacters(maximumTootCharacters: Int?): Instance {
+ private fun getInstanceWithCustomConfiguration(maximumLegacyTootCharacters: Int? = null, configuration: InstanceConfiguration? = null): Instance {
return Instance(
"https://example.token",
"Example dot Token",
@@ -416,9 +483,22 @@ class ComposeActivityTest {
emptyList(),
emptyList()
),
- maximumTootCharacters,
+ maximumLegacyTootCharacters,
null,
- null
+ null,
+ configuration,
+ )
+ }
+
+ fun getCustomInstanceConfiguration(maximumStatusCharacters: Int? = null, charactersReservedPerUrl: Int? = null): InstanceConfiguration {
+ return InstanceConfiguration(
+ statuses = StatusConfiguration(
+ maxCharacters = maximumStatusCharacters,
+ maxMediaAttachments = null,
+ charactersReservedPerUrl = charactersReservedPerUrl
+ ),
+ mediaAttachments = null,
+ polls = null
)
}
}
diff --git a/app/src/test/java/com/keylesspalace/tusky/FilterTest.kt b/app/src/test/java/com/keylesspalace/tusky/FilterTest.kt
index a48ff121..03fff5ee 100644
--- a/app/src/test/java/com/keylesspalace/tusky/FilterTest.kt
+++ b/app/src/test/java/com/keylesspalace/tusky/FilterTest.kt
@@ -189,6 +189,7 @@ class FilterTest {
)
} else arrayListOf(),
mentions = listOf(),
+ tags = listOf(),
application = null,
pinned = false,
muted = false,
diff --git a/app/src/test/java/com/keylesspalace/tusky/StatusComparisonTest.kt b/app/src/test/java/com/keylesspalace/tusky/StatusComparisonTest.kt
new file mode 100644
index 00000000..ed06e27c
--- /dev/null
+++ b/app/src/test/java/com/keylesspalace/tusky/StatusComparisonTest.kt
@@ -0,0 +1,216 @@
+package com.keylesspalace.tusky
+
+import android.text.Spanned
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.google.gson.GsonBuilder
+import com.keylesspalace.tusky.entity.Status
+import com.keylesspalace.tusky.json.SpannedTypeAdapter
+import com.keylesspalace.tusky.viewdata.StatusViewData
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertNotEquals
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.annotation.Config
+
+@Config(sdk = [28])
+@RunWith(AndroidJUnit4::class)
+class StatusComparisonTest {
+
+ @Test
+ fun `two equal statuses - should be equal`() {
+ assertEquals(createStatus(), createStatus())
+ }
+
+ @Test
+ fun `status with different id - should not be equal`() {
+ assertNotEquals(createStatus(), createStatus(id = "987654321"))
+ }
+
+ @Test
+ fun `status with different content - should not be equal`() {
+ val content: String = """
+ \u003cp\u003e\u003cspan class=\"h-card\"\u003e\u003ca href=\"https://mastodon.social/@ConnyDuck\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"\u003e@\u003cspan\u003eConnyDuck@mastodon.social\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e 123\u003c/p\u003e
+ """.trimIndent()
+ assertNotEquals(createStatus(), createStatus(content = content))
+ }
+
+ @Test
+ fun `accounts with different notes in json - should be equal because notes are not relevant for timelines`() {
+ assertEquals(createStatus(note = "Test"), createStatus(note = "Test 123456"))
+ }
+
+ private val gson = GsonBuilder().registerTypeAdapter(
+ Spanned::class.java, SpannedTypeAdapter()
+ ).create()
+
+ @Test
+ fun `two equal status view data - should be equal`() {
+ val viewdata1 = StatusViewData.Concrete(
+ status = createStatus(),
+ isExpanded = false,
+ isShowingContent = false,
+ isCollapsible = false,
+ isCollapsed = false
+ )
+ val viewdata2 = StatusViewData.Concrete(
+ status = createStatus(),
+ isExpanded = false,
+ isShowingContent = false,
+ isCollapsible = false,
+ isCollapsed = false
+ )
+ assertEquals(viewdata1, viewdata2)
+ }
+
+ @Test
+ fun `status view data with different isExpanded - should not be equal`() {
+ val viewdata1 = StatusViewData.Concrete(
+ status = createStatus(),
+ isExpanded = true,
+ isShowingContent = false,
+ isCollapsible = false,
+ isCollapsed = false
+ )
+ val viewdata2 = StatusViewData.Concrete(
+ status = createStatus(),
+ isExpanded = false,
+ isShowingContent = false,
+ isCollapsible = false,
+ isCollapsed = false
+ )
+ assertNotEquals(viewdata1, viewdata2)
+ }
+
+ @Test
+ fun `status view data with different statuses- should not be equal`() {
+ val viewdata1 = StatusViewData.Concrete(
+ status = createStatus(content = "whatever"),
+ isExpanded = true,
+ isShowingContent = false,
+ isCollapsible = false,
+ isCollapsed = false
+ )
+ val viewdata2 = StatusViewData.Concrete(
+ status = createStatus(),
+ isExpanded = false,
+ isShowingContent = false,
+ isCollapsible = false,
+ isCollapsed = false
+ )
+ assertNotEquals(viewdata1, viewdata2)
+ }
+
+ private fun createStatus(
+ id: String = "123456",
+ content: String = """
+ \u003cp\u003e\u003cspan class=\"h-card\"\u003e\u003ca href=\"https://mastodon.social/@ConnyDuck\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"\u003e@\u003cspan\u003eConnyDuck@mastodon.social\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e Hi\u003c/p\u003e
+ """.trimIndent(),
+ note: String = ""
+ ): Status {
+ val statusJson = """
+ {
+ "id": "$id",
+ "created_at": "2022-02-26T09:54:45.000Z",
+ "in_reply_to_id": null,
+ "in_reply_to_account_id": null,
+ "sensitive": false,
+ "spoiler_text": "",
+ "visibility": "public",
+ "language": null,
+ "uri": "https://pixelfed.social/p/connyduck/403124983655733325",
+ "url": "https://pixelfed.social/p/connyduck/403124983655733325",
+ "replies_count": 3,
+ "reblogs_count": 28,
+ "favourites_count": 6,
+ "edited_at": null,
+ "favourited": true,
+ "reblogged": false,
+ "muted": false,
+ "bookmarked": false,
+ "content": "$content",
+ "reblog": null,
+ "account": {
+ "id": "419352",
+ "username": "connyduck",
+ "acct": "connyduck@pixelfed.social",
+ "display_name": "Conny Duck",
+ "locked": false,
+ "bot": false,
+ "discoverable": false,
+ "group": false,
+ "created_at": "2018-08-14T00:00:00.000Z",
+ "note": "$note",
+ "url": "https://pixelfed.social/connyduck",
+ "avatar": "https://files.mastodon.social/cache/accounts/avatars/000/419/352/original/31ce660c53962e0c.jpeg",
+ "avatar_static": "https://files.mastodon.social/cache/accounts/avatars/000/419/352/original/31ce660c53962e0c.jpeg",
+ "header": "https://mastodon.social/headers/original/missing.png",
+ "header_static": "https://mastodon.social/headers/original/missing.png",
+ "followers_count": 2,
+ "following_count": 0,
+ "statuses_count": 70,
+ "last_status_at": "2022-03-07",
+ "emojis": [],
+ "fields": []
+ },
+ "media_attachments": [
+ {
+ "id": "107863694400783337",
+ "type": "image",
+ "url": "https://files.mastodon.social/cache/media_attachments/files/107/863/694/400/783/337/original/71c5bad1756bbc8f.jpg",
+ "preview_url": "https://files.mastodon.social/cache/media_attachments/files/107/863/694/400/783/337/small/71c5bad1756bbc8f.jpg",
+ "remote_url": "https://pixelfed-prod.nyc3.cdn.digitaloceanspaces.com/public/m/_v2/1138/affc38a2b-1c5f41/JRKoMNoj6dKa/9mXs0Fetvj4KwRbKypt8C1PZNVd7d3dQqod4roLZ.jpg",
+ "preview_remote_url": null,
+ "text_url": null,
+ "meta": {
+ "original": {
+ "width": 1371,
+ "height": 1080,
+ "size": "1371x1080",
+ "aspect": 1.2694444444444444
+ },
+ "small": {
+ "width": 451,
+ "height": 355,
+ "size": "451x355",
+ "aspect": 1.2704225352112677
+ }
+ },
+ "description": "Oilpainting of a kingfisher, photographed on my easel",
+ "blurhash": "UUG91|?wxHV@WTkDs.V?xZa_I:WBNFR*WBRk"
+ },
+ {
+ "id": "107863694727565058",
+ "type": "image",
+ "url": "https://files.mastodon.social/cache/media_attachments/files/107/863/694/727/565/058/original/68daef05be7ac6b6.jpg",
+ "preview_url": "https://files.mastodon.social/cache/media_attachments/files/107/863/694/727/565/058/small/68daef05be7ac6b6.jpg",
+ "remote_url": "https://pixelfed-prod.nyc3.cdn.digitaloceanspaces.com/public/m/_v2/1138/affc38a2b-1c5f41/nBVJUnrEIjfO/M6i8GSP44Iv230KWXnMpvVobOqASXY3EkImyxySS.jpg",
+ "preview_remote_url": null,
+ "text_url": null,
+ "meta": {
+ "original": {
+ "width": 1087,
+ "height": 1080,
+ "size": "1087x1080",
+ "aspect": 1.0064814814814815
+ },
+ "small": {
+ "width": 401,
+ "height": 398,
+ "size": "401x398",
+ "aspect": 1.0075376884422111
+ }
+ },
+ "description": "Oilpainting of a kingfisher",
+ "blurhash": "U89u4pPJ4:SoJ6NNnkoxoBtSx0Von-RiNgt8"
+ }
+ ],
+ "mentions": [],
+ "tags": [],
+ "emojis": [],
+ "card": null,
+ "poll": null
+ }
+ """.trimIndent()
+ return gson.fromJson(statusJson, Status::class.java)
+ }
+}
diff --git a/app/src/test/java/com/keylesspalace/tusky/StringUtilsTest.kt b/app/src/test/java/com/keylesspalace/tusky/StringUtilsTest.kt
index 5966cc39..6910a365 100644
--- a/app/src/test/java/com/keylesspalace/tusky/StringUtilsTest.kt
+++ b/app/src/test/java/com/keylesspalace/tusky/StringUtilsTest.kt
@@ -1,9 +1,7 @@
package com.keylesspalace.tusky
-import com.keylesspalace.tusky.util.dec
-import com.keylesspalace.tusky.util.inc
import com.keylesspalace.tusky.util.isLessThan
-import org.junit.Assert.assertEquals
+import com.keylesspalace.tusky.util.isLessThanOrEqual
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
@@ -25,24 +23,16 @@ class StringUtilsTest {
}
@Test
- fun inc() {
- listOf(
- "122" to "123",
- "12A" to "12B",
- "1" to "2"
- ).forEach { (l, r) -> assertEquals("$l + 1 = $r", r, l.inc()) }
- }
-
- @Test
- fun dec() {
- listOf(
- "123" to "122",
- "12B" to "12A",
- "120" to "11z",
- "100" to "zz",
- "0" to "",
- "" to "",
- "2" to "1"
- ).forEach { (l, r) -> assertEquals("$l - 1 = $r", r, l.dec()) }
+ fun isLessThanOrEqual() {
+ val lessList = listOf(
+ "abc" to "bcd",
+ "ab" to "abc",
+ "cb" to "abc",
+ "1" to "2",
+ "abc" to "abc",
+ )
+ lessList.forEach { (l, r) -> assertTrue("$l < $r", l.isLessThanOrEqual(r)) }
+ val notLessList = lessList.filterNot { (l, r) -> l == r }.map { (l, r) -> r to l }
+ notLessList.forEach { (l, r) -> assertFalse("not $l < $r", l.isLessThanOrEqual(r)) }
}
}
diff --git a/app/src/test/java/com/keylesspalace/tusky/components/timeline/CachedTimelineRemoteMediatorTest.kt b/app/src/test/java/com/keylesspalace/tusky/components/timeline/CachedTimelineRemoteMediatorTest.kt
index ad633f3d..462b0a4a 100644
--- a/app/src/test/java/com/keylesspalace/tusky/components/timeline/CachedTimelineRemoteMediatorTest.kt
+++ b/app/src/test/java/com/keylesspalace/tusky/components/timeline/CachedTimelineRemoteMediatorTest.kt
@@ -139,7 +139,75 @@ class CachedTimelineRemoteMediatorTest {
@Test
@ExperimentalPagingApi
- fun `should refresh and insert placeholder`() {
+ fun `should refresh and insert placeholder when a whole page with no overlap to existing statuses is loaded`() {
+
+ val statusesAlreadyInDb = listOf(
+ mockStatusEntityWithAccount("3"),
+ mockStatusEntityWithAccount("2"),
+ mockStatusEntityWithAccount("1"),
+ )
+
+ db.insert(statusesAlreadyInDb)
+
+ val remoteMediator = CachedTimelineRemoteMediator(
+ accountManager = accountManager,
+ api = mock {
+ on { homeTimeline(limit = 3) } doReturn Single.just(
+ Response.success(
+ listOf(
+ mockStatus("8"),
+ mockStatus("7"),
+ mockStatus("5")
+ )
+ )
+ )
+ on { homeTimeline(maxId = "3", limit = 3) } doReturn Single.just(
+ Response.success(
+ listOf(
+ mockStatus("3"),
+ mockStatus("2"),
+ mockStatus("1")
+ )
+ )
+ )
+ },
+ db = db,
+ gson = Gson()
+ )
+
+ val state = state(
+ pages = listOf(
+ PagingSource.LoadResult.Page(
+ data = statusesAlreadyInDb,
+ prevKey = null,
+ nextKey = 0
+ )
+ ),
+ pageSize = 3
+ )
+
+ val result = runBlocking { remoteMediator.load(LoadType.REFRESH, state) }
+
+ assertTrue(result is RemoteMediator.MediatorResult.Success)
+ assertEquals(false, (result as RemoteMediator.MediatorResult.Success).endOfPaginationReached)
+
+ db.assertStatuses(
+ listOf(
+ mockStatusEntityWithAccount("8"),
+ mockStatusEntityWithAccount("7"),
+ TimelineStatusWithAccount().apply {
+ status = Placeholder("5", loading = false).toEntity(1)
+ },
+ mockStatusEntityWithAccount("3"),
+ mockStatusEntityWithAccount("2"),
+ mockStatusEntityWithAccount("1"),
+ )
+ )
+ }
+
+ @Test
+ @ExperimentalPagingApi
+ fun `should refresh and not insert placeholder when less than a whole page is loaded`() {
val statusesAlreadyInDb = listOf(
mockStatusEntityWithAccount("3"),
@@ -176,7 +244,7 @@ class CachedTimelineRemoteMediatorTest {
)
val state = state(
- listOf(
+ pages = listOf(
PagingSource.LoadResult.Page(
data = statusesAlreadyInDb,
prevKey = null,
@@ -195,9 +263,6 @@ class CachedTimelineRemoteMediatorTest {
mockStatusEntityWithAccount("8"),
mockStatusEntityWithAccount("7"),
mockStatusEntityWithAccount("5"),
- TimelineStatusWithAccount().apply {
- status = Placeholder("4", loading = false).toEntity(1)
- },
mockStatusEntityWithAccount("3"),
mockStatusEntityWithAccount("2"),
mockStatusEntityWithAccount("1"),
@@ -207,7 +272,7 @@ class CachedTimelineRemoteMediatorTest {
@Test
@ExperimentalPagingApi
- fun `should refresh and not insert placeholders`() {
+ fun `should refresh and not insert placeholders when there is overlap with existing statuses`() {
val statusesAlreadyInDb = listOf(
mockStatusEntityWithAccount("3"),
@@ -220,7 +285,7 @@ class CachedTimelineRemoteMediatorTest {
val remoteMediator = CachedTimelineRemoteMediator(
accountManager = accountManager,
api = mock {
- on { homeTimeline(limit = 20) } doReturn Single.just(
+ on { homeTimeline(limit = 3) } doReturn Single.just(
Response.success(
listOf(
mockStatus("6"),
@@ -229,7 +294,7 @@ class CachedTimelineRemoteMediatorTest {
)
)
)
- on { homeTimeline(maxId = "3", limit = 20) } doReturn Single.just(
+ on { homeTimeline(maxId = "3", limit = 3) } doReturn Single.just(
Response.success(
listOf(
mockStatus("3"),
@@ -250,7 +315,8 @@ class CachedTimelineRemoteMediatorTest {
prevKey = null,
nextKey = 0
)
- )
+ ),
+ pageSize = 3
)
val result = runBlocking { remoteMediator.load(LoadType.REFRESH, state) }
@@ -487,11 +553,14 @@ class CachedTimelineRemoteMediatorTest {
)
}
- private fun state(pages: List> = emptyList()) = PagingState(
+ private fun state(
+ pages: List> = emptyList(),
+ pageSize: Int = 20
+ ) = PagingState(
pages = pages,
anchorPosition = null,
config = PagingConfig(
- pageSize = 20
+ pageSize = pageSize
),
leadingPlaceholderCount = 0
)
@@ -514,7 +583,7 @@ class CachedTimelineRemoteMediatorTest {
expected: List,
forAccount: Long = 1
) {
- val pagingSource = timelineDao().getStatusesForAccount(forAccount)
+ val pagingSource = timelineDao().getStatuses(forAccount)
val loadResult = runBlocking {
pagingSource.load(PagingSource.LoadParams.Refresh(null, 100, false))
diff --git a/app/src/test/java/com/keylesspalace/tusky/components/timeline/NetworkTimelineRemoteMediatorTest.kt b/app/src/test/java/com/keylesspalace/tusky/components/timeline/NetworkTimelineRemoteMediatorTest.kt
index 601fc00a..74d0fe25 100644
--- a/app/src/test/java/com/keylesspalace/tusky/components/timeline/NetworkTimelineRemoteMediatorTest.kt
+++ b/app/src/test/java/com/keylesspalace/tusky/components/timeline/NetworkTimelineRemoteMediatorTest.kt
@@ -27,7 +27,7 @@ import org.junit.runner.RunWith
import org.robolectric.annotation.Config
import retrofit2.HttpException
import retrofit2.Response
-import java.lang.RuntimeException
+import java.io.IOException
@Config(sdk = [29])
@RunWith(AndroidJUnit4::class)
@@ -66,7 +66,7 @@ class NetworkTimelineRemoteMediatorTest {
val timelineViewModel: NetworkTimelineViewModel = mock {
on { statusData } doReturn mutableListOf()
- onBlocking { fetchStatusesForKind(anyOrNull(), anyOrNull(), anyOrNull()) } doThrow RuntimeException()
+ onBlocking { fetchStatusesForKind(anyOrNull(), anyOrNull(), anyOrNull()) } doThrow IOException()
}
val remoteMediator = NetworkTimelineRemoteMediator(accountManager, timelineViewModel)
@@ -74,7 +74,7 @@ class NetworkTimelineRemoteMediatorTest {
val result = runBlocking { remoteMediator.load(LoadType.REFRESH, state()) }
assertTrue(result is RemoteMediator.MediatorResult.Error)
- assertTrue((result as RemoteMediator.MediatorResult.Error).throwable is RuntimeException)
+ assertTrue((result as RemoteMediator.MediatorResult.Error).throwable is IOException)
}
@Test
@@ -217,8 +217,7 @@ class NetworkTimelineRemoteMediatorTest {
val newStatusData = mutableListOf(
mockStatusViewData("10"),
mockStatusViewData("9"),
- mockStatusViewData("7"),
- StatusViewData.Placeholder("6", false),
+ StatusViewData.Placeholder("7", false),
mockStatusViewData("3"),
mockStatusViewData("2"),
mockStatusViewData("1"),
diff --git a/app/src/test/java/com/keylesspalace/tusky/components/timeline/StatusMocker.kt b/app/src/test/java/com/keylesspalace/tusky/components/timeline/StatusMocker.kt
index c4ab2faa..f7c998b5 100644
--- a/app/src/test/java/com/keylesspalace/tusky/components/timeline/StatusMocker.kt
+++ b/app/src/test/java/com/keylesspalace/tusky/components/timeline/StatusMocker.kt
@@ -3,8 +3,8 @@ package com.keylesspalace.tusky.components.timeline
import android.text.SpannedString
import com.google.gson.Gson
import com.keylesspalace.tusky.db.TimelineStatusWithAccount
-import com.keylesspalace.tusky.entity.Account
import com.keylesspalace.tusky.entity.Status
+import com.keylesspalace.tusky.entity.TimelineAccount
import com.keylesspalace.tusky.viewdata.StatusViewData
import java.util.ArrayList
import java.util.Date
@@ -14,15 +14,13 @@ private val fixedDate = Date(1638889052000)
fun mockStatus(id: String = "100") = Status(
id = id,
url = "https://mastodon.example/@ConnyDuck/$id",
- account = Account(
+ account = TimelineAccount(
id = "1",
localUsername = "connyduck",
username = "connyduck@mastodon.example",
displayName = "Conny Duck",
- note = SpannedString(""),
url = "https://mastodon.example/@ConnyDuck",
- avatar = "https://mastodon.example/system/accounts/avatars/000/150/486/original/ab27d7ddd18a10ea.jpg",
- header = "https://mastodon.example/system/accounts/header/000/106/476/original/e590545d7eb4da39.jpg"
+ avatar = "https://mastodon.example/system/accounts/avatars/000/150/486/original/ab27d7ddd18a10ea.jpg"
),
inReplyToId = null,
inReplyToAccountId = null,
@@ -40,6 +38,7 @@ fun mockStatus(id: String = "100") = Status(
visibility = Status.Visibility.PUBLIC,
attachments = ArrayList(),
mentions = emptyList(),
+ tags = emptyList(),
application = Status.Application("Tusky", "https://tusky.app"),
pinned = false,
muted = false,
diff --git a/app/src/test/java/com/keylesspalace/tusky/components/timeline/TimelineViewModelTest.kt b/app/src/test/java/com/keylesspalace/tusky/components/timeline/TimelineViewModelTest.kt
deleted file mode 100644
index e99cb14a..00000000
--- a/app/src/test/java/com/keylesspalace/tusky/components/timeline/TimelineViewModelTest.kt
+++ /dev/null
@@ -1,216 +0,0 @@
-package com.keylesspalace.tusky.components.timeline
-
-import android.os.Looper
-import androidx.arch.core.executor.testing.InstantTaskExecutorRule
-import androidx.paging.AsyncPagingDataDiffer
-import androidx.paging.ExperimentalPagingApi
-import androidx.recyclerview.widget.ListUpdateCallback
-import androidx.room.Room
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.platform.app.InstrumentationRegistry
-import com.google.gson.Gson
-import com.keylesspalace.tusky.appstore.EventHub
-import com.keylesspalace.tusky.components.timeline.TimelinePagingAdapter.Companion.TimelineDifferCallback
-import com.keylesspalace.tusky.components.timeline.viewmodel.CachedTimelineViewModel
-import com.keylesspalace.tusky.components.timeline.viewmodel.NetworkTimelineViewModel
-import com.keylesspalace.tusky.components.timeline.viewmodel.TimelineViewModel
-import com.keylesspalace.tusky.db.AccountEntity
-import com.keylesspalace.tusky.db.AccountManager
-import com.keylesspalace.tusky.db.AppDatabase
-import com.keylesspalace.tusky.db.Converters
-import com.keylesspalace.tusky.network.FilterModel
-import com.keylesspalace.tusky.network.MastodonApi
-import com.keylesspalace.tusky.network.TimelineCases
-import com.nhaarman.mockitokotlin2.doReturn
-import com.nhaarman.mockitokotlin2.mock
-import io.reactivex.rxjava3.core.Single
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.flow.collectLatest
-import kotlinx.coroutines.flow.take
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.runBlocking
-import kotlinx.coroutines.test.TestCoroutineDispatcher
-import kotlinx.coroutines.test.TestCoroutineScope
-import kotlinx.coroutines.test.resetMain
-import kotlinx.coroutines.test.setMain
-import okhttp3.Headers
-import org.junit.After
-import org.junit.Assert.assertEquals
-import org.junit.Before
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.robolectric.Shadows.shadowOf
-import org.robolectric.annotation.Config
-import retrofit2.Response
-import java.util.concurrent.Executors
-
-@ExperimentalCoroutinesApi
-@Config(sdk = [29])
-@RunWith(AndroidJUnit4::class)
-class TimelineViewModelTest {
-
- @get:Rule
- val instantRule = InstantTaskExecutorRule()
-
- private val testDispatcher = TestCoroutineDispatcher()
- private val testScope = TestCoroutineScope(testDispatcher)
-
- private val accountManager: AccountManager = mock {
- on { activeAccount } doReturn AccountEntity(
- id = 1,
- domain = "mastodon.example",
- accessToken = "token",
- isActive = true
- )
- }
-
- private val eventHub = EventHub()
-
- private lateinit var db: AppDatabase
-
- @Before
- fun setup() {
- Dispatchers.setMain(testDispatcher)
-
- shadowOf(Looper.getMainLooper()).idle()
-
- val context = InstrumentationRegistry.getInstrumentation().targetContext
- db = Room.inMemoryDatabaseBuilder(context, AppDatabase::class.java)
- .addTypeConverter(Converters(Gson()))
- .setTransactionExecutor(Executors.newSingleThreadExecutor())
- .allowMainThreadQueries()
- .build()
- }
-
- @After
- fun tearDown() {
- Dispatchers.resetMain()
- testDispatcher.cleanupTestCoroutines()
- db.close()
- }
-
- @Test
- @ExperimentalPagingApi
- fun shouldLoadNetworkTimeline() = runBlocking {
-
- val api: MastodonApi = mock {
- on { publicTimeline(local = true, maxId = null, sinceId = null, limit = 30) } doReturn Single.just(
- Response.success(
- listOf(
- mockStatus("6"),
- mockStatus("5"),
- mockStatus("4")
- ),
- Headers.headersOf(
- "Link", "; rel=\"next\", ; rel=\"prev\""
- )
- )
- )
-
- on { publicTimeline(local = true, maxId = "1", sinceId = null, limit = 30) } doReturn Single.just(
- Response.success(emptyList())
- )
-
- on { getFilters() } doReturn Single.just(emptyList())
- }
-
- val viewModel = NetworkTimelineViewModel(
- TimelineCases(api, eventHub),
- api,
- eventHub,
- accountManager,
- mock(),
- FilterModel()
- )
-
- viewModel.init(TimelineViewModel.Kind.PUBLIC_LOCAL, null, emptyList())
-
- val differ = AsyncPagingDataDiffer(
- diffCallback = TimelineDifferCallback,
- updateCallback = NoopListCallback(),
- workerDispatcher = testDispatcher
- )
-
- viewModel.statuses.take(2).collectLatest {
- testScope.launch {
- differ.submitData(it)
- }
- }
-
- assertEquals(
- listOf(
- mockStatusViewData("6"),
- mockStatusViewData("5"),
- mockStatusViewData("4")
- ),
- differ.snapshot().items
- )
- }
-
- // ToDo: Find out why Room & coroutines are not playing nice here
- // @Test
- @ExperimentalPagingApi
- fun shouldLoadCachedTimeline() = runBlocking {
-
- val api: MastodonApi = mock {
- on { homeTimeline(limit = 30) } doReturn Single.just(
- Response.success(
- listOf(
- mockStatus("6"),
- mockStatus("5"),
- mockStatus("4")
- )
- )
- )
-
- on { homeTimeline(maxId = "1", sinceId = null, limit = 30) } doReturn Single.just(
- Response.success(emptyList())
- )
-
- on { getFilters() } doReturn Single.just(emptyList())
- }
-
- val viewModel = CachedTimelineViewModel(
- TimelineCases(api, eventHub),
- api,
- eventHub,
- accountManager,
- mock(),
- FilterModel(),
- db,
- Gson()
- )
-
- viewModel.init(TimelineViewModel.Kind.HOME, null, emptyList())
-
- val differ = AsyncPagingDataDiffer(
- diffCallback = TimelineDifferCallback,
- updateCallback = NoopListCallback(),
- workerDispatcher = testDispatcher
- )
-
- viewModel.statuses.take(1000).collectLatest {
- testScope.launch {
- differ.submitData(it)
- }
- }
-
- assertEquals(
- listOf(
- mockStatusViewData("6"),
- mockStatusViewData("5"),
- mockStatusViewData("4")
- ),
- differ.snapshot().items
- )
- }
-}
-
-class NoopListCallback : ListUpdateCallback {
- override fun onChanged(position: Int, count: Int, payload: Any?) {}
- override fun onMoved(fromPosition: Int, toPosition: Int) {}
- override fun onInserted(position: Int, count: Int) {}
- override fun onRemoved(position: Int, count: Int) {}
-}
diff --git a/app/src/test/java/com/keylesspalace/tusky/db/TimelineDaoTest.kt b/app/src/test/java/com/keylesspalace/tusky/db/TimelineDaoTest.kt
index c60f7d4f..889e5f98 100644
--- a/app/src/test/java/com/keylesspalace/tusky/db/TimelineDaoTest.kt
+++ b/app/src/test/java/com/keylesspalace/tusky/db/TimelineDaoTest.kt
@@ -53,7 +53,7 @@ class TimelineDaoTest {
timelineDao.insertStatus(status)
}
- val pagingSource = timelineDao.getStatusesForAccount(setOne.first.timelineUserId)
+ val pagingSource = timelineDao.getStatuses(setOne.first.timelineUserId)
val loadResult = pagingSource.load(PagingSource.LoadParams.Refresh(null, 2, false))
@@ -96,7 +96,7 @@ class TimelineDaoTest {
val loadParams: PagingSource.LoadParams = PagingSource.LoadParams.Refresh(null, 100, false)
- val loadedStatuses = (timelineDao.getStatusesForAccount(1).load(loadParams) as PagingSource.LoadResult.Page).data
+ val loadedStatuses = (timelineDao.getStatuses(1).load(loadParams) as PagingSource.LoadResult.Page).data
assertStatuses(statusesAfterCleanup, loadedStatuses)
@@ -144,7 +144,8 @@ class TimelineDaoTest {
makeStatus(statusId = 1)
)
- timelineDao.deleteRange(1, newStatuses.last().first.serverId, newStatuses.first().first.serverId)
+ val deletedCount = timelineDao.deleteRange(1, newStatuses.last().first.serverId, newStatuses.first().first.serverId)
+ assertEquals(3, deletedCount)
for ((status, author, reblogAuthor) in newStatuses) {
timelineDao.insertAccount(author)
@@ -156,7 +157,7 @@ class TimelineDaoTest {
// make sure status 2 is no longer in db
- val pagingSource = timelineDao.getStatusesForAccount(1)
+ val pagingSource = timelineDao.getStatuses(1)
val loadResult = pagingSource.load(PagingSource.LoadParams.Refresh(null, 100, false))
@@ -169,9 +170,11 @@ class TimelineDaoTest {
fun deleteRange() = runBlocking {
val statuses = listOf(
makeStatus(statusId = 100),
+ makeStatus(statusId = 50),
makeStatus(statusId = 15),
makeStatus(statusId = 14),
makeStatus(statusId = 13),
+ makeStatus(statusId = 13, accountId = 2),
makeStatus(statusId = 12),
makeStatus(statusId = 11),
makeStatus(statusId = 9)
@@ -185,20 +188,31 @@ class TimelineDaoTest {
timelineDao.insertStatus(status)
}
- timelineDao.deleteRange(1, "12", "14")
+ assertEquals(3, timelineDao.deleteRange(1, "12", "14"))
+ assertEquals(0, timelineDao.deleteRange(1, "80", "80"))
+ assertEquals(0, timelineDao.deleteRange(1, "60", "80"))
+ assertEquals(0, timelineDao.deleteRange(1, "5", "8"))
+ assertEquals(0, timelineDao.deleteRange(1, "101", "1000"))
+ assertEquals(1, timelineDao.deleteRange(1, "50", "50"))
- val pagingSource = timelineDao.getStatusesForAccount(1)
- val loadResult = pagingSource.load(PagingSource.LoadParams.Refresh(null, 100, false))
- val loadedStatuses = (loadResult as PagingSource.LoadResult.Page).data
+ val loadParams: PagingSource.LoadParams = PagingSource.LoadParams.Refresh(null, 100, false)
- val remainingStatuses = listOf(
+ val statusesAccount1 = (timelineDao.getStatuses(1).load(loadParams) as PagingSource.LoadResult.Page).data
+ val statusesAccount2 = (timelineDao.getStatuses(2).load(loadParams) as PagingSource.LoadResult.Page).data
+
+ val remainingStatusesAccount1 = listOf(
makeStatus(statusId = 100),
makeStatus(statusId = 15),
makeStatus(statusId = 11),
makeStatus(statusId = 9)
)
- assertStatuses(remainingStatuses, loadedStatuses)
+ val remainingStatusesAccount2 = listOf(
+ makeStatus(statusId = 13, accountId = 2)
+ )
+
+ assertStatuses(remainingStatusesAccount1, statusesAccount1)
+ assertStatuses(remainingStatusesAccount2, statusesAccount2)
}
@Test
@@ -255,8 +269,8 @@ class TimelineDaoTest {
val loadParams: PagingSource.LoadParams = PagingSource.LoadParams.Refresh(null, 100, false)
- val statusesAccount1 = (timelineDao.getStatusesForAccount(1).load(loadParams) as PagingSource.LoadResult.Page).data
- val statusesAccount2 = (timelineDao.getStatusesForAccount(2).load(loadParams) as PagingSource.LoadResult.Page).data
+ val statusesAccount1 = (timelineDao.getStatuses(1).load(loadParams) as PagingSource.LoadResult.Page).data
+ val statusesAccount2 = (timelineDao.getStatuses(2).load(loadParams) as PagingSource.LoadResult.Page).data
assertStatuses(listOf(statusWithBlueDomain, statusWithGreenDomain), statusesAccount1)
assertStatuses(listOf(statusWithRedDomainOtherAccount, statusWithBlueDomainOtherAccount), statusesAccount2)
@@ -325,7 +339,7 @@ class TimelineDaoTest {
}
assertEquals("99", timelineDao.getNextPlaceholderIdAfter(1, "1000"))
- assertEquals("94", timelineDao.getNextPlaceholderIdAfter(1, "97"))
+ assertEquals("94", timelineDao.getNextPlaceholderIdAfter(1, "99"))
assertNull(timelineDao.getNextPlaceholderIdAfter(1, "90"))
}
@@ -364,28 +378,28 @@ class TimelineDaoTest {
domain: String = "mastodon.example"
): Triple {
val author = TimelineAccountEntity(
- authorServerId,
- accountId,
- "localUsername@$domain",
- "username@$domain",
- "displayName",
- "blah",
- "avatar",
- "[\"tusky\": \"http://tusky.cool/emoji.jpg\"]",
- false
+ serverId = authorServerId,
+ timelineUserId = accountId,
+ localUsername = "localUsername@$domain",
+ username = "username@$domain",
+ displayName = "displayName",
+ url = "blah",
+ avatar = "avatar",
+ emojis = "[\"tusky\": \"http://tusky.cool/emoji.jpg\"]",
+ bot = false
)
val reblogAuthor = if (reblog) {
TimelineAccountEntity(
- "R$authorServerId",
- accountId,
- "RlocalUsername",
- "Rusername",
- "RdisplayName",
- "Rblah",
- "Ravatar",
- "[]",
- false
+ serverId = "R$authorServerId",
+ timelineUserId = accountId,
+ localUsername = "RlocalUsername",
+ username = "Rusername",
+ displayName = "RdisplayName",
+ url = "Rblah",
+ avatar = "Ravatar",
+ emojis = "[]",
+ bot = false
)
} else null
@@ -410,6 +424,7 @@ class TimelineDaoTest {
visibility = Status.Visibility.PRIVATE,
attachments = "attachments$accountId",
mentions = "mentions$accountId",
+ tags = "tags$accountId",
application = "application$accountId",
reblogServerId = if (reblog) (statusId * 100).toString() else null,
reblogAccountId = reblogAuthor?.serverId,
diff --git a/app/src/test/java/com/keylesspalace/tusky/util/LinkHelperTest.kt b/app/src/test/java/com/keylesspalace/tusky/util/LinkHelperTest.kt
new file mode 100644
index 00000000..4a2cdc53
--- /dev/null
+++ b/app/src/test/java/com/keylesspalace/tusky/util/LinkHelperTest.kt
@@ -0,0 +1,143 @@
+package com.keylesspalace.tusky.util
+
+import android.text.SpannableStringBuilder
+import android.text.style.URLSpan
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.keylesspalace.tusky.entity.HashTag
+import com.keylesspalace.tusky.entity.Status
+import com.keylesspalace.tusky.interfaces.LinkListener
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.annotation.Config
+
+@Config(sdk = [28])
+@RunWith(AndroidJUnit4::class)
+class LinkHelperTest {
+ private val listener = object : LinkListener {
+ override fun onViewTag(tag: String) { }
+ override fun onViewAccount(id: String) { }
+ override fun onViewUrl(url: String) { }
+ }
+
+ private val mentions = listOf(
+ Status.Mention("1", "https://example.com/@user", "user", "user"),
+ Status.Mention("2", "https://example.com/@anotherUser", "anotherUser", "anotherUser"),
+ )
+ private val tags = listOf(
+ HashTag("Tusky", "https://example.com/Tags/Tusky"),
+ HashTag("mastodev", "https://example.com/Tags/mastodev"),
+ )
+
+ @Test
+ fun whenSettingClickableText_mentionUrlsArePreserved() {
+ val builder = SpannableStringBuilder()
+ for (mention in mentions) {
+ builder.append("@${mention.username}", URLSpan(mention.url), 0)
+ builder.append(" ")
+ }
+
+ var urlSpans = builder.getSpans(0, builder.length, URLSpan::class.java)
+ for (span in urlSpans) {
+ setClickableText(span, builder, mentions, null, listener)
+ }
+
+ urlSpans = builder.getSpans(0, builder.length, URLSpan::class.java)
+ for (span in urlSpans) {
+ Assert.assertNotNull(mentions.firstOrNull { it.url == span.url })
+ }
+ }
+
+ @Test
+ fun whenSettingClickableText_nonMentionsAreNotConvertedToMentions() {
+ val builder = SpannableStringBuilder()
+ val nonMentionUrl = "http://example.com/"
+ for (mention in mentions) {
+ builder.append("@${mention.username}", URLSpan(nonMentionUrl), 0)
+ builder.append(" ")
+ builder.append("@${mention.username} ")
+ }
+
+ var urlSpans = builder.getSpans(0, builder.length, URLSpan::class.java)
+ for (span in urlSpans) {
+ setClickableText(span, builder, mentions, null, listener)
+ }
+
+ urlSpans = builder.getSpans(0, builder.length, URLSpan::class.java)
+ for (span in urlSpans) {
+ Assert.assertEquals(nonMentionUrl, span.url)
+ }
+ }
+
+ @Test
+ fun whenCheckingTags_tagNameIsComparedCaseInsensitively() {
+ for (tag in tags) {
+ for (mutatedTagName in listOf(tag.name, tag.name.uppercase(), tag.name.lowercase())) {
+ val tagName = getTagName("#$mutatedTagName", tags)
+ Assert.assertNotNull(tagName)
+ Assert.assertNotNull(tags.firstOrNull { it.name == tagName })
+ }
+ }
+ }
+
+ @Test
+ fun hashedUrlSpans_withNoMatchingTag_areNotModified() {
+ for (tag in tags) {
+ Assert.assertNull(getTagName("#not${tag.name}", tags))
+ }
+ }
+
+ @Test
+ fun whenTagsAreNull_tagNameIsGeneratedFromText() {
+ for (tag in tags) {
+ Assert.assertEquals(tag.name, getTagName("#${tag.name}", null))
+ }
+ }
+
+ @Test
+ fun whenStringIsInvalidUri_emptyStringIsReturnedFromGetDomain() {
+ listOf(
+ null,
+ "foo bar baz",
+ "http:/foo.bar",
+ "c:/foo/bar",
+ ).forEach {
+ Assert.assertEquals("", getDomain(it))
+ }
+ }
+
+ @Test
+ fun whenUrlIsValid_correctDomainIsReturned() {
+ listOf(
+ "example.com",
+ "localhost",
+ "sub.domain.com",
+ "10.45.0.123",
+ ).forEach { domain ->
+ listOf(
+ "https://$domain",
+ "https://$domain/",
+ "https://$domain/foo/bar",
+ "https://$domain/foo/bar.html",
+ "https://$domain/foo/bar.html#",
+ "https://$domain/foo/bar.html#anchor",
+ "https://$domain/foo/bar.html?argument=value",
+ "https://$domain/foo/bar.html?argument=value&otherArgument=otherValue",
+ ).forEach { url ->
+ Assert.assertEquals(domain, getDomain(url))
+ }
+ }
+ }
+
+ @Test
+ fun wwwPrefixIsStrippedFromGetDomain() {
+ mapOf(
+ "https://www.example.com/foo/bar" to "example.com",
+ "https://awww.example.com/foo/bar" to "awww.example.com",
+ "http://www.localhost" to "localhost",
+ "https://wwwexample.com/" to "wwwexample.com",
+ ).forEach { (url, domain) ->
+ Assert.assertEquals(domain, getDomain(url))
+ }
+ }
+}
diff --git a/build.gradle b/build.gradle
index 18b1872a..c9311701 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ buildscript {
gradlePluginPortal()
}
dependencies {
- classpath "com.android.tools.build:gradle:7.0.4"
+ classpath "com.android.tools.build:gradle:7.1.2"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jlleitschuh.gradle:ktlint-gradle:10.1.0"
}
diff --git a/fastlane/metadata/android/en-US/changelogs/89.txt b/fastlane/metadata/android/en-US/changelogs/89.txt
new file mode 100644
index 00000000..4b666c35
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/89.txt
@@ -0,0 +1,7 @@
+Tusky v17.0
+
+- "Open as..." is now also available in the menu on account profiles when using multiple accounts
+- Login is now handled in a WebView within the app
+- Support for Android 12
+- support for the new Mastodon instance configuration API
+- and a lot of other small fixes and improvements
diff --git a/fastlane/metadata/android/gd/short_description.txt b/fastlane/metadata/android/gd/short_description.txt
new file mode 100644
index 00000000..e811ef87
--- /dev/null
+++ b/fastlane/metadata/android/gd/short_description.txt
@@ -0,0 +1 @@
+Cliant do dh’iomadh cunntas san lìonra sòisealta Mastodon
diff --git a/fastlane/metadata/android/gd/title.txt b/fastlane/metadata/android/gd/title.txt
new file mode 100644
index 00000000..0238ffc0
--- /dev/null
+++ b/fastlane/metadata/android/gd/title.txt
@@ -0,0 +1 @@
+Tusky
diff --git a/fastlane/metadata/android/gl/changelogs/87.txt b/fastlane/metadata/android/gl/changelogs/87.txt
new file mode 100644
index 00000000..1a7e99d1
--- /dev/null
+++ b/fastlane/metadata/android/gl/changelogs/87.txt
@@ -0,0 +1,8 @@
+Tusky v16.0
+
+- Cambiamos completamente a lóxica de carga da cronoloxía para facela máis rápida, con menos fallos e doada de manter.
+- Tusky pode animar os emojis personalizados en APNG & formato WebP Animado.
+- Arranxamos moitos problemas.
+- Soporte para Android 11
+- Novas traducións: Gaélico de Escocia, Galego, Ucraíno
+- Mellora nas traducións
diff --git a/fastlane/metadata/android/gl/changelogs/89.txt b/fastlane/metadata/android/gl/changelogs/89.txt
new file mode 100644
index 00000000..238ea8c6
--- /dev/null
+++ b/fastlane/metadata/android/gl/changelogs/89.txt
@@ -0,0 +1,7 @@
+Tusky v17.0
+
+- "Abrir como..." agora está dispoñible no menú dos perfís da conta ao usar varias contas
+- O Acceso agora xestionase mediante WebView dentro da app
+- Soporte para Android 12
+- Soporte para a nova cofiguración da API das instancias de Mastodon
+- e un feixe de pequenas melloras e arranxos
diff --git a/fastlane/metadata/android/gl/full_description.txt b/fastlane/metadata/android/gl/full_description.txt
index 53a8794f..792dd844 100644
--- a/fastlane/metadata/android/gl/full_description.txt
+++ b/fastlane/metadata/android/gl/full_description.txt
@@ -2,11 +2,11 @@ Tusky é un cliente lixeiro para Mastodon, o servidor para redes sociais libres
• Material Design
• Maioría das APIs de Mastodon implementadas
-• Soporte multi-conta.
-• Decorado escuro e claro coa posibilidade de cambio automático según a hora do día
-• Borradores - compoñer toots e gardalos para máis tarde
-• Escoller entre varios estilos de emoji
-• Optimizado para tódolos tamaños de pantalla
+• Soporte multi-conta
+• Decorado escuro e claro coa posibilidade de cambio automático segundo a hora do día
+• Borradores - compoñer toots e gardalos para máis tarde
+• Escoller entre varios estilos de emoji
+• Optimizado para tódolos tamaños de pantalla
• Completamente de código aberto - sen dependencias non-libres como os servizos de Google
Coñece máis acerca de Mastodon, visita visit https://joinmastodon.org/
diff --git a/fastlane/metadata/android/it/changelogs/67.txt b/fastlane/metadata/android/it/changelogs/67.txt
index 3ee9dcc1..4838137a 100644
--- a/fastlane/metadata/android/it/changelogs/67.txt
+++ b/fastlane/metadata/android/it/changelogs/67.txt
@@ -1,9 +1,9 @@
Tusky v9.0
-- Si possono creare sondaggi da Tusky
+- Ora puoi creare sondaggi da Tusky
- Ricerca migliorata
-- Nuova opzione nelle preferenze utente per espandere sempre i contenuti sensibili
-- Le icone di navigazione hanno ora una forma quadrata arrotondata
-- È ora possibile segnalare gli utenti anche prima che pubblichino nulla
-- Tusky ora si rifiuterà di connettersi attraverso connessioni non cifrate su Android 6+
-- Molti altri piccoli miglioramenti e correzioni di errori
+- Nuova opzione in Preferenze Account per espandere sempre i contenuti sensibili
+- Gli avatar nel cassetto di navigazione ora hanno una forma quadrata arrotondata
+- Ora è possibile segnalare gli utenti anche quando non hanno mai pubblicato uno stato
+- Tusky ora rifiuterà di connettersi tramite connessioni in chiaro su Android 6+
+- Molti altri piccoli miglioramenti e correzioni di bug
diff --git a/fastlane/metadata/android/it/changelogs/68.txt b/fastlane/metadata/android/it/changelogs/68.txt
index 645fb39c..d029ac61 100644
--- a/fastlane/metadata/android/it/changelogs/68.txt
+++ b/fastlane/metadata/android/it/changelogs/68.txt
@@ -1,3 +1,3 @@
Tusky v9.1
-Questa versione è compatibile con Mastodon 3 e migliora prestazioni e stabilità.
+Questa versione assicura la compatibiliità con Mastodon 3 e migliora prestazioni e stabilità.
diff --git a/fastlane/metadata/android/it/changelogs/77.txt b/fastlane/metadata/android/it/changelogs/77.txt
index 6aea3a17..e8ce24b4 100644
--- a/fastlane/metadata/android/it/changelogs/77.txt
+++ b/fastlane/metadata/android/it/changelogs/77.txt
@@ -4,7 +4,7 @@ Tusky v13.0
- supporto per gli annunci dell'amministratore (funzionalità di Mastodon 3.1.0)
- l'avatar del tuo account selezionato verrà ora mostrato nella barra degli strumenti principale
-- facendo clic sul nome visualizzato in una sequenza temporale si aprirà ora la pagina del profilo di quell'utente
+- facendo clic sul nome visualizzato in una timeline si aprirà ora la pagina del profilo di quell'utente
- molte correzioni di bug e piccoli miglioramenti
- traduzioni migliorate
diff --git a/fastlane/metadata/android/it/full_description.txt b/fastlane/metadata/android/it/full_description.txt
index 957a2006..60c750d3 100644
--- a/fastlane/metadata/android/it/full_description.txt
+++ b/fastlane/metadata/android/it/full_description.txt
@@ -1,12 +1,12 @@
-Chinwag Social è un client leggero per Mastodon, un server gratuito e open-source per social network.
+Chinwag Social è un client leggero per Mastodon, un server di social network libero e open source.
-• "Material Design"
-• Implementa la maggior parte delle API di Mastodon
-• Supporta più utenti simultanei
-• Temi scuro e chiaro con possibilità di transizione automatica in base all'ora del giorno
-• Bozze - per comporre i toots e conservarli per dopo
-• Scelta tra diversi stili di emoji
-• Ottimizzato per tutte le dimensioni di schermo
-• Completamente open-source - nessuna dipendenza non libera es. servizi Google
+• Material Design
+• Implementa la maggior parte delle API di Mastodon
+• Supporto multi-account
+• Tema scuro e chiaro con possibilità di modificarlo automaticamente in base all'ora del giorno
+• Bozze - componi i toots e salvali per dopo
+• Scegli tra diversi stili di emoji
+• Ottimizzato per gli schermi di tutte le dimensioni
+• Completamente open source - nessuna dipendenza non libera come i servizi di Google
Per saperne di più su Mastodon, visita https://joinmastodon.org/
diff --git a/fastlane/metadata/android/nb-NO/changelogs/89.txt b/fastlane/metadata/android/nb-NO/changelogs/89.txt
new file mode 100644
index 00000000..af8e6e6c
--- /dev/null
+++ b/fastlane/metadata/android/nb-NO/changelogs/89.txt
@@ -0,0 +1,7 @@
+Tusky v17.0
+
+- "Åpne som..." er nå også tilgjengelig i profil-menyen når flere profiler er i bruk
+- Innlogging blir nå gjort ved hjelp av WebView i applikasjonen
+- Støtte for Android 12
+- Støtte for Mastodons nye instanskonfigurasjons-APIet
+- og mange andre små fikser og forbedringer
diff --git a/fastlane/metadata/android/pl/changelogs/87.txt b/fastlane/metadata/android/pl/changelogs/87.txt
new file mode 100644
index 00000000..2b8d41f6
--- /dev/null
+++ b/fastlane/metadata/android/pl/changelogs/87.txt
@@ -0,0 +1,8 @@
+Tusky v16.0
+
+- Logika ładowania osi czasu została przepisana w celu przyspieszenia jej i naprawienia błędów.
+- Tusky wspiera teraz animowane emotikony w formatach APNG i Animated WebP.
+- Mnóstwo poprawek
+- Wsparcie dla Androida 11
+- Nowe tłumaczenia: Gaelicki szkocki, galicyjski, ukraiński
+- Ulepszone tłumaczenia
diff --git a/fastlane/metadata/android/pt-BR/changelogs/58.txt b/fastlane/metadata/android/pt-BR/changelogs/58.txt
index b6902754..f3659695 100644
--- a/fastlane/metadata/android/pt-BR/changelogs/58.txt
+++ b/fastlane/metadata/android/pt-BR/changelogs/58.txt
@@ -1,12 +1,12 @@
Tusky v6.0
-- Filtros de timeline movidos para "Preferências da conta" e vai sincronizar com servidor
+- Filtros de timeline movidos para "Preferências da conta" sincronizando com servidor
- Agora você pode ter uma hashtag personalizada como aba
- Suporte a edição de listas
- O compositor vai sugerir emojis personalizados ao digitar
- Nova configuração de tema "seguir tema do sistema"
- Acessibilidade da timeline melhorada
-- Tusky agora vai ignorar notificações desconhecidas
-- Nova opção: Idioma pessoal do Tusky
+- Notificações desconhecidas serão ignoradas
+- Nova opção: substituir o idioma do sistema por outro
- Novas traduções: Tcheco e Esperanto
- Muitas outras melhorias
diff --git a/fastlane/metadata/android/pt-BR/changelogs/61.txt b/fastlane/metadata/android/pt-BR/changelogs/61.txt
index 0bfbe98f..cab6f171 100644
--- a/fastlane/metadata/android/pt-BR/changelogs/61.txt
+++ b/fastlane/metadata/android/pt-BR/changelogs/61.txt
@@ -4,4 +4,4 @@ Tusky v7.0
- Novos botões para filtrar notificações e excluí-las
- Exclua e rascunhe seus toots
- Novo indicador que mostra na foto de perfil se uma conta é um robô (pode ser desativado nas preferências)
-- Novas traduções: Norueguês Bokmål e Esloveno
+- Novas traduções: Norueguês Bokmål e Esloveno.
diff --git a/fastlane/metadata/android/pt-BR/changelogs/72.txt b/fastlane/metadata/android/pt-BR/changelogs/72.txt
index 3fa55d5a..39233346 100644
--- a/fastlane/metadata/android/pt-BR/changelogs/72.txt
+++ b/fastlane/metadata/android/pt-BR/changelogs/72.txt
@@ -2,9 +2,9 @@ Tusky v11.0
- Notificações de seguidores pendentes quando a conta está trancada! FINALMENTE, POVO!
- Novas funcionalidades na aba de preferências:
- - desativar gesto que alterna entre abas
- - diálogo de confirmação antes de dar boost
- - mostrar ou não prévia de links nas linhas alheias
+ * desativar gesto que alterna entre abas
+ * diálogo de confirmação antes de dar boost
+ * mostrar ou não prévia de links nas linhas alheias
- Conversas agora podem ser silenciadas
- Enquetes agora serão calculadas por número de votantes, o que facilitará o entendimento das enquetes de múltiplas opções
- E algumas correções a mais
diff --git a/fastlane/metadata/android/pt-BR/changelogs/87.txt b/fastlane/metadata/android/pt-BR/changelogs/87.txt
new file mode 100644
index 00000000..afe18498
--- /dev/null
+++ b/fastlane/metadata/android/pt-BR/changelogs/87.txt
@@ -0,0 +1,8 @@
+Tusky v16.0
+
+- A lógica de carregamento da linha do tempo foi completamente reescrita para ser mais rápida, menos bugada e mais fácil de manter.
+- Tusky pode agora animar emojis personalizados no formato APNG & WebP Animated.
+- Muitas correções de bugs
+- Suporte para Android 11
+- Novas traduções: gaélico escocês, galego, ucraniano
+- Traduções melhoradas
diff --git a/fastlane/metadata/android/uk/changelogs/89.txt b/fastlane/metadata/android/uk/changelogs/89.txt
new file mode 100644
index 00000000..fbed5e83
--- /dev/null
+++ b/fastlane/metadata/android/uk/changelogs/89.txt
@@ -0,0 +1,7 @@
+Tusky v17.0
+
+- «Відкрити як...» тепер також доступно в меню профілів облікових записів за користування кількома обліковими записами
+- Тепер вхід обробляється у WebView у застосунку
+- Підтримка Android 12
+- підтримка нового API конфігурації сервера Mastodon
+- і багато інших дрібних виправлень і вдосконалень
diff --git a/fastlane/metadata/android/vi/changelogs/89.txt b/fastlane/metadata/android/vi/changelogs/89.txt
new file mode 100644
index 00000000..c77487c7
--- /dev/null
+++ b/fastlane/metadata/android/vi/changelogs/89.txt
@@ -0,0 +1,7 @@
+Tusky v17.0
+
+- Hiện "Mở bằng..." trong menu Tài khoản kể cả khi dùng nhiều tài khoản
+- Hiện đăng nhập bằng WebView ngay trong app
+- Hỗ trợ Android 12
+- Hỗ trợ thiết lập API máy chủ Mastodon mới
+- Sửa lỗi nhỏ và cải thiện
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index e708b1c0..7454180f 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 669386b8..d7e66b5c 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 4f906e0c..3da45c16 100755
--- a/gradlew
+++ b/gradlew
@@ -1,7 +1,7 @@
-#!/usr/bin/env sh
+#!/bin/sh
#
-# Copyright 2015 the original author or authors.
+# Copyright ? 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,67 +17,101 @@
#
##############################################################################
-##
-## Gradle start up script for UN*X
-##
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions ?$var?, ?${var}?, ?${var:-default}?, ?${var+SET}?,
+# ?${var#prefix}?, ?${var%suffix}?, and ?$( cmd )?;
+# * compound commands having a testable exit status, especially ?case?;
+# * various built-in commands including ?command?, ?set?, and ?ulimit?.
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
##############################################################################
# Attempt to set APP_HOME
+
# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
+
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
+APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
+MAX_FD=maximum
warn () {
echo "$*"
-}
+} >&2
die () {
echo
echo "$*"
echo
exit 1
-}
+} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACMD=$JAVA_HOME/jre/sh/java
else
- JAVACMD="$JAVA_HOME/bin/java"
+ JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
- JAVACMD="java"
+ JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
@@ -106,80 +140,95 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=`expr $i + 1`
- done
- case $i in
- 0) set -- ;;
- 1) set -- "$args0" ;;
- 2) set -- "$args0" "$args1" ;;
- 3) set -- "$args0" "$args1" "$args2" ;;
- 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=`save "$@"`
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
+ fi
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
+ done
+fi
+
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
exec "$JAVACMD" "$@"