Merge commit '0f1e95d0ca81d0254f8d1ae6b60a3130d51b15cf'
This commit is contained in:
commit
0ef03e2bec
|
@ -2,7 +2,7 @@
|
|||
"formatVersion": 1,
|
||||
"database": {
|
||||
"version": 35,
|
||||
"identityHash": "60458dd94b60b1b86f7759420340f707",
|
||||
"identityHash": "6714e8c4ae8f64bcd1e65ef6d8a3f958",
|
||||
"entities": [
|
||||
{
|
||||
"tableName": "DraftEntity",
|
||||
|
@ -359,7 +359,7 @@
|
|||
},
|
||||
{
|
||||
"tableName": "TimelineStatusEntity",
|
||||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`serverId` TEXT NOT NULL, `url` TEXT, `timelineUserId` INTEGER NOT NULL, `authorServerId` TEXT, `inReplyToId` TEXT, `inReplyToAccountId` TEXT, `content` TEXT, `createdAt` INTEGER NOT NULL, `emojis` TEXT, `reblogsCount` INTEGER NOT NULL, `favouritesCount` INTEGER NOT NULL, `reblogged` INTEGER NOT NULL, `bookmarked` INTEGER NOT NULL, `favourited` INTEGER NOT NULL, `sensitive` INTEGER NOT NULL, `spoilerText` TEXT NOT NULL, `visibility` INTEGER NOT NULL, `attachments` TEXT, `mentions` TEXT, `tags` TEXT, `application` TEXT, `reblogServerId` TEXT, `reblogAccountId` TEXT, `poll` TEXT, `muted` INTEGER, `expanded` INTEGER NOT NULL, `contentCollapsed` INTEGER NOT NULL, `contentShowing` INTEGER NOT NULL, `pinned` INTEGER NOT NULL, `quote` TEXT, PRIMARY KEY(`serverId`, `timelineUserId`), FOREIGN KEY(`authorServerId`, `timelineUserId`) REFERENCES `TimelineAccountEntity`(`serverId`, `timelineUserId`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
|
||||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`serverId` TEXT NOT NULL, `url` TEXT, `timelineUserId` INTEGER NOT NULL, `authorServerId` TEXT, `inReplyToId` TEXT, `inReplyToAccountId` TEXT, `content` TEXT, `createdAt` INTEGER NOT NULL, `emojis` TEXT, `reblogsCount` INTEGER NOT NULL, `favouritesCount` INTEGER NOT NULL, `reblogged` INTEGER NOT NULL, `bookmarked` INTEGER NOT NULL, `favourited` INTEGER NOT NULL, `sensitive` INTEGER NOT NULL, `spoilerText` TEXT NOT NULL, `visibility` INTEGER NOT NULL, `attachments` TEXT, `mentions` TEXT, `tags` TEXT, `application` TEXT, `reblogServerId` TEXT, `reblogAccountId` TEXT, `poll` TEXT, `muted` INTEGER, `expanded` INTEGER NOT NULL, `contentCollapsed` INTEGER NOT NULL, `contentShowing` INTEGER NOT NULL, `pinned` INTEGER NOT NULL, `card` TEXT, `quote` TEXT, PRIMARY KEY(`serverId`, `timelineUserId`), FOREIGN KEY(`authorServerId`, `timelineUserId`) REFERENCES `TimelineAccountEntity`(`serverId`, `timelineUserId`) ON UPDATE NO ACTION ON DELETE NO ACTION )",
|
||||
"fields": [
|
||||
{
|
||||
"fieldPath": "serverId",
|
||||
|
@ -535,6 +535,12 @@
|
|||
"affinity": "INTEGER",
|
||||
"notNull": true
|
||||
},
|
||||
{
|
||||
"fieldPath": "card",
|
||||
"columnName": "card",
|
||||
"affinity": "TEXT",
|
||||
"notNull": false
|
||||
},
|
||||
{
|
||||
"fieldPath": "quote",
|
||||
"columnName": "quote",
|
||||
|
@ -815,7 +821,7 @@
|
|||
"views": [],
|
||||
"setupQueries": [
|
||||
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
|
||||
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '60458dd94b60b1b86f7759420340f707')"
|
||||
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '6714e8c4ae8f64bcd1e65ef6d8a3f958')"
|
||||
]
|
||||
}
|
||||
}
|
|
@ -19,7 +19,6 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.emoji2.text.EmojiCompat
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.keylesspalace.tusky.R
|
||||
import com.keylesspalace.tusky.databinding.ItemPollBinding
|
||||
|
@ -87,9 +86,8 @@ class PollAdapter : RecyclerView.Adapter<BindingHolder<ItemPollBinding>>() {
|
|||
when (mode) {
|
||||
RESULT -> {
|
||||
val percent = calculatePercent(option.votesCount, votersCount, voteCount)
|
||||
val emojifiedPollOptionText = buildDescription(option.title, percent, option.voted, resultTextView.context)
|
||||
resultTextView.text = buildDescription(option.title, percent, option.voted, resultTextView.context)
|
||||
.emojify(emojis, resultTextView, animateEmojis)
|
||||
resultTextView.text = EmojiCompat.get().process(emojifiedPollOptionText)
|
||||
|
||||
val level = percent * 100
|
||||
val optionColor = if (option.voted) {
|
||||
|
@ -103,8 +101,7 @@ class PollAdapter : RecyclerView.Adapter<BindingHolder<ItemPollBinding>>() {
|
|||
resultTextView.setOnClickListener(resultClickListener)
|
||||
}
|
||||
SINGLE -> {
|
||||
val emojifiedPollOptionText = option.title.emojify(emojis, radioButton, animateEmojis)
|
||||
radioButton.text = EmojiCompat.get().process(emojifiedPollOptionText)
|
||||
radioButton.text = option.title.emojify(emojis, radioButton, animateEmojis)
|
||||
radioButton.isChecked = option.selected
|
||||
radioButton.setOnClickListener {
|
||||
pollOptions.forEachIndexed { index, pollOption ->
|
||||
|
@ -114,8 +111,7 @@ class PollAdapter : RecyclerView.Adapter<BindingHolder<ItemPollBinding>>() {
|
|||
}
|
||||
}
|
||||
MULTIPLE -> {
|
||||
val emojifiedPollOptionText = option.title.emojify(emojis, checkBox, animateEmojis)
|
||||
checkBox.text = EmojiCompat.get().process(emojifiedPollOptionText)
|
||||
checkBox.text = option.title.emojify(emojis, checkBox, animateEmojis)
|
||||
checkBox.isChecked = option.selected
|
||||
checkBox.setOnCheckedChangeListener { _, isChecked ->
|
||||
pollOptions[holder.bindingAdapterPosition].selected = isChecked
|
||||
|
|
|
@ -37,7 +37,6 @@ import androidx.core.view.WindowCompat
|
|||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.WindowInsetsCompat.Type.systemBars
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.emoji2.text.EmojiCompat
|
||||
import androidx.preference.PreferenceManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.viewpager2.widget.MarginPageTransformer
|
||||
|
@ -464,14 +463,7 @@ class AccountActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidI
|
|||
*/
|
||||
private fun updateToolbar() {
|
||||
loadedAccount?.let { account ->
|
||||
|
||||
val emojifiedName = account.name.emojify(account.emojis, binding.accountToolbar, animateEmojis)
|
||||
|
||||
try {
|
||||
supportActionBar?.title = EmojiCompat.get().process(emojifiedName)
|
||||
} catch (e: IllegalStateException) {
|
||||
supportActionBar?.title = emojifiedName
|
||||
}
|
||||
supportActionBar?.title = account.name.emojify(account.emojis, binding.accountToolbar, animateEmojis)
|
||||
supportActionBar?.subtitle = String.format(getString(R.string.post_username_format), account.username)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,6 +53,7 @@ import androidx.core.view.OnReceiveContentListener
|
|||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.widget.doAfterTextChanged
|
||||
import androidx.lifecycle.asLiveData
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.preference.PreferenceManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
|
@ -398,14 +399,17 @@ class ComposeActivity :
|
|||
viewModel.statusVisibility.observe { visibility ->
|
||||
setStatusVisibility(visibility)
|
||||
}
|
||||
viewModel.media.observe { media ->
|
||||
mediaAdapter.submitList(media)
|
||||
if (media.size != mediaCount) {
|
||||
mediaCount = media.size
|
||||
binding.composeMediaPreviewBar.visible(media.isNotEmpty())
|
||||
updateSensitiveMediaToggle(viewModel.markMediaAsSensitive.value != false, viewModel.showContentWarning.value != false)
|
||||
lifecycleScope.launch {
|
||||
viewModel.media.collect { media ->
|
||||
mediaAdapter.submitList(media)
|
||||
if (media.size != mediaCount) {
|
||||
mediaCount = media.size
|
||||
binding.composeMediaPreviewBar.visible(media.isNotEmpty())
|
||||
updateSensitiveMediaToggle(viewModel.markMediaAsSensitive.value != false, viewModel.showContentWarning.value != false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.poll.observe { poll ->
|
||||
binding.pollPreview.visible(poll != null)
|
||||
poll?.let(binding.pollPreview::setPoll)
|
||||
|
@ -418,7 +422,7 @@ class ComposeActivity :
|
|||
}
|
||||
updateScheduleButton()
|
||||
}
|
||||
combineOptionalLiveData(viewModel.media, viewModel.poll) { media, poll ->
|
||||
combineOptionalLiveData(viewModel.media.asLiveData(), viewModel.poll) { media, poll ->
|
||||
val active = poll == null &&
|
||||
media!!.size != 4 &&
|
||||
(media.isEmpty() || media.first().type == QueuedMedia.Type.IMAGE)
|
||||
|
@ -858,7 +862,7 @@ class ComposeActivity :
|
|||
spoilerText = binding.composeContentWarningField.text.toString()
|
||||
}
|
||||
val characterCount = calculateTextLength()
|
||||
if ((characterCount <= 0 || contentText.isBlank()) && viewModel.media.value!!.isEmpty()) {
|
||||
if ((characterCount <= 0 || contentText.isBlank()) && viewModel.media.value.isEmpty()) {
|
||||
binding.composeEditField.error = getString(R.string.error_empty)
|
||||
enableButtons(true)
|
||||
} else if (characterCount <= maximumTootCharacters) {
|
||||
|
@ -866,7 +870,7 @@ class ComposeActivity :
|
|||
contentText += " ${binding.editTextDefaultText.text}"
|
||||
}
|
||||
|
||||
if (viewModel.media.value!!.isNotEmpty()) {
|
||||
if (viewModel.media.value.isNotEmpty()) {
|
||||
finishingUploadDialog = ProgressDialog.show(
|
||||
this, getString(R.string.dialog_title_finishing_media_upload),
|
||||
getString(R.string.dialog_message_uploading_media), true, true
|
||||
|
@ -1044,8 +1048,19 @@ class ComposeActivity :
|
|||
}
|
||||
|
||||
private fun saveDraftAndFinish(contentText: String, contentWarning: String) {
|
||||
viewModel.saveDraft(contentText, contentWarning)
|
||||
finishWithoutSlideOutAnimation()
|
||||
lifecycleScope.launch {
|
||||
val dialog = if (viewModel.shouldShowSaveDraftDialog()) {
|
||||
ProgressDialog.show(
|
||||
this@ComposeActivity, null,
|
||||
getString(R.string.saving_draft), true, false
|
||||
)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
viewModel.saveDraft(contentText, contentWarning)
|
||||
dialog?.cancel()
|
||||
finishWithoutSlideOutAnimation()
|
||||
}
|
||||
}
|
||||
|
||||
override fun search(token: String): List<ComposeAutoCompleteAdapter.AutocompleteResult> {
|
||||
|
@ -1064,7 +1079,7 @@ class ComposeActivity :
|
|||
}
|
||||
|
||||
data class QueuedMedia(
|
||||
val localId: Long,
|
||||
val localId: Int,
|
||||
val uri: Uri,
|
||||
val type: Type,
|
||||
val mediaSize: Long,
|
||||
|
|
|
@ -21,6 +21,7 @@ import androidx.core.net.toUri
|
|||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.asLiveData
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.keylesspalace.tusky.components.compose.ComposeActivity.QueuedMedia
|
||||
import com.keylesspalace.tusky.components.drafts.DraftHelper
|
||||
|
@ -36,15 +37,17 @@ import com.keylesspalace.tusky.network.MastodonApi
|
|||
import com.keylesspalace.tusky.service.ServiceClient
|
||||
import com.keylesspalace.tusky.service.StatusToSend
|
||||
import com.keylesspalace.tusky.util.combineLiveData
|
||||
import com.keylesspalace.tusky.util.filter
|
||||
import com.keylesspalace.tusky.util.map
|
||||
import com.keylesspalace.tusky.util.randomAlphanumericString
|
||||
import com.keylesspalace.tusky.util.toLiveData
|
||||
import com.keylesspalace.tusky.util.withoutFirstWhich
|
||||
import io.reactivex.rxjava3.core.Observable
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.catch
|
||||
import kotlinx.coroutines.flow.filter
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.flow.updateAndGet
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.rx3.rxSingle
|
||||
import kotlinx.coroutines.withContext
|
||||
|
@ -87,12 +90,12 @@ class ComposeViewModel @Inject constructor(
|
|||
val poll: MutableLiveData<NewPoll?> = mutableLiveData(null)
|
||||
val scheduledAt: MutableLiveData<String?> = mutableLiveData(null)
|
||||
|
||||
val media = mutableLiveData<List<QueuedMedia>>(listOf())
|
||||
val media: MutableStateFlow<List<QueuedMedia>> = MutableStateFlow(emptyList())
|
||||
val uploadError = MutableLiveData<Throwable>()
|
||||
|
||||
val domain = accountManager.activeAccount?.domain!!
|
||||
|
||||
private val mediaToJob = mutableMapOf<Long, Job>()
|
||||
private val mediaToJob = mutableMapOf<Int, Job>()
|
||||
|
||||
private val isEditingScheduledToot get() = !scheduledTootId.isNullOrEmpty()
|
||||
|
||||
|
@ -114,7 +117,7 @@ class ComposeViewModel @Inject constructor(
|
|||
suspend fun pickMedia(mediaUri: Uri, description: String? = null): Result<QueuedMedia> = withContext(Dispatchers.IO) {
|
||||
try {
|
||||
val (type, uri, size) = mediaUploader.prepareMedia(mediaUri)
|
||||
val mediaItems = media.value!!
|
||||
val mediaItems = media.value
|
||||
if (type != QueuedMedia.Type.IMAGE &&
|
||||
mediaItems.isNotEmpty() &&
|
||||
mediaItems[0].type == QueuedMedia.Type.IMAGE
|
||||
|
@ -129,29 +132,31 @@ class ComposeViewModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun addMediaToQueue(
|
||||
private suspend fun addMediaToQueue(
|
||||
type: QueuedMedia.Type,
|
||||
uri: Uri,
|
||||
mediaSize: Long,
|
||||
description: String? = null
|
||||
): QueuedMedia {
|
||||
val mediaItem = QueuedMedia(
|
||||
localId = System.currentTimeMillis(),
|
||||
uri = uri,
|
||||
type = type,
|
||||
mediaSize = mediaSize,
|
||||
description = description
|
||||
)
|
||||
media.postValue(media.value!! + mediaItem)
|
||||
val mediaItem = media.updateAndGet { mediaValue ->
|
||||
val mediaItem = QueuedMedia(
|
||||
localId = (mediaValue.maxOfOrNull { it.localId } ?: 0) + 1,
|
||||
uri = uri,
|
||||
type = type,
|
||||
mediaSize = mediaSize,
|
||||
description = description
|
||||
)
|
||||
mediaValue + mediaItem
|
||||
}.last()
|
||||
mediaToJob[mediaItem.localId] = viewModelScope.launch {
|
||||
mediaUploader
|
||||
.uploadMedia(mediaItem)
|
||||
.catch { error ->
|
||||
media.postValue(media.value?.filter { it.localId != mediaItem.localId } ?: emptyList())
|
||||
media.update { mediaValue -> mediaValue.filter { it.localId != mediaItem.localId } }
|
||||
uploadError.postValue(error)
|
||||
}
|
||||
.collect { event ->
|
||||
val item = media.value?.find { it.localId == mediaItem.localId }
|
||||
val item = media.value.find { it.localId == mediaItem.localId }
|
||||
?: return@collect
|
||||
val newMediaItem = when (event) {
|
||||
is UploadEvent.ProgressEvent ->
|
||||
|
@ -159,16 +164,14 @@ class ComposeViewModel @Inject constructor(
|
|||
is UploadEvent.FinishedEvent ->
|
||||
item.copy(id = event.mediaId, uploadPercent = -1)
|
||||
}
|
||||
synchronized(media) {
|
||||
val mediaValue = media.value!!
|
||||
val index = mediaValue.indexOfFirst { it.localId == newMediaItem.localId }
|
||||
media.postValue(
|
||||
if (index == -1) {
|
||||
mediaValue + newMediaItem
|
||||
media.update { mediaValue ->
|
||||
mediaValue.map { mediaItem ->
|
||||
if (mediaItem.localId == newMediaItem.localId) {
|
||||
newMediaItem
|
||||
} else {
|
||||
mediaValue.toMutableList().also { it[index] = newMediaItem }
|
||||
mediaItem
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -176,13 +179,23 @@ class ComposeViewModel @Inject constructor(
|
|||
}
|
||||
|
||||
private fun addUploadedMedia(id: String, type: QueuedMedia.Type, uri: Uri, description: String?) {
|
||||
val mediaItem = QueuedMedia(System.currentTimeMillis(), uri, type, 0, -1, id, description)
|
||||
media.value = media.value!! + mediaItem
|
||||
media.update { mediaValue ->
|
||||
val mediaItem = QueuedMedia(
|
||||
localId = (mediaValue.maxOfOrNull { it.localId } ?: 0) + 1,
|
||||
uri = uri,
|
||||
type = type,
|
||||
mediaSize = 0,
|
||||
uploadPercent = -1,
|
||||
id = id,
|
||||
description = description
|
||||
)
|
||||
mediaValue + mediaItem
|
||||
}
|
||||
}
|
||||
|
||||
fun removeMediaFromQueue(item: QueuedMedia) {
|
||||
mediaToJob[item.localId]?.cancel()
|
||||
media.value = media.value!!.withoutFirstWhich { it.localId == item.localId }
|
||||
media.update { mediaValue -> mediaValue.filter { it.localId == item.localId } }
|
||||
}
|
||||
|
||||
fun toggleMarkSensitive() {
|
||||
|
@ -218,31 +231,36 @@ class ComposeViewModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
fun saveDraft(content: String, contentWarning: String) {
|
||||
viewModelScope.launch {
|
||||
val mediaUris: MutableList<String> = mutableListOf()
|
||||
val mediaDescriptions: MutableList<String?> = mutableListOf()
|
||||
media.value?.forEach { item ->
|
||||
mediaUris.add(item.uri.toString())
|
||||
mediaDescriptions.add(item.description)
|
||||
}
|
||||
|
||||
draftHelper.saveDraft(
|
||||
draftId = draftId,
|
||||
accountId = accountManager.activeAccount?.id!!,
|
||||
inReplyToId = inReplyToId,
|
||||
content = content,
|
||||
contentWarning = contentWarning,
|
||||
sensitive = markMediaAsSensitive.value!!,
|
||||
visibility = statusVisibility.value!!,
|
||||
mediaUris = mediaUris,
|
||||
mediaDescriptions = mediaDescriptions,
|
||||
poll = poll.value,
|
||||
failedToSend = false
|
||||
)
|
||||
fun shouldShowSaveDraftDialog(): Boolean {
|
||||
// if any of the media files need to be downloaded first it could take a while, so show a loading dialog
|
||||
return media.value.any { mediaValue ->
|
||||
mediaValue.uri.scheme == "https"
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun saveDraft(content: String, contentWarning: String) {
|
||||
val mediaUris: MutableList<String> = mutableListOf()
|
||||
val mediaDescriptions: MutableList<String?> = mutableListOf()
|
||||
media.value.forEach { item ->
|
||||
mediaUris.add(item.uri.toString())
|
||||
mediaDescriptions.add(item.description)
|
||||
}
|
||||
|
||||
draftHelper.saveDraft(
|
||||
draftId = draftId,
|
||||
accountId = accountManager.activeAccount?.id!!,
|
||||
inReplyToId = inReplyToId,
|
||||
content = content,
|
||||
contentWarning = contentWarning,
|
||||
sensitive = markMediaAsSensitive.value!!,
|
||||
visibility = statusVisibility.value!!,
|
||||
mediaUris = mediaUris,
|
||||
mediaDescriptions = mediaDescriptions,
|
||||
poll = poll.value,
|
||||
failedToSend = false
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Send status to the server.
|
||||
* Uses current state plus provided arguments.
|
||||
|
@ -259,14 +277,14 @@ class ComposeViewModel @Inject constructor(
|
|||
Observable.just(Unit)
|
||||
}.toLiveData()
|
||||
|
||||
val sendObservable = media
|
||||
val sendFlow = media
|
||||
.filter { items -> items.all { it.uploadPercent == -1 } }
|
||||
.map {
|
||||
val mediaIds: MutableList<String> = mutableListOf()
|
||||
val mediaUris: MutableList<Uri> = mutableListOf()
|
||||
val mediaDescriptions: MutableList<String> = mutableListOf()
|
||||
val mediaProcessed: MutableList<Boolean> = mutableListOf()
|
||||
for (item in media.value!!) {
|
||||
for (item in media.value) {
|
||||
mediaIds.add(item.id!!)
|
||||
mediaUris.add(item.uri)
|
||||
mediaDescriptions.add(item.description ?: "")
|
||||
|
@ -297,17 +315,21 @@ class ComposeViewModel @Inject constructor(
|
|||
serviceClient.sendToot(tootToSend)
|
||||
}
|
||||
|
||||
return combineLiveData(deletionObservable, sendObservable) { _, _ -> }
|
||||
return combineLiveData(deletionObservable, sendFlow.asLiveData()) { _, _ -> }
|
||||
}
|
||||
|
||||
suspend fun updateDescription(localId: Long, description: String): Boolean {
|
||||
val newList = media.value!!.toMutableList()
|
||||
val index = newList.indexOfFirst { it.localId == localId }
|
||||
if (index != -1) {
|
||||
newList[index] = newList[index].copy(description = description)
|
||||
suspend fun updateDescription(localId: Int, description: String): Boolean {
|
||||
val newMediaList = media.updateAndGet { mediaValue ->
|
||||
mediaValue.map { mediaItem ->
|
||||
if (mediaItem.localId == localId) {
|
||||
mediaItem.copy(description = description)
|
||||
} else {
|
||||
mediaItem
|
||||
}
|
||||
}
|
||||
}
|
||||
media.value = newList
|
||||
val updatedItem = newList.find { it.localId == localId }
|
||||
|
||||
val updatedItem = newMediaList.find { it.localId == localId }
|
||||
if (updatedItem?.id != null) {
|
||||
return api.updateMedia(updatedItem.id, description)
|
||||
.fold({
|
||||
|
@ -403,8 +425,8 @@ class ComposeViewModel @Inject constructor(
|
|||
val draftAttachments = composeOptions?.draftAttachments
|
||||
if (draftAttachments != null) {
|
||||
// when coming from DraftActivity
|
||||
draftAttachments.forEach { attachment ->
|
||||
viewModelScope.launch {
|
||||
viewModelScope.launch {
|
||||
draftAttachments.forEach { attachment ->
|
||||
pickMedia(attachment.uri, attachment.description)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ import androidx.core.net.toUri
|
|||
import com.keylesspalace.tusky.BuildConfig
|
||||
import com.keylesspalace.tusky.R
|
||||
import com.keylesspalace.tusky.components.compose.ComposeActivity.QueuedMedia
|
||||
import com.keylesspalace.tusky.network.MastodonApi
|
||||
import com.keylesspalace.tusky.network.MediaUploadApi
|
||||
import com.keylesspalace.tusky.network.ProgressRequestBody
|
||||
import com.keylesspalace.tusky.util.MEDIA_SIZE_UNKNOWN
|
||||
import com.keylesspalace.tusky.util.getImageSquarePixels
|
||||
|
@ -75,7 +75,7 @@ class CouldNotOpenFileException : Exception()
|
|||
|
||||
class MediaUploader @Inject constructor(
|
||||
private val context: Context,
|
||||
private val mastodonApi: MastodonApi
|
||||
private val mediaUploadApi: MediaUploadApi
|
||||
) {
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
|
@ -222,7 +222,7 @@ class MediaUploader @Inject constructor(
|
|||
null
|
||||
}
|
||||
|
||||
val result = mastodonApi.uploadMedia(body, description).getOrThrow()
|
||||
val result = mediaUploadApi.uploadMedia(body, description).getOrThrow()
|
||||
if (media.uri.scheme == "file") {
|
||||
media.uri.path?.let {
|
||||
File(it).delete()
|
||||
|
|
|
@ -30,7 +30,12 @@ import com.keylesspalace.tusky.entity.Status
|
|||
import com.keylesspalace.tusky.util.IOUtils
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okio.buffer
|
||||
import okio.sink
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
|
@ -38,6 +43,7 @@ import javax.inject.Inject
|
|||
|
||||
class DraftHelper @Inject constructor(
|
||||
val context: Context,
|
||||
val okHttpClient: OkHttpClient,
|
||||
db: AppDatabase
|
||||
) {
|
||||
|
||||
|
@ -71,11 +77,11 @@ class DraftHelper @Inject constructor(
|
|||
|
||||
val uris = mediaUris.map { uriString ->
|
||||
uriString.toUri()
|
||||
}.map { uri ->
|
||||
if (uri.isNotInFolder(draftDirectory)) {
|
||||
uri.copyToFolder(draftDirectory)
|
||||
} else {
|
||||
}.mapNotNull { uri ->
|
||||
if (uri.isInFolder(draftDirectory)) {
|
||||
uri
|
||||
} else {
|
||||
uri.copyToFolder(draftDirectory)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -114,6 +120,7 @@ class DraftHelper @Inject constructor(
|
|||
)
|
||||
|
||||
draftDao.insertOrReplace(draft)
|
||||
Log.d("DraftHelper", "saved draft to db")
|
||||
}
|
||||
|
||||
suspend fun deleteDraftAndAttachments(draftId: Int) {
|
||||
|
@ -133,33 +140,55 @@ class DraftHelper @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
suspend fun deleteAttachments(draft: DraftEntity) {
|
||||
withContext(Dispatchers.IO) {
|
||||
draft.attachments.forEach { attachment ->
|
||||
if (context.contentResolver.delete(attachment.uri, null, null) == 0) {
|
||||
Log.e("DraftHelper", "Did not delete file ${attachment.uriString}")
|
||||
}
|
||||
suspend fun deleteAttachments(draft: DraftEntity) = withContext(Dispatchers.IO) {
|
||||
draft.attachments.forEach { attachment ->
|
||||
if (context.contentResolver.delete(attachment.uri, null, null) == 0) {
|
||||
Log.e("DraftHelper", "Did not delete file ${attachment.uriString}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun Uri.isNotInFolder(folder: File): Boolean {
|
||||
private fun Uri.isInFolder(folder: File): Boolean {
|
||||
val filePath = path ?: return true
|
||||
return File(filePath).parentFile == folder
|
||||
}
|
||||
|
||||
private fun Uri.copyToFolder(folder: File): Uri {
|
||||
private fun Uri.copyToFolder(folder: File): Uri? {
|
||||
val contentResolver = context.contentResolver
|
||||
|
||||
val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(Date())
|
||||
|
||||
val mimeType = contentResolver.getType(this)
|
||||
val map = MimeTypeMap.getSingleton()
|
||||
val fileExtension = map.getExtensionFromMimeType(mimeType)
|
||||
val fileExtension = if (scheme == "https") {
|
||||
lastPathSegment?.substringAfterLast('.', "tmp")
|
||||
} else {
|
||||
val mimeType = contentResolver.getType(this)
|
||||
val map = MimeTypeMap.getSingleton()
|
||||
map.getExtensionFromMimeType(mimeType)
|
||||
}
|
||||
|
||||
val filename = String.format("Tusky_Draft_Media_%s.%s", timeStamp, fileExtension)
|
||||
val file = File(folder, filename)
|
||||
IOUtils.copyToFile(contentResolver, this, file)
|
||||
|
||||
if (scheme == "https") {
|
||||
// saving redrafted media
|
||||
try {
|
||||
val request = Request.Builder().url(toString()).build()
|
||||
|
||||
val response = okHttpClient.newCall(request).execute()
|
||||
|
||||
val sink = file.sink().buffer()
|
||||
|
||||
response.body?.source()?.use { input ->
|
||||
sink.use { output ->
|
||||
output.writeAll(input)
|
||||
}
|
||||
}
|
||||
} catch (ex: IOException) {
|
||||
Log.w("DraftHelper", "failed to save media", ex)
|
||||
return null
|
||||
}
|
||||
} else {
|
||||
IOUtils.copyToFile(contentResolver, this, file)
|
||||
}
|
||||
return FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileprovider", file)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -66,7 +66,9 @@ class LoginActivity : BaseActivity(), Injectable {
|
|||
// Authorization failed. Put the error response where the user can read it and they
|
||||
// can try again.
|
||||
setLoading(false)
|
||||
binding.domainTextInputLayout.error = getString(R.string.error_authorization_denied)
|
||||
// Use error returned by the server or fall back to the generic message
|
||||
binding.domainTextInputLayout.error =
|
||||
result.errorMessage.ifBlank { getString(R.string.error_authorization_denied) }
|
||||
Log.e(
|
||||
TAG,
|
||||
"%s %s".format(
|
||||
|
|
|
@ -20,7 +20,7 @@ import androidx.core.net.toUri
|
|||
import com.keylesspalace.tusky.BaseActivity
|
||||
import com.keylesspalace.tusky.BuildConfig
|
||||
import com.keylesspalace.tusky.R
|
||||
import com.keylesspalace.tusky.databinding.LoginWebviewBinding
|
||||
import com.keylesspalace.tusky.databinding.ActivityLoginWebviewBinding
|
||||
import com.keylesspalace.tusky.di.Injectable
|
||||
import com.keylesspalace.tusky.util.hide
|
||||
import com.keylesspalace.tusky.util.viewBinding
|
||||
|
@ -78,7 +78,7 @@ sealed class LoginResult : Parcelable {
|
|||
|
||||
/** Activity to do Oauth process using WebView. */
|
||||
class LoginWebViewActivity : BaseActivity(), Injectable {
|
||||
private val binding by viewBinding(LoginWebviewBinding::inflate)
|
||||
private val binding by viewBinding(ActivityLoginWebviewBinding::inflate)
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
@ -117,7 +117,7 @@ class LoginWebViewActivity : BaseActivity(), Injectable {
|
|||
error: WebResourceError
|
||||
) {
|
||||
Log.d("LoginWeb", "Failed to load ${data.url}: $error")
|
||||
finishWithoutSlideOutAnimation()
|
||||
sendResult(LoginResult.Err(getString(R.string.error_could_not_load_login_page)))
|
||||
}
|
||||
|
||||
override fun shouldOverrideUrlLoading(
|
||||
|
|
|
@ -21,6 +21,7 @@ import com.keylesspalace.tusky.db.TimelineAccountEntity
|
|||
import com.keylesspalace.tusky.db.TimelineStatusEntity
|
||||
import com.keylesspalace.tusky.db.TimelineStatusWithAccount
|
||||
import com.keylesspalace.tusky.entity.Attachment
|
||||
import com.keylesspalace.tusky.entity.Card
|
||||
import com.keylesspalace.tusky.entity.Emoji
|
||||
import com.keylesspalace.tusky.entity.HashTag
|
||||
import com.keylesspalace.tusky.entity.Poll
|
||||
|
@ -97,6 +98,7 @@ fun Placeholder.toEntity(timelineUserId: Long): TimelineStatusEntity {
|
|||
contentCollapsed = false,
|
||||
contentShowing = false,
|
||||
pinned = false,
|
||||
card = null,
|
||||
quote = null,
|
||||
)
|
||||
}
|
||||
|
@ -138,6 +140,7 @@ fun Status.toEntity(
|
|||
contentShowing = contentShowing,
|
||||
contentCollapsed = contentCollapsed,
|
||||
pinned = actionableStatus.pinned == true,
|
||||
card = actionableStatus.card?.let(gson::toJson),
|
||||
quote = actionableStatus.quote?.let(gson::toJson),
|
||||
)
|
||||
}
|
||||
|
@ -153,6 +156,7 @@ fun TimelineStatusWithAccount.toViewData(gson: Gson): StatusViewData {
|
|||
val application = gson.fromJson(status.application, Status.Application::class.java)
|
||||
val emojis: List<Emoji> = gson.fromJson(status.emojis, emojisListType) ?: emptyList()
|
||||
val poll: Poll? = gson.fromJson(status.poll, Poll::class.java)
|
||||
val card: Card? = gson.fromJson(status.card, Card::class.java)
|
||||
val quote: Status? = gson.fromJson(status.quote, Status::class.java)
|
||||
|
||||
val reblog = status.reblogServerId?.let { id ->
|
||||
|
@ -181,7 +185,7 @@ fun TimelineStatusWithAccount.toViewData(gson: Gson): StatusViewData {
|
|||
pinned = false,
|
||||
muted = status.muted,
|
||||
poll = poll,
|
||||
card = null,
|
||||
card = card,
|
||||
quote = quote,
|
||||
)
|
||||
}
|
||||
|
@ -240,7 +244,7 @@ fun TimelineStatusWithAccount.toViewData(gson: Gson): StatusViewData {
|
|||
pinned = status.pinned,
|
||||
muted = status.muted,
|
||||
poll = poll,
|
||||
card = null,
|
||||
card = card,
|
||||
quote = quote,
|
||||
)
|
||||
}
|
||||
|
|
|
@ -539,6 +539,7 @@ public abstract class AppDatabase extends RoomDatabase {
|
|||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase database) {
|
||||
database.execSQL("ALTER TABLE `TimelineStatusEntity` ADD COLUMN `quote` TEXT DEFAULT ''");
|
||||
database.execSQL("ALTER TABLE `TimelineStatusEntity` ADD COLUMN `card` TEXT");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ SELECT s.serverId, s.url, s.timelineUserId,
|
|||
s.authorServerId, s.inReplyToId, s.inReplyToAccountId, s.createdAt,
|
||||
s.emojis, s.reblogsCount, s.favouritesCount, s.reblogged, s.favourited, s.bookmarked, s.sensitive,
|
||||
s.spoilerText, s.visibility, s.mentions, s.tags, s.application, s.reblogServerId,s.reblogAccountId,
|
||||
s.content, s.attachments, s.poll, s.muted, s.expanded, s.contentShowing, s.contentCollapsed, s.pinned,
|
||||
s.content, s.attachments, s.poll, s.card, s.muted, s.expanded, s.contentShowing, s.contentCollapsed, s.pinned,
|
||||
s.quote,
|
||||
a.serverId as 'a_serverId', a.timelineUserId as 'a_timelineUserId',
|
||||
a.localUsername as 'a_localUsername', a.username as 'a_username',
|
||||
|
|
|
@ -79,6 +79,7 @@ data class TimelineStatusEntity(
|
|||
val contentCollapsed: Boolean,
|
||||
val contentShowing: Boolean,
|
||||
val pinned: Boolean,
|
||||
val card: String?,
|
||||
val quote: String?,
|
||||
)
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ import com.keylesspalace.tusky.BuildConfig
|
|||
import com.keylesspalace.tusky.db.AccountManager
|
||||
import com.keylesspalace.tusky.network.InstanceSwitchAuthInterceptor
|
||||
import com.keylesspalace.tusky.network.MastodonApi
|
||||
import com.keylesspalace.tusky.network.MediaUploadApi
|
||||
import com.keylesspalace.tusky.network.NotestockApi
|
||||
import com.keylesspalace.tusky.util.getNonNullString
|
||||
import dagger.Module
|
||||
|
@ -116,6 +117,20 @@ class NetworkModule {
|
|||
@Singleton
|
||||
fun providesApi(retrofit: Retrofit): MastodonApi = retrofit.create()
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun providesMediaUploadApi(retrofit: Retrofit, okHttpClient: OkHttpClient): MediaUploadApi {
|
||||
val longTimeOutOkHttpClient = okHttpClient.newBuilder()
|
||||
.readTimeout(100, TimeUnit.SECONDS)
|
||||
.writeTimeout(100, TimeUnit.SECONDS)
|
||||
.build()
|
||||
|
||||
return retrofit.newBuilder()
|
||||
.client(longTimeOutOkHttpClient)
|
||||
.build()
|
||||
.create()
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun providesNotestockApi(
|
||||
|
|
|
@ -58,6 +58,7 @@ import com.keylesspalace.tusky.entity.Status;
|
|||
import com.keylesspalace.tusky.network.MastodonApi;
|
||||
import com.keylesspalace.tusky.network.TimelineCases;
|
||||
import com.keylesspalace.tusky.util.LinkHelper;
|
||||
import com.keylesspalace.tusky.util.StatusParsingHelper;
|
||||
import com.keylesspalace.tusky.view.MuteAccountDialog;
|
||||
import com.keylesspalace.tusky.viewdata.AttachmentViewData;
|
||||
|
||||
|
@ -255,7 +256,7 @@ public abstract class SFragment extends Fragment implements Injectable {
|
|||
|
||||
String stringToShare = statusToShare.getAccount().getUsername() +
|
||||
" - " +
|
||||
statusToShare.getContent().toString();
|
||||
StatusParsingHelper.parseAsMastodonHtml(statusToShare.getContent()).toString();
|
||||
sendIntent.putExtra(Intent.EXTRA_TEXT, stringToShare);
|
||||
sendIntent.putExtra(Intent.EXTRA_SUBJECT, statusUrl);
|
||||
sendIntent.setType("text/plain");
|
||||
|
|
|
@ -142,13 +142,6 @@ interface MastodonApi {
|
|||
@POST("api/v1/notifications/clear")
|
||||
fun clearNotifications(): Single<ResponseBody>
|
||||
|
||||
@Multipart
|
||||
@POST("api/v2/media")
|
||||
suspend fun uploadMedia(
|
||||
@Part file: MultipartBody.Part,
|
||||
@Part description: MultipartBody.Part? = null
|
||||
): Result<MediaUploadResult>
|
||||
|
||||
@FormUrlEncoded
|
||||
@PUT("api/v1/media/{mediaId}")
|
||||
suspend fun updateMedia(
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
package com.keylesspalace.tusky.network
|
||||
|
||||
import com.keylesspalace.tusky.entity.MediaUploadResult
|
||||
import okhttp3.MultipartBody
|
||||
import retrofit2.http.Multipart
|
||||
import retrofit2.http.POST
|
||||
import retrofit2.http.Part
|
||||
|
||||
/** endpoints defined in this interface will be called with a higher timeout than usual
|
||||
* which is necessary for media uploads to succeed on some servers
|
||||
*/
|
||||
interface MediaUploadApi {
|
||||
@Multipart
|
||||
@POST("api/v2/media")
|
||||
suspend fun uploadMedia(
|
||||
@Part file: MultipartBody.Part,
|
||||
@Part description: MultipartBody.Part? = null
|
||||
): Result<MediaUploadResult>
|
||||
}
|
|
@ -11,8 +11,7 @@
|
|||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/loginToolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:titleTextColor="#fff" />
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
|
@ -551,4 +551,10 @@
|
|||
<string name="duration_180_days">180 يومًا</string>
|
||||
<string name="duration_365_days">365 يومًا</string>
|
||||
<string name="tusky_compose_post_quicksetting_label">تحرير منشور</string>
|
||||
<string name="notification_sign_up_name">حسابات جديدة</string>
|
||||
<string name="title_login">لِج</string>
|
||||
<string name="notification_sign_up_format">قام %s بإنشاء حساب</string>
|
||||
<string name="pref_title_notification_filter_sign_ups">أحدهم أنشأ حسابا جديدا</string>
|
||||
<string name="notification_update_name">منشورات تم تعديلها</string>
|
||||
<string name="notification_update_format">قام %s بتعديل منشوره</string>
|
||||
</resources>
|
|
@ -20,8 +20,8 @@
|
|||
<string name="title_notifications">Notificacions</string>
|
||||
<string name="title_public_local">Local</string>
|
||||
<string name="title_public_federated">Federació</string>
|
||||
<string name="title_view_thread">Toot</string>
|
||||
<string name="title_posts">Posts</string>
|
||||
<string name="title_view_thread">Fil</string>
|
||||
<string name="title_posts">Publicacions</string>
|
||||
<string name="title_follows">Seguits</string>
|
||||
<string name="title_followers">Seguidors</string>
|
||||
<string name="title_favourites">Preferits</string>
|
||||
|
@ -31,19 +31,19 @@
|
|||
<string name="title_edit_profile">Edita el perfil</string>
|
||||
<string name="title_drafts">Esborranys</string>
|
||||
<string name="post_username_format">\@%s</string>
|
||||
<string name="post_boosted_format">%s tootejat</string>
|
||||
<string name="post_boosted_format">%s ha impulsat</string>
|
||||
<string name="post_sensitive_media_title">Contingut sensible</string>
|
||||
<string name="post_sensitive_media_directions">Fes clic per a visualitzar-lo</string>
|
||||
<string name="post_content_warning_show_more">Mostra\'n més</string>
|
||||
<string name="post_content_warning_show_less">Mostra\'n menys</string>
|
||||
<string name="footer_empty">No hi res aquí. Llisca avall per a actualitzar!</string>
|
||||
<string name="notification_reblog_format">%s ha impulsat el teu toot</string>
|
||||
<string name="notification_favourite_format">%s ha marcat com a preferit el teu toot</string>
|
||||
<string name="notification_reblog_format">%s ha impulsat la teva publicació</string>
|
||||
<string name="notification_favourite_format">%s ha marcat com a preferida la teva publicació</string>
|
||||
<string name="notification_follow_format">%s et segueix</string>
|
||||
<string name="report_username_format">Denuncia @%s</string>
|
||||
<string name="report_comment_hint">Cap comentari addicional?</string>
|
||||
<string name="action_reply">Respon</string>
|
||||
<string name="action_reblog">Retooteja</string>
|
||||
<string name="action_reblog">Impulsa</string>
|
||||
<string name="action_favourite">Preferit</string>
|
||||
<string name="action_more">Més</string>
|
||||
<string name="action_compose">Escriure</string>
|
||||
|
@ -55,8 +55,8 @@
|
|||
<string name="action_unblock">Deixa de blocar</string>
|
||||
<string name="action_report">Denuncia</string>
|
||||
<string name="action_delete">Elimina</string>
|
||||
<string name="action_send">TOOT</string>
|
||||
<string name="action_send_public">TOOT!</string>
|
||||
<string name="action_send">PUBLICA</string>
|
||||
<string name="action_send_public">PUBLICA!</string>
|
||||
<string name="action_retry">Torna a intentar-ho</string>
|
||||
<string name="action_close">Tanca</string>
|
||||
<string name="action_view_profile">Perfil</string>
|
||||
|
@ -83,8 +83,8 @@
|
|||
<string name="action_access_drafts">Esborranys</string>
|
||||
<string name="download_image">S\'està baixant %1$s</string>
|
||||
<string name="action_copy_link">Copia l\'enllaç</string>
|
||||
<string name="send_post_link_to">Comparteix l\'URL del toot a…</string>
|
||||
<string name="send_post_content_to">Comparteix el toot a…</string>
|
||||
<string name="send_post_link_to">Comparteix l\'URL de la publicació a…</string>
|
||||
<string name="send_post_content_to">Comparteix la publicació a…</string>
|
||||
<string name="confirmation_reported">Enviat!</string>
|
||||
<string name="confirmation_unblocked">Usuari desblocat</string>
|
||||
<string name="confirmation_unmuted">Usuari sense silenciar</string>
|
||||
|
@ -132,10 +132,10 @@
|
|||
<string name="pref_title_hide_follow_button">Amaga el botó de redacció en desplaçament</string>
|
||||
<string name="pref_title_post_filter">Filtre de la cronologia</string>
|
||||
<string name="pref_title_post_tabs">Pestanyes</string>
|
||||
<string name="pref_title_show_boosts">Mostra els retoots</string>
|
||||
<string name="pref_title_show_boosts">Mostra els impulsos</string>
|
||||
<string name="pref_title_show_replies">Mostra les respostes</string>
|
||||
<string name="pref_title_show_media_preview">Mostra les previsualitzacions</string>
|
||||
<string name="pref_default_post_privacy">Privacitat predeterminada dels toots</string>
|
||||
<string name="pref_default_post_privacy">Privacitat per defecte de les publicacions</string>
|
||||
<string name="pref_publishing">Publicació</string>
|
||||
<string name="post_privacy_public">Pública</string>
|
||||
<string name="post_privacy_unlisted">Sense llistar</string>
|
||||
|
@ -145,7 +145,7 @@
|
|||
<string name="notification_mention_descriptions">Notificacions sobre mencions noves</string>
|
||||
<string name="notification_follow_name">Seguidors nous</string>
|
||||
<string name="notification_follow_description">Notificacions sobre nous seguidors</string>
|
||||
<string name="notification_boost_name">Retoots</string>
|
||||
<string name="notification_boost_name">Impulsos</string>
|
||||
<string name="notification_boost_description">Notificacions si retootejents els teus toots</string>
|
||||
<string name="notification_favourite_name">Preferits</string>
|
||||
<string name="notification_favourite_description">Notificacions si marquen com a preferits els teus toots</string>
|
||||
|
@ -172,8 +172,8 @@
|
|||
https://github.com/accelforce/Yuito/issues
|
||||
</string>
|
||||
<string name="about_tusky_account">Perfil del Yuito</string>
|
||||
<string name="post_share_content">Comparteix el contingut del toot</string>
|
||||
<string name="post_share_link">Comparteix l\'enllaç al toot</string>
|
||||
<string name="post_share_content">Comparteix el contingut de la publicació</string>
|
||||
<string name="post_share_link">Comparteix l\'enllaç a la publicació</string>
|
||||
<string name="post_media_images">Imatges</string>
|
||||
<string name="post_media_video">Vídeo</string>
|
||||
<!--These are for timestamps on statuses. For example: "16s" or "2d"-->
|
||||
|
@ -193,7 +193,7 @@
|
|||
<string name="replying_to">En resposta a @%s</string>
|
||||
<string name="load_more_placeholder_text">carrega\'n més</string>
|
||||
<string name="poll_vote">Vota</string>
|
||||
<string name="error_sender_account_gone">S\'ha produït un error en enviar el tut.</string>
|
||||
<string name="error_sender_account_gone">S\'ha produït un error en publicar.</string>
|
||||
<string name="title_tab_preferences">Pestanyes</string>
|
||||
<string name="title_licenses">Llicències</string>
|
||||
<string name="post_content_show_more">Amplia</string>
|
||||
|
@ -209,11 +209,11 @@
|
|||
<string name="post_media_hidden_title">Multimèdia amagada</string>
|
||||
<string name="post_content_show_less">Amaga</string>
|
||||
<string name="action_logout_confirm">Estàs segur de tancar la sessió de %1$s\?</string>
|
||||
<string name="action_hide_reblogs">Amaga els retoots</string>
|
||||
<string name="action_hide_reblogs">Amaga els impulsos</string>
|
||||
<string name="action_show_reblogs">Mostra els impulsos</string>
|
||||
<string name="action_delete_and_redraft">Elimina i reecririu</string>
|
||||
<string name="action_open_drawer">Obre el menú</string>
|
||||
<string name="action_toggle_visibility">Visibilitat del toot</string>
|
||||
<string name="action_toggle_visibility">Visibilitat de la publicació</string>
|
||||
<string name="action_content_warning">Contingut sensible</string>
|
||||
<string name="action_add_tab">Afegir una pestanya</string>
|
||||
<string name="action_links">Enllaços</string>
|
||||
|
@ -227,17 +227,17 @@
|
|||
<string name="download_media">Baixa el fitxer</string>
|
||||
<string name="send_media_to">Compartir la imatge a …</string>
|
||||
<string name="post_sent">Enviat!</string>
|
||||
<string name="state_follow_requested">S\'ha enviat la petició de seguiment</string>
|
||||
<string name="state_follow_requested">Petició enviada</string>
|
||||
<string name="title_posts_with_replies">Amb respostes</string>
|
||||
<string name="action_emoji_keyboard">Teclat d\'emojis</string>
|
||||
<string name="action_open_media_n">Obrir el media #%d</string>
|
||||
<string name="action_open_as">Obrir com %s</string>
|
||||
<string name="action_open_as">Obre com a %s</string>
|
||||
<string name="downloading_media">S\'està Descarregant media</string>
|
||||
<string name="post_sent_long">Resposta enviada correctament.</string>
|
||||
<string name="label_quick_reply">Resposta …</string>
|
||||
<string name="dialog_message_cancel_follow_request">Revocar la petició de seguiment\?</string>
|
||||
<string name="dialog_delete_post_warning">Vols eliminar aquest toot\?</string>
|
||||
<string name="dialog_redraft_post_warning">Esborrar i reescriure aquest toot\?</string>
|
||||
<string name="dialog_redraft_post_warning">Vols eliminar i reescriure aquesta publicació\?</string>
|
||||
<string name="pref_title_notification_filter_poll">Finalització de les enquetes</string>
|
||||
<string name="pref_title_app_theme">Tema</string>
|
||||
<string name="pref_title_timelines">Cronologia</string>
|
||||
|
@ -267,7 +267,7 @@
|
|||
<string name="filter_dialog_remove_button">Eliminar</string>
|
||||
<string name="add_account_name">Afegir un compte</string>
|
||||
<string name="action_open_reblogger">Obre l\'autor de l\'impuls</string>
|
||||
<string name="action_open_reblogged_by">Mostra els retoots</string>
|
||||
<string name="action_open_reblogged_by">Mostra els impulsos</string>
|
||||
<string name="notification_poll_description">Notificacions d\'enquestes que han finalitzat</string>
|
||||
<string name="pref_title_public_filter_keywords">Línia de temps públiques</string>
|
||||
<string name="filter_dialog_update_button">Actualització</string>
|
||||
|
@ -297,11 +297,11 @@
|
|||
<string name="lock_account_label">Protegir el compte</string>
|
||||
<string name="lock_account_label_description">S\'haurà d\'admetre els seguidors manualment</string>
|
||||
<string name="compose_save_draft">Guardar l\'esborrany\?</string>
|
||||
<string name="send_post_notification_title">Enviant toot…</string>
|
||||
<string name="send_post_notification_error_title">Error enviant el toot</string>
|
||||
<string name="send_post_notification_channel_name">Enviant toots</string>
|
||||
<string name="send_post_notification_title">S\'està publicant…</string>
|
||||
<string name="send_post_notification_error_title">Error en publicar</string>
|
||||
<string name="send_post_notification_channel_name">S\'esatan enviant les publicacions</string>
|
||||
<string name="send_post_notification_cancel_title">Envio anul·lat</string>
|
||||
<string name="send_post_notification_saved_content">Una copia del toot s\'ha guardat a esborranys</string>
|
||||
<string name="send_post_notification_saved_content">S\'ha guardat una còpia de la publicació als esborranys</string>
|
||||
<string name="action_compose_shortcut">Escriure</string>
|
||||
<string name="error_no_custom_emojis">La teva instància %s no te emojis personalitzats</string>
|
||||
<string name="emoji_style">Estil dels emojis</string>
|
||||
|
@ -309,7 +309,7 @@
|
|||
<string name="download_fonts">Hauràs de descarregar el joc d\'emojis</string>
|
||||
<string name="performing_lookup_title">Cercant…</string>
|
||||
<string name="expand_collapse_all_posts">Expandir/ocultar tots els estats</string>
|
||||
<string name="action_open_post">Obrir toot</string>
|
||||
<string name="action_open_post">Obre la publicació</string>
|
||||
<string name="restart_required">Cal reiniciar l\'aplicació</string>
|
||||
<string name="restart_emoji">Has de reiniciar l\'aplicació per tal d\'aplicar aquests canvis</string>
|
||||
<string name="later">Més tard</string>
|
||||
|
@ -360,7 +360,7 @@
|
|||
<string name="notifications_clear">Netejar</string>
|
||||
<string name="notifications_apply_filter">Filtrar</string>
|
||||
<string name="filter_apply">Aplicar</string>
|
||||
<string name="compose_shortcut_long_label">Escriure un toot</string>
|
||||
<string name="compose_shortcut_long_label">Escriure una publicació</string>
|
||||
<string name="compose_shortcut_short_label">Escriure</string>
|
||||
<string name="pref_title_bot_overlay">Mostra l\'indicador dels bots</string>
|
||||
<string name="notification_clear_text">Vols netejar totes les notificacions permanentment\?</string>
|
||||
|
@ -374,8 +374,8 @@
|
|||
<string name="poll_ended_voted">L\'enquesta on has votat està tancada</string>
|
||||
<string name="poll_ended_created">La enquesta que heu creat ha finalitzat</string>
|
||||
<string name="description_post_cw">Advertència: %s</string>
|
||||
<string name="title_posts_pinned">Toot fixat</string>
|
||||
<string name="unpin_action">Toot no fixat</string>
|
||||
<string name="title_posts_pinned">Fixat</string>
|
||||
<string name="unpin_action">No fixis</string>
|
||||
<string name="pin_action">Fixar</string>
|
||||
<string name="description_post_reblogged">Respost</string>
|
||||
<string name="compose_preview_image_description">Accions per a la imatge %s</string>
|
||||
|
@ -385,7 +385,7 @@
|
|||
<string name="action_mute_domain">Silenciar %s</string>
|
||||
<string name="confirmation_domain_unmuted">%s visible</string>
|
||||
<string name="mute_domain_warning_dialog_ok">Amagar el domini sencer</string>
|
||||
<string name="pref_title_alway_open_spoiler">Obrir sempre els toots marcats amb contingut sensible</string>
|
||||
<string name="pref_title_alway_open_spoiler">Mostra sempre obertes les publicacions marcades amb avisos de contingut</string>
|
||||
<string name="filter_dialog_whole_word">Paraula sencera</string>
|
||||
<string name="caption_notoemoji">Ventall actual d\'emojis de Google</string>
|
||||
<string name="description_poll">Enquesta amb opcions: %1$s, %2$s, %3$s, %4$s; %5$s</string>
|
||||
|
@ -418,12 +418,12 @@
|
|||
<string name="poll_allow_multiple_choices">Múltiples tries</string>
|
||||
<string name="poll_new_choice_hint">Tria %d</string>
|
||||
<string name="title_bookmarks">Preferits</string>
|
||||
<string name="title_scheduled_posts">Toots programats</string>
|
||||
<string name="title_scheduled_posts">Publicacions programades</string>
|
||||
<string name="action_bookmark">Preferit</string>
|
||||
<string name="action_edit">Edita</string>
|
||||
<string name="action_view_bookmarks">Preferits</string>
|
||||
<string name="action_access_scheduled_posts">Toots programats</string>
|
||||
<string name="action_schedule_post">Programar el toot</string>
|
||||
<string name="action_access_scheduled_posts">Publicacions programades</string>
|
||||
<string name="action_schedule_post">Programa la publicació</string>
|
||||
<string name="action_reset_schedule">Reiniciar</string>
|
||||
<string name="about_powered_by_tusky">Desenvolupat per Tusky</string>
|
||||
<string name="description_post_bookmarked">S\'ha afegit a les adreces d\'interès</string>
|
||||
|
@ -449,7 +449,7 @@
|
|||
<string name="dialog_mute_warning">Silenciar @%s\?</string>
|
||||
<string name="dialog_block_warning">Bloquejar @%s\?</string>
|
||||
<string name="action_unmute_conversation">No silenciar la conversació</string>
|
||||
<string name="action_mute_conversation">Conversació muda</string>
|
||||
<string name="action_mute_conversation">Silencia la conversa</string>
|
||||
<string name="notification_follow_request_format">%s ha sol·licitat seguir-te</string>
|
||||
<string name="pref_main_nav_position_option_bottom">A baix</string>
|
||||
<string name="pref_main_nav_position_option_top">A dalt</string>
|
||||
|
@ -487,15 +487,15 @@
|
|||
<string name="post_media_attachments">Adjuncions</string>
|
||||
<string name="post_media_audio">Àudio</string>
|
||||
<string name="notification_subscription_description">Notificacions quan algú a qui esteu subscrit publica un tut nou</string>
|
||||
<string name="notification_subscription_name">Tuts nous</string>
|
||||
<string name="notification_subscription_name">Publicacions noves</string>
|
||||
<string name="pref_title_animate_custom_emojis">emojis personalitzats animats</string>
|
||||
<string name="pref_title_notification_filter_subscriptions">algú a qui estic subscrit acaba de publicar un tut nou</string>
|
||||
<string name="notification_subscription_format">%s acaba de fer una publicació</string>
|
||||
<string name="title_announcements">Avisos</string>
|
||||
<string name="drafts_post_reply_removed">S\'ha esborrat el tut del qual en vau fer un esborrany de resposta</string>
|
||||
<string name="drafts_post_reply_removed">S\'ha eliminat la publicació a la qual vau fer un esborrany de resposta</string>
|
||||
<string name="draft_deleted">S\'ha eliminat l\'esborrany</string>
|
||||
<string name="drafts_failed_loading_reply">No s\'ha pogut carregar la informació de la resposta</string>
|
||||
<string name="drafts_post_failed_to_send">No s\'ha pogut enviar aquest tut!</string>
|
||||
<string name="drafts_post_failed_to_send">No s\'ha pogut publicar!</string>
|
||||
<string name="dialog_delete_list_warning">Segur que voleu esborrar la llista %s\?</string>
|
||||
<plurals name="error_upload_max_media_reached">
|
||||
<item quantity="other">No podeu pujar més de %1$d adjunts multimèdia.</item>
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
<string name="title_public_federated">Föderiert</string>
|
||||
<string name="title_direct_messages">Direktnachrichten</string>
|
||||
<string name="title_tab_preferences">Tabs</string>
|
||||
<string name="title_view_thread">Beitrag</string>
|
||||
<string name="title_view_thread">Konversation</string>
|
||||
<string name="title_posts">Beiträge</string>
|
||||
<string name="title_posts_with_replies">mit Antworten</string>
|
||||
<string name="title_posts_pinned">Angeheftet</string>
|
||||
|
@ -490,7 +490,7 @@
|
|||
<string name="duration_indefinite">Für immer</string>
|
||||
<string name="post_media_attachments">Anhänge</string>
|
||||
<string name="post_media_audio">Audio</string>
|
||||
<string name="notification_subscription_description">Benachrichtigungen, wenn jemand, den ich abonniert habe, etwas Neues veröffentlicht</string>
|
||||
<string name="notification_subscription_description">Benachrichtigungen, wenn jemand, den ich abonniert habe, eine neue Nachricht veröffentlicht</string>
|
||||
<string name="notification_subscription_name">Neue Beiträge</string>
|
||||
<string name="pref_title_animate_custom_emojis">GIF-Emojis animieren</string>
|
||||
<string name="pref_title_notification_filter_subscriptions">Jemand, den ich abonniert habe, hat etwas Neues veröffentlicht</string>
|
||||
|
@ -534,4 +534,7 @@
|
|||
<string name="notification_sign_up_format">%s hat sich registriert</string>
|
||||
<string name="pref_title_notification_filter_sign_ups">Jemand hat sich registriert</string>
|
||||
<string name="notification_update_description">Benachrichtigungen, wenn Beiträge bearbeitet werden, mit denen du interagiert hast</string>
|
||||
<string name="title_login">Anmelden</string>
|
||||
<string name="error_could_not_load_login_page">Die Anmeldeseite konnte nicht geladen werden.</string>
|
||||
<string name="notification_update_name">Beitragsbearbeitungen</string>
|
||||
</resources>
|
||||
|
|
|
@ -3,4 +3,106 @@
|
|||
<string name="error_empty">Αυτό δεν μπορεί να είναι κενό.</string>
|
||||
<string name="error_network">Προέκυψε σφάλμα δικτύου! Παρακαλώ ελέγξτε τη σύνδεσή σας και προσπαθήστε ξανά!</string>
|
||||
<string name="error_generic">Προέκυψε ένα σφάλμα.</string>
|
||||
<string name="action_view_blocks">Αποκλεισμένοι χρήστες</string>
|
||||
<string name="dialog_message_cancel_follow_request">Ακύρωση αιτήματος ακολούθησης;</string>
|
||||
<string name="dialog_delete_conversation_warning">Διαγραφή αυτής της συζήτησης;</string>
|
||||
<string name="search_no_results">Δεν υπάρχουν αποτελέσματα</string>
|
||||
<string name="title_edit_profile">Επεργασία προφίλ</string>
|
||||
<string name="title_follows">Ακολουθεί</string>
|
||||
<string name="action_reset_schedule">Επαναφορά</string>
|
||||
<string name="notification_follow_format">ο/η %s σας ακολούθησε</string>
|
||||
<string name="action_view_mutes">Χρήστες σε σίγαση</string>
|
||||
<string name="action_logout">Αποσύνδεση</string>
|
||||
<string name="action_unfollow">Μην ακολουθείτε</string>
|
||||
<string name="action_unmute_domain">Άρση σίγασης του %s</string>
|
||||
<string name="action_delete_and_redraft">Διαγραφή και αναδιατύπωση</string>
|
||||
<string name="action_edit_profile">Επεξεργασία προφίλ</string>
|
||||
<string name="action_share">Κοινοποίηση</string>
|
||||
<string name="title_licenses">Άδειες</string>
|
||||
<string name="action_open_in_web">Ανοίξτε σε browser</string>
|
||||
<string name="action_view_follow_requests">Αιτήματα ακολούθησης</string>
|
||||
<string name="action_bookmark">Προσθήκη σελιδοδείκτη</string>
|
||||
<string name="action_more">Περισσότερα</string>
|
||||
<string name="action_view_bookmarks">Σελιδοδείκτες</string>
|
||||
<string name="title_bookmarks">Σελιδοδείκτες</string>
|
||||
<string name="title_followers">Ακόλουθοι</string>
|
||||
<string name="action_unblock">Άρση αποκλεισμού</string>
|
||||
<string name="title_favourites">Αγαπημένα</string>
|
||||
<string name="error_compose_character_limit">Η δημοσίευση είναι πολύ μεγάλη!</string>
|
||||
<string name="action_emoji_keyboard">Πληκτρολόγιο emoji</string>
|
||||
<string name="action_logout_confirm">Είστε σίγουροι ότι θέλετε να αποσυνδεθείτε από τον λογαριασμό %1$s;</string>
|
||||
<string name="title_drafts">Προσχέδια</string>
|
||||
<string name="action_view_favourites">Αγαπημένα</string>
|
||||
<string name="label_quick_reply">Απάντηση…</string>
|
||||
<string name="action_reject">Απόρριψη</string>
|
||||
<string name="title_blocks">Αποκλεισμένοι χρήστες</string>
|
||||
<string name="action_unreblog">Αφαίρεση προώθησης</string>
|
||||
<string name="action_edit">Επεξεργασία</string>
|
||||
<string name="action_mute_domain">Σίγαση του %s</string>
|
||||
<string name="action_block">Αποκλεισμός</string>
|
||||
<string name="action_undo">Αναίρεση</string>
|
||||
<string name="notification_follow_request_format">ο/η %s ζήτησε να σας ακολουθήσει</string>
|
||||
<string name="action_reply">Απάντηση</string>
|
||||
<string name="title_tab_preferences">Καρτέλες</string>
|
||||
<string name="notification_reblog_format">ο/η %s προώθησε τη δημοσίευσή σας</string>
|
||||
<string name="notification_favourite_format">στον/στην %s άρεσε η δημοσίευσή σας</string>
|
||||
<string name="action_follow">Ακολουθήστε</string>
|
||||
<string name="action_report">Αναφορά</string>
|
||||
<string name="action_mute">Σίγαση</string>
|
||||
<string name="error_audio_upload_size">Τα μουσικά αρχεία πρέπει να είναι μικρότερα από 40MB.</string>
|
||||
<string name="action_unfavourite">Αφαίρεση αγαπημένου</string>
|
||||
<string name="report_username_format">Αναφορά του/της %s</string>
|
||||
<string name="action_view_account_preferences">Προτιμήσεις Λογαριασμού</string>
|
||||
<string name="action_add_tab">Προσθήκη καρτέλας</string>
|
||||
<string name="action_copy_link">Αντιγραφή συνδέσμου</string>
|
||||
<string name="hint_search">Αναζήτηση…</string>
|
||||
<string name="action_accept">Αποδοχή</string>
|
||||
<string name="action_show_reblogs">Εμφάνιση προωθήσεων</string>
|
||||
<string name="action_view_profile">Προφίλ</string>
|
||||
<string name="title_follow_requests">Αιτήματα ακολούθησης</string>
|
||||
<string name="action_search">Αναζήτηση</string>
|
||||
<string name="action_delete_conversation">Διαγραφή συζήτησης</string>
|
||||
<string name="action_delete">Διαγραφή</string>
|
||||
<string name="notification_subscription_format">ο/η %s μόλις δημοσίευσε</string>
|
||||
<string name="action_save">Αποθήκευση</string>
|
||||
<string name="action_quick_reply">Γρήγορη Απάντηση</string>
|
||||
<string name="title_mutes">Χρήστες σε σίγαση</string>
|
||||
<string name="error_image_upload_size">Το αρχείο πρέπει να είναι μικρότερο από 8MB.</string>
|
||||
<string name="action_hide_reblogs">Απόκρυψη προωθήσεων</string>
|
||||
<string name="action_view_preferences">Προτιμήσεις</string>
|
||||
<string name="title_login">Σύνδεση</string>
|
||||
<string name="title_announcements">Ανακοινώσεις</string>
|
||||
<string name="action_access_drafts">Προσχέδια</string>
|
||||
<string name="notification_sign_up_format">ο/η %s έκανε εγγραφή</string>
|
||||
<string name="action_retry">Προσπαθήστε ξανά</string>
|
||||
<string name="dialog_delete_post_warning">Διαγραφή αυτής της δημοσίευσης;</string>
|
||||
<string name="action_unmute">Άρση σίγασης</string>
|
||||
<string name="action_favourite">Αγαπημένο</string>
|
||||
<string name="title_links_dialog">Σύνδεσμοι</string>
|
||||
<string name="action_close">Κλείσιμο</string>
|
||||
<string name="title_notifications">Ειδοποιήσεις</string>
|
||||
<string name="action_compose">Γράψτε</string>
|
||||
<string name="action_login">Σύνδεση με Mastodon</string>
|
||||
<string name="action_edit_own_profile">Επεξεργασία</string>
|
||||
<string name="action_reblog">Προώθηση</string>
|
||||
<string name="dialog_unfollow_warning">Άρση ακολούθησης αυτού του λογαριασμού;</string>
|
||||
<string name="dialog_mute_hide_notifications">Απόκρυψη ειδοποιήσεων</string>
|
||||
<string name="action_unbookmark">Αφαίρεση σελιδοδείκτη</string>
|
||||
<string name="action_content_warning">Προειδοποίηση περιεχομένου</string>
|
||||
<string name="action_links">Σύνδεσμοι</string>
|
||||
<string name="login_connection">Σύνδεση…</string>
|
||||
<string name="action_access_scheduled_posts">Προγραμματισμένες δημοσιεύσεις</string>
|
||||
<string name="action_schedule_post">Προγραμματισμός δημοσίευσης</string>
|
||||
<string name="title_scheduled_posts">Προγραμματισμένες δημοσιεύσεις</string>
|
||||
<string name="title_posts">Δημοσιεύσεις</string>
|
||||
<string name="title_posts_pinned">Καρφιτσωμένο</string>
|
||||
<string name="post_sensitive_media_title">Ευαίσθητο περιεχόμενο</string>
|
||||
<string name="post_media_hidden_title">Κρυμμένα μέσα</string>
|
||||
<string name="post_boosted_format">ο/η %s το προώθησε</string>
|
||||
<string name="title_posts_with_replies">Με απαντήσεις</string>
|
||||
<string name="post_content_warning_show_more">Δείτε περισσότερα</string>
|
||||
<string name="post_content_warning_show_less">Δείτε λιγότερα</string>
|
||||
<string name="post_sensitive_media_directions">Κλικ για να δείτε</string>
|
||||
<string name="notification_update_format">ο/η %s επεξεργάστηκε τη δημοσίευσή του/της</string>
|
||||
<string name="dialog_redraft_post_warning">Διαγραφή και αναδιατύπωση αυτής της δημοσίευσης;</string>
|
||||
</resources>
|
|
@ -547,4 +547,5 @@
|
|||
<string name="pref_title_notification_filter_updates">un message avec lequel j\'ai interagi est modifié</string>
|
||||
<string name="notification_update_name">Messages modifiés</string>
|
||||
<string name="notification_update_description">Notifications quand un post avec lequel vous avez interagi est modifié</string>
|
||||
<string name="title_login">Se connecter</string>
|
||||
</resources>
|
||||
|
|
|
@ -555,4 +555,5 @@
|
|||
<string name="notification_update_description">Brathan nuair a thèid postaichean a rinn thu conaltradh leotha a dheasachadh</string>
|
||||
<string name="pref_title_notification_filter_updates">chaidh post a rinn mi conaltradh leis a deasachadh</string>
|
||||
<string name="title_login">Clàraich a-steach</string>
|
||||
<string name="error_could_not_load_login_page">Cha b’ urrainn dhuinn duilleag a’ chlàraidh a-steach fhosgladh.</string>
|
||||
</resources>
|
|
@ -2,33 +2,33 @@
|
|||
<resources>
|
||||
<string name="error_generic">Si è verificato un errore.</string>
|
||||
<string name="error_network">Si è verificato un errore di rete! Per favore controlla la tua connessione e riprova!</string>
|
||||
<string name="error_empty">Questo non può esser vuoto.</string>
|
||||
<string name="error_invalid_domain">Inserito un dominio non valido</string>
|
||||
<string name="error_failed_app_registration">Autenticazione fallita con quell\'istanza.</string>
|
||||
<string name="error_no_web_browser_found">Non riesco a trovare un browser web da usare.</string>
|
||||
<string name="error_empty">Questo non può essere vuoto.</string>
|
||||
<string name="error_invalid_domain">Inserito dominio non valido</string>
|
||||
<string name="error_failed_app_registration">Autenticazione con quell\'istanza fallita.</string>
|
||||
<string name="error_no_web_browser_found">Nessun browser web utilizzabile trovato.</string>
|
||||
<string name="error_authorization_unknown">Si è verificato un errore di autenticazione non identificato.</string>
|
||||
<string name="error_authorization_denied">L\'autorizzazione è stata negata.</string>
|
||||
<string name="error_retrieving_oauth_token">Errore nell\'acquisizione del token di accesso.</string>
|
||||
<string name="error_compose_character_limit">Lo stato è troppo lungo!</string>
|
||||
<string name="error_image_upload_size">La dimensione dei file immagine deve essere inferiore a 8 MB.</string>
|
||||
<string name="error_video_upload_size">La dimensione dei file video deve essere inferiore a 40 MB.</string>
|
||||
<string name="error_media_upload_type">Questo tipo di file non può essere caricato.</string>
|
||||
<string name="error_media_upload_opening">Questo file non può essere aperto.</string>
|
||||
<string name="error_media_upload_permission">Il permesso di lettura della scheda sd è richiesto.</string>
|
||||
<string name="error_media_download_permission">È richiesta l\'autorizzazione di archiviazione.</string>
|
||||
<string name="error_media_upload_image_or_video">Immagini e video non possono essere allegati allo stesso stato.</string>
|
||||
<string name="error_media_upload_sending">Il caricamento non è riuscito.</string>
|
||||
<string name="error_sender_account_gone">Errore nell\'invio del toot.</string>
|
||||
<string name="error_authorization_denied">Autorizzazione negata.</string>
|
||||
<string name="error_retrieving_oauth_token">Acquisizione token di accesso fallita.</string>
|
||||
<string name="error_compose_character_limit">Il post è troppo lungo!</string>
|
||||
<string name="error_image_upload_size">Il file deve essere più piccolo di 8 MB.</string>
|
||||
<string name="error_video_upload_size">I video devono essere più piccoli di 40 MB.</string>
|
||||
<string name="error_media_upload_type">Quel tipo di file non può essere caricato.</string>
|
||||
<string name="error_media_upload_opening">Non è stato possibile aprire quel file.</string>
|
||||
<string name="error_media_upload_permission">È richiesto il permesso di leggere file.</string>
|
||||
<string name="error_media_download_permission">È richiesto il permesso di salvare file.</string>
|
||||
<string name="error_media_upload_image_or_video">Non è possibile allegare allo stesso post immagini e video.</string>
|
||||
<string name="error_media_upload_sending">Il caricamento è fallito.</string>
|
||||
<string name="error_sender_account_gone">Errore nell\'invio del post.</string>
|
||||
<string name="title_home">Home</string>
|
||||
<string name="title_notifications">Notifiche</string>
|
||||
<string name="title_public_local">Locale</string>
|
||||
<string name="title_public_federated">Federata</string>
|
||||
<string name="title_direct_messages">Messaggi Diretti</string>
|
||||
<string name="title_direct_messages">Messaggi diretti</string>
|
||||
<string name="title_tab_preferences">Schede</string>
|
||||
<string name="title_view_thread">Toot</string>
|
||||
<string name="title_view_thread">Conversazione</string>
|
||||
<string name="title_posts">Post</string>
|
||||
<string name="title_posts_with_replies">Con risposte</string>
|
||||
<string name="title_posts_pinned">Fissati in alto</string>
|
||||
<string name="title_posts_pinned">Fissati</string>
|
||||
<string name="title_follows">Seguiti</string>
|
||||
<string name="title_followers">Seguono</string>
|
||||
<string name="title_favourites">Preferiti</string>
|
||||
|
@ -43,15 +43,15 @@
|
|||
<string name="post_sensitive_media_title">Contenuto sensibile</string>
|
||||
<string name="post_media_hidden_title">Media nascosto</string>
|
||||
<string name="post_sensitive_media_directions">Clicca per visualizzare</string>
|
||||
<string name="post_content_warning_show_more">Mostra di Più</string>
|
||||
<string name="post_content_warning_show_less">Mostra Meno</string>
|
||||
<string name="post_content_warning_show_more">Mostra di più</string>
|
||||
<string name="post_content_warning_show_less">Mostra di meno</string>
|
||||
<string name="post_content_show_more">Espandi</string>
|
||||
<string name="post_content_show_less">Riduci</string>
|
||||
<string name="message_empty">Qui non c\'è niente.</string>
|
||||
<string name="footer_empty">Qui non c\'è niente. Trascina verso il basso per aggiornare!</string>
|
||||
<string name="notification_reblog_format">%s ha boostato il tuo toot</string>
|
||||
<string name="notification_favourite_format">%s ha messo il tuo toot nei preferiti</string>
|
||||
<string name="notification_follow_format">%s ti segue</string>
|
||||
<string name="message_empty">Qui non c\'è nulla.</string>
|
||||
<string name="footer_empty">Qui non c\'è nulla. Trascina verso il basso per aggiornare!</string>
|
||||
<string name="notification_reblog_format">%s ha boostato il tuo post</string>
|
||||
<string name="notification_favourite_format">%s ha messo il tuo post nei preferiti</string>
|
||||
<string name="notification_follow_format">%s ti ha seguito</string>
|
||||
<string name="report_username_format">Segnala @%s</string>
|
||||
<string name="report_comment_hint">Commenti aggiuntivi?</string>
|
||||
<string name="action_quick_reply">Risposta veloce</string>
|
||||
|
@ -79,7 +79,7 @@
|
|||
<string name="action_close">Chiudi</string>
|
||||
<string name="action_view_profile">Profilo</string>
|
||||
<string name="action_view_preferences">Preferenze</string>
|
||||
<string name="action_view_account_preferences">Preferenze Account</string>
|
||||
<string name="action_view_account_preferences">Preferenze account</string>
|
||||
<string name="action_view_favourites">Preferiti</string>
|
||||
<string name="action_view_mutes">Utenti silenziati</string>
|
||||
<string name="action_view_blocks">Utenti bloccati</string>
|
||||
|
@ -102,14 +102,14 @@
|
|||
<string name="action_reject">Rifiuta</string>
|
||||
<string name="action_search">Cerca</string>
|
||||
<string name="action_access_drafts">Bozze</string>
|
||||
<string name="action_toggle_visibility">Visibilità dei toot</string>
|
||||
<string name="action_content_warning">Avviso per il contenuto</string>
|
||||
<string name="action_toggle_visibility">Visibilità dei post</string>
|
||||
<string name="action_content_warning">Avviso di contenuto sensibile</string>
|
||||
<string name="action_emoji_keyboard">Tastiera emoji</string>
|
||||
<string name="action_add_tab">Aggiungi Scheda</string>
|
||||
<string name="action_add_tab">Aggiungi scheda</string>
|
||||
<string name="action_links">Collegamenti</string>
|
||||
<string name="action_mentions">Menzioni</string>
|
||||
<string name="action_hashtags">Hashtag</string>
|
||||
<string name="action_open_reblogger">Apri autore del boost</string>
|
||||
<string name="action_open_reblogger">Vai all\'autore del boost</string>
|
||||
<string name="action_open_reblogged_by">Mostra boost</string>
|
||||
<string name="action_open_faved_by">Mostra preferiti</string>
|
||||
<string name="title_hashtags_dialog">Hashtag</string>
|
||||
|
@ -117,11 +117,11 @@
|
|||
<string name="title_links_dialog">Collegamenti</string>
|
||||
<string name="action_open_media_n">Apri media #%d</string>
|
||||
<string name="download_image">Scaricando %1$s</string>
|
||||
<string name="action_copy_link">Copia il link</string>
|
||||
<string name="action_copy_link">Copia link</string>
|
||||
<string name="action_open_as">Apri come %s</string>
|
||||
<string name="action_share_as">Condividi come …</string>
|
||||
<string name="send_post_link_to">Condividi URL del toot su…</string>
|
||||
<string name="send_post_content_to">Condividi toot su…</string>
|
||||
<string name="send_post_link_to">Condividi URL del post su…</string>
|
||||
<string name="send_post_content_to">Condividi post su…</string>
|
||||
<string name="send_media_to">Condividi media su…</string>
|
||||
<string name="confirmation_reported">Inviato!</string>
|
||||
<string name="confirmation_unblocked">Utente sbloccato</string>
|
||||
|
@ -132,7 +132,7 @@
|
|||
<string name="hint_compose">Cosa succede?</string>
|
||||
<string name="hint_content_warning">Avviso di contenuto sensibile</string>
|
||||
<string name="hint_display_name">Mostra nome</string>
|
||||
<string name="hint_note">Bio</string>
|
||||
<string name="hint_note">Biografia</string>
|
||||
<string name="hint_search">Cerca…</string>
|
||||
<string name="search_no_results">Nessun risultato</string>
|
||||
<string name="label_quick_reply">Rispondi…</string>
|
||||
|
@ -152,22 +152,22 @@
|
|||
<string name="dialog_download_image">Scarica</string>
|
||||
<string name="dialog_message_cancel_follow_request">Revocare la richiesta di seguire?</string>
|
||||
<string name="dialog_unfollow_warning">Smettere di seguire questo account?</string>
|
||||
<string name="dialog_delete_post_warning">Eliminare questo toot?</string>
|
||||
<string name="dialog_delete_post_warning">Eliminare questo post\?</string>
|
||||
<string name="visibility_public">Pubblico: visibile sulla timeline pubblica</string>
|
||||
<string name="visibility_unlisted">Non Elencato: non visibile sulla timeline pubblica e locale</string>
|
||||
<string name="visibility_private">Solo Follower: visibile solo dai tuoi follower</string>
|
||||
<string name="visibility_unlisted">Non in elenco: non visibile sulla timeline pubblica e locale</string>
|
||||
<string name="visibility_private">Solo follower: visibile solo dai tuoi follower</string>
|
||||
<string name="visibility_direct">Diretto: visibile solo agli utenti menzionati</string>
|
||||
<string name="pref_title_edit_notification_settings">Modifica Notifiche</string>
|
||||
<string name="pref_title_edit_notification_settings">Notifiche</string>
|
||||
<string name="pref_title_notifications_enabled">Notifiche</string>
|
||||
<string name="pref_title_notification_alerts">Allarmi</string>
|
||||
<string name="pref_title_notification_alert_sound">Notifica con suoneria</string>
|
||||
<string name="pref_title_notification_alert_vibrate">Notifica con vibrazione</string>
|
||||
<string name="pref_title_notification_alert_light">Notifica con luce</string>
|
||||
<string name="pref_title_notification_filters">Notificami quando</string>
|
||||
<string name="pref_title_notification_filter_mentions">sono stato menzionato</string>
|
||||
<string name="pref_title_notification_filter_follows">sono stato seguito</string>
|
||||
<string name="pref_title_notification_filter_reblogs">i miei post sono boostati</string>
|
||||
<string name="pref_title_notification_filter_favourites">i miei post sono messi nei preferiti</string>
|
||||
<string name="pref_title_notification_filter_mentions">vengo menzionato</string>
|
||||
<string name="pref_title_notification_filter_follows">vengo seguito</string>
|
||||
<string name="pref_title_notification_filter_reblogs">i miei post vengono boostati</string>
|
||||
<string name="pref_title_notification_filter_favourites">i miei post vengono messi nei preferiti</string>
|
||||
<string name="pref_title_appearance_settings">Aspetto</string>
|
||||
<string name="pref_title_app_theme">Tema dell\'app</string>
|
||||
<string name="pref_title_timelines">Timeline</string>
|
||||
|
@ -176,10 +176,10 @@
|
|||
<string name="app_theme_light">Chiaro</string>
|
||||
<string name="app_theme_black">Nero</string>
|
||||
<string name="app_theme_auto">Automatico al tramonto</string>
|
||||
<string name="app_theme_system">Usa Tema di Sistema</string>
|
||||
<string name="app_theme_system">Usa tema di sistema</string>
|
||||
<string name="pref_title_browser_settings">Browser</string>
|
||||
<string name="pref_title_custom_tabs">Usa Tab Personalizzate di Chrome</string>
|
||||
<string name="pref_title_hide_follow_button">Nascondi il pulsante componi mentre scorri</string>
|
||||
<string name="pref_title_custom_tabs">Usa Custom Tabs di Chrome</string>
|
||||
<string name="pref_title_hide_follow_button">Nascondi il pulsante Componi mentre scorri</string>
|
||||
<string name="pref_title_language">Lingua</string>
|
||||
<string name="pref_title_post_filter">Filtraggio della timeline</string>
|
||||
<string name="pref_title_post_tabs">Schede</string>
|
||||
|
@ -193,25 +193,25 @@
|
|||
<string name="pref_title_http_proxy_port">Porta proxy HTTP</string>
|
||||
<string name="pref_default_post_privacy">Privacy di default dei post</string>
|
||||
<string name="pref_default_media_sensitivity">Segna sempre media come contenuto sensibile</string>
|
||||
<string name="pref_publishing">Pubblicando (sincronizzato con il server)</string>
|
||||
<string name="pref_publishing">Pubblicazione (sincronizzato con il server)</string>
|
||||
<string name="pref_failed_to_sync">Sincronizzazione delle impostazioni fallita</string>
|
||||
<string name="post_privacy_public">Pubblico</string>
|
||||
<string name="post_privacy_unlisted">Non elencato</string>
|
||||
<string name="post_privacy_followers_only">Solo per chi ti segue</string>
|
||||
<string name="pref_post_text_size">Dimensione del testo degli stati</string>
|
||||
<string name="post_privacy_unlisted">Non in elenco</string>
|
||||
<string name="post_privacy_followers_only">Solo follower</string>
|
||||
<string name="pref_post_text_size">Dimensione del testo dei post</string>
|
||||
<string name="post_text_size_smallest">Piccolissimo</string>
|
||||
<string name="post_text_size_small">Piccolo</string>
|
||||
<string name="post_text_size_medium">Normale</string>
|
||||
<string name="post_text_size_large">Grande</string>
|
||||
<string name="post_text_size_largest">Grandissimo</string>
|
||||
<string name="notification_mention_name">Nuove Menzioni</string>
|
||||
<string name="notification_mention_descriptions">Notifiche quando qualcuno ti menziona</string>
|
||||
<string name="notification_follow_name">Nuove persone che ti seguono</string>
|
||||
<string name="notification_follow_description">Notifiche su nuove persone che ti seguono</string>
|
||||
<string name="notification_mention_name">Nuove menzioni</string>
|
||||
<string name="notification_mention_descriptions">Notifiche di quando vieni menzionato da qualcuno</string>
|
||||
<string name="notification_follow_name">Nuovi follower</string>
|
||||
<string name="notification_follow_description">Notifiche su nuovi follower</string>
|
||||
<string name="notification_boost_name">Boost</string>
|
||||
<string name="notification_boost_description">Notifiche quando i tuoi toot vengono boostati</string>
|
||||
<string name="notification_boost_description">Notifiche sui tuoi post che vengono boostati</string>
|
||||
<string name="notification_favourite_name">Preferiti</string>
|
||||
<string name="notification_favourite_description">Notifiche quando i tuoi toot vengono segnati come preferiti</string>
|
||||
<string name="notification_favourite_description">Notifiche sui tuoi post che vengono segnati come preferiti</string>
|
||||
<string name="notification_mention_format">%s ti ha menzionato</string>
|
||||
<string name="notification_summary_large">%1$s, %2$s, %3$s e %4$d altri</string>
|
||||
<string name="notification_summary_medium">%1$s, %2$s e %3$s</string>
|
||||
|
@ -234,14 +234,14 @@
|
|||
-->
|
||||
<string name="about_project_site">Sito web del progetto:\n
|
||||
https://accelf.net/yuito</string>
|
||||
<string name="about_bug_feature_request_site">Segnala problemi & richiedi funzionalità:\n
|
||||
https://github.com/accelforce/Yuito/issues</string>
|
||||
<string name="about_bug_feature_request_site">Segnala problemi e richiedi funzionalità:
|
||||
\n https://github.com/accelforce/Yuito/issues</string>
|
||||
<string name="about_tusky_account">Profilo di Yuito</string>
|
||||
<string name="post_share_content">Condividi contenuto del toot</string>
|
||||
<string name="post_share_link">Condividi link al toot</string>
|
||||
<string name="post_share_content">Condividi contenuto del post</string>
|
||||
<string name="post_share_link">Condividi link al post</string>
|
||||
<string name="post_media_images">Immagini</string>
|
||||
<string name="post_media_video">Video</string>
|
||||
<string name="state_follow_requested">In attesa di approvazione</string>
|
||||
<string name="state_follow_requested">Richiesta inviata</string>
|
||||
<!--These are for timestamps on statuses. For example: "16s" or "2d"-->
|
||||
<string name="abbreviated_in_years">in %d a</string>
|
||||
<string name="abbreviated_in_days">in %dg</string>
|
||||
|
@ -250,14 +250,14 @@
|
|||
<string name="abbreviated_in_seconds">in %ds</string>
|
||||
<string name="abbreviated_years_ago">%da</string>
|
||||
<string name="abbreviated_days_ago">%dg</string>
|
||||
<string name="abbreviated_hours_ago">%d o</string>
|
||||
<string name="abbreviated_minutes_ago">%d min</string>
|
||||
<string name="abbreviated_seconds_ago">%d s</string>
|
||||
<string name="follows_you">Seguono te</string>
|
||||
<string name="pref_title_alway_show_sensitive_media">Mostra sempre tutto il contenuto sensibile</string>
|
||||
<string name="abbreviated_hours_ago">%do</string>
|
||||
<string name="abbreviated_minutes_ago">%dmin</string>
|
||||
<string name="abbreviated_seconds_ago">%ds</string>
|
||||
<string name="follows_you">Ti segue</string>
|
||||
<string name="pref_title_alway_show_sensitive_media">Mostra sempre tutti i contenuti sensibili</string>
|
||||
<string name="title_media">Media</string>
|
||||
<string name="replying_to">Rispondendo a @%s</string>
|
||||
<string name="load_more_placeholder_text">carica di più</string>
|
||||
<string name="load_more_placeholder_text">carica altri</string>
|
||||
<string name="pref_title_public_filter_keywords">Timeline pubbliche</string>
|
||||
<string name="pref_title_thread_filter_keywords">Conversazioni</string>
|
||||
<string name="filter_addition_dialog_title">Aggiungi filtro</string>
|
||||
|
@ -265,7 +265,7 @@
|
|||
<string name="filter_dialog_remove_button">Rimuovi</string>
|
||||
<string name="filter_dialog_update_button">Aggiorna</string>
|
||||
<string name="filter_add_description">Frase da filtrare</string>
|
||||
<string name="add_account_name">Aggiungi Account</string>
|
||||
<string name="add_account_name">Aggiungi account</string>
|
||||
<string name="add_account_description">Aggiungi un nuovo Account Mastodon</string>
|
||||
<string name="action_lists">Liste</string>
|
||||
<string name="title_lists">Liste</string>
|
||||
|
@ -288,29 +288,29 @@
|
|||
<string name="action_set_caption">Inserisci descrizione</string>
|
||||
<string name="action_remove">Rimuovi</string>
|
||||
<string name="lock_account_label">Blocca account</string>
|
||||
<string name="lock_account_label_description">Richiede la tua approvazione manuale di chi ti segue</string>
|
||||
<string name="lock_account_label_description">Richiedi una tua approvazione manuale per seguirti</string>
|
||||
<string name="compose_save_draft">Salvare bozza?</string>
|
||||
<string name="send_post_notification_title">Inviando il Toot…</string>
|
||||
<string name="send_post_notification_title">Inviando il post…</string>
|
||||
<string name="send_post_notification_error_title">Errore durante l\'invio</string>
|
||||
<string name="send_post_notification_channel_name">Invio Toot</string>
|
||||
<string name="send_post_notification_channel_name">Invio post</string>
|
||||
<string name="send_post_notification_cancel_title">Invio annullato</string>
|
||||
<string name="send_post_notification_saved_content">Una copia del toot è stata salvata nelle tue bozze</string>
|
||||
<string name="send_post_notification_saved_content">Una copia del post è stata salvata nelle tue bozze</string>
|
||||
<string name="action_compose_shortcut">Componi</string>
|
||||
<string name="error_no_custom_emojis">La tua istanza %s non ha nessuna emoji personalizzata</string>
|
||||
<string name="emoji_style">Stile di emoji</string>
|
||||
<string name="system_default">Predefiniti del sistema</string>
|
||||
<string name="emoji_style">Stile delle emoji</string>
|
||||
<string name="system_default">Predefinite del sistema</string>
|
||||
<string name="download_fonts">Dovrai prima scaricare questo pacchetto di emoji</string>
|
||||
<string name="performing_lookup_title">Eseguendo una ricerca…</string>
|
||||
<string name="expand_collapse_all_posts">Espandi/Riduci tutti gli stati</string>
|
||||
<string name="action_open_post">Apri toot</string>
|
||||
<string name="performing_lookup_title">Ricerca in corso…</string>
|
||||
<string name="expand_collapse_all_posts">Espandi/riduci tutti i post</string>
|
||||
<string name="action_open_post">Apri post</string>
|
||||
<string name="restart_required">Riavvio dell\'app richiesto</string>
|
||||
<string name="restart_emoji">Devi riavviare Yuito per applicare queste modifiche</string>
|
||||
<string name="later">Più tardi</string>
|
||||
<string name="restart">Riavvia</string>
|
||||
<string name="caption_systememoji">Le emoji predefinite del tuo dispositivo</string>
|
||||
<string name="caption_blobmoji">Le emoji Blob conosciute da Android 4.4-7.1</string>
|
||||
<string name="caption_blobmoji">Le emoji Blob di Android 4.4-7.1</string>
|
||||
<string name="caption_twemoji">Le emoji standard di Mastodon</string>
|
||||
<string name="download_failed">Scaricamento fallito</string>
|
||||
<string name="download_failed">Download fallito</string>
|
||||
<string name="profile_badge_bot_text">Bot</string>
|
||||
<string name="account_moved_description">%1$s si è spostato su:</string>
|
||||
<string name="reblog_private">Boost con la visibilità del post di origine</string>
|
||||
|
@ -323,63 +323,60 @@
|
|||
<string name="profile_metadata_add">aggiungi dati</string>
|
||||
<string name="profile_metadata_label_label">Etichetta</string>
|
||||
<string name="profile_metadata_content_label">Contenuto</string>
|
||||
<string name="pref_title_absolute_time">Usa tempo assoluto</string>
|
||||
<string name="pref_title_absolute_time">Usa ora assoluta</string>
|
||||
<string name="label_remote_account">Il profilo dell\'utente mostrato qui sotto potrebbe essere incompleto. Premi per aprire il profilo completo nel browser.</string>
|
||||
<string name="unpin_action">Non fissare</string>
|
||||
<string name="unpin_action">Smetti di fissare</string>
|
||||
<string name="pin_action">Fissa</string>
|
||||
<plurals name="favs">
|
||||
<item quantity="one"><b>%1$s</b> Mi piace</item>
|
||||
<item quantity="other"><b>%1$s</b> Mi piace</item>
|
||||
<item quantity="one"><b>%1$s</b> Preferito</item>
|
||||
<item quantity="other"><b>%1$s</b> Preferiti</item>
|
||||
</plurals>
|
||||
<plurals name="reblogs">
|
||||
<item quantity="one"><b>%s</b> Boost</item>
|
||||
<item quantity="other"><b>%s</b> Boost</item>
|
||||
</plurals>
|
||||
<string name="title_reblogged_by">Boostato da</string>
|
||||
<string name="title_favourited_by">Preferito da</string>
|
||||
<string name="title_favourited_by">Aggiunto ai preferiti da</string>
|
||||
<string name="conversation_1_recipients">%1$s</string>
|
||||
<string name="conversation_2_recipients">%1$s e %2$s</string>
|
||||
<string name="conversation_more_recipients">%1$s, %2$s ed altri %3$d</string>
|
||||
<plurals name="max_tab_number_reached">
|
||||
<item quantity="one">limite massimo di %1$d tab raggiunto</item>
|
||||
<item quantity="other">limite massimo di %1$d tab raggiunto</item>
|
||||
<item quantity="one">limite massimo di %1$d scheda raggiunto</item>
|
||||
<item quantity="other">limite massimo di %1$d schede raggiunto</item>
|
||||
</plurals>
|
||||
<string name="description_post_media"> Media: %s
|
||||
</string>
|
||||
<string name="description_post_media">Media: %s</string>
|
||||
<string name="description_post_cw"> Contenuto sensibile: %s
|
||||
</string>
|
||||
<string name="description_post_media_no_description_placeholder"> Nessuna descrizione
|
||||
</string>
|
||||
<string name="description_post_reblogged"> Ribloggato
|
||||
</string>
|
||||
<string name="description_post_favourited"> Apprezzato
|
||||
</string>
|
||||
<string name="description_post_favourited">Messo nei preferiti</string>
|
||||
<string name="description_visiblity_public"> Pubblico
|
||||
</string>
|
||||
<string name="description_visiblity_unlisted"> Non elencato
|
||||
</string>
|
||||
<string name="description_visiblity_private">Seguaci</string>
|
||||
<string name="description_visiblity_unlisted">Non in elenco</string>
|
||||
<string name="description_visiblity_private">Solo follower</string>
|
||||
<string name="description_visiblity_direct"> Diretti
|
||||
</string>
|
||||
<string name="hint_list_name">Nome della lista</string>
|
||||
<string name="download_media">Scarica media</string>
|
||||
<string name="downloading_media">Scaricando media</string>
|
||||
<string name="compose_shortcut_long_label">Componi Toot</string>
|
||||
<string name="compose_shortcut_long_label">Componi post</string>
|
||||
<string name="edit_hashtag_hint">Hashtag senza #</string>
|
||||
<string name="compose_shortcut_short_label">Componi</string>
|
||||
<string name="notifications_clear">Pulisci</string>
|
||||
<string name="notifications_clear">Svuota</string>
|
||||
<string name="notifications_apply_filter">Filtra</string>
|
||||
<string name="filter_apply">Applica</string>
|
||||
<string name="pref_title_bot_overlay">Mostra indicatore per bot</string>
|
||||
<string name="pref_title_bot_overlay">Mostra indicatore bot</string>
|
||||
<string name="notification_clear_text">Sei sicuro di voler permanentemente eliminare tutte le tue notifiche\?</string>
|
||||
<string name="action_delete_and_redraft">Cancella e riscrivi</string>
|
||||
<string name="dialog_redraft_post_warning">Cancellare e riscrivere questo toot\?</string>
|
||||
<string name="dialog_redraft_post_warning">Cancellare e riscrivere questo post\?</string>
|
||||
<plurals name="poll_info_votes">
|
||||
<item quantity="one">%s voto</item>
|
||||
<item quantity="other">%s voti</item>
|
||||
</plurals>
|
||||
<string name="poll_info_time_absolute">termina alle %s</string>
|
||||
<string name="poll_info_closed">terminato</string>
|
||||
<string name="poll_info_time_absolute">si conclude alle %s</string>
|
||||
<string name="poll_info_closed">concluso</string>
|
||||
<string name="poll_vote">Vota</string>
|
||||
<string name="title_domain_mutes">Domini nascosti</string>
|
||||
<string name="action_view_domain_mutes">Domini nascosti</string>
|
||||
|
@ -387,37 +384,37 @@
|
|||
<string name="confirmation_domain_unmuted">%s mostrati</string>
|
||||
<string name="mute_domain_warning">Sei sicuro di voler bloccare tutto %s\? Non vedrai nessun contenuto da quel dominio in nessuna timeline pubblica o nelle tue notifiche. I tuoi seguaci che stanno in quel dominio saranno rimossi.</string>
|
||||
<string name="mute_domain_warning_dialog_ok">Nascondi l\'intero dominio</string>
|
||||
<string name="pref_title_notification_filter_poll">Le votazioni sono finite</string>
|
||||
<string name="pref_title_animate_gif_avatars">Mostra le animazioni delle GIF negli avatar</string>
|
||||
<string name="pref_title_notification_filter_poll">dei sondaggi si sono conclusi</string>
|
||||
<string name="pref_title_animate_gif_avatars">Riproduci animazioni avatar</string>
|
||||
<string name="notification_poll_name">Votazioni</string>
|
||||
<string name="notification_poll_description">Notifiche sulle votazioni che sono concluse</string>
|
||||
<string name="notification_poll_description">Notifiche sulle votazioni che si sono concluse</string>
|
||||
<string name="filter_dialog_whole_word">Parola intera</string>
|
||||
<string name="filter_dialog_whole_word_description">Quando la parola chiave o la frase sono composte da soli caratteri alfanumerici, sarà applicata solo se corrisponde alla parola completa</string>
|
||||
<string name="caption_notoemoji">Insieme di emoji di Google</string>
|
||||
<string name="caption_notoemoji">Set di emoji di Google</string>
|
||||
<string name="title_bookmarks">Segnalibri</string>
|
||||
<string name="action_bookmark">Segnalibro</string>
|
||||
<string name="action_edit">Modifica</string>
|
||||
<string name="action_view_bookmarks">Segnalibri</string>
|
||||
<string name="action_add_poll">Aggiungi sondaggio</string>
|
||||
<string name="about_powered_by_tusky">Fatto con Tusky</string>
|
||||
<string name="pref_title_alway_open_spoiler">Espandi sempre i toot segnalati come contenuto sensibile</string>
|
||||
<string name="description_post_bookmarked">Messo nei segalibri</string>
|
||||
<string name="about_powered_by_tusky">Fatto usando Tusky</string>
|
||||
<string name="pref_title_alway_open_spoiler">Espandi sempre i post segnalati come contenuto sensibile</string>
|
||||
<string name="description_post_bookmarked">Messo nei segnalibri</string>
|
||||
<string name="description_poll">Sondaggio con scelte: %1$s, %2$s, %3$s, %4$s; %5$s</string>
|
||||
<string name="select_list_title">Scegli lista</string>
|
||||
<string name="list">Lista</string>
|
||||
<string name="compose_preview_image_description">Azioni per l\'immagine %s</string>
|
||||
<string name="poll_ended_voted">Un sondaggio che hai votato è terminato</string>
|
||||
<string name="poll_ended_created">Un sondaggio che hai creato è terminato</string>
|
||||
<string name="poll_ended_voted">Un sondaggio che hai votato si è concluso</string>
|
||||
<string name="poll_ended_created">Un sondaggio che hai creato si è concluso</string>
|
||||
<plurals name="poll_timespan_days">
|
||||
<item quantity="one">%d giorno rimasti</item>
|
||||
<item quantity="one">%d giorno rimasto</item>
|
||||
<item quantity="other">%d giorni rimasti</item>
|
||||
</plurals>
|
||||
<plurals name="poll_timespan_hours">
|
||||
<item quantity="one">%d ora rimasti</item>
|
||||
<item quantity="one">%d ora rimasta</item>
|
||||
<item quantity="other">%d ore rimasti</item>
|
||||
</plurals>
|
||||
<plurals name="poll_timespan_minutes">
|
||||
<item quantity="one">%d minuto rimasti</item>
|
||||
<item quantity="one">%d minuto rimasto</item>
|
||||
<item quantity="other">%d minuti rimasti</item>
|
||||
</plurals>
|
||||
<plurals name="poll_timespan_seconds">
|
||||
|
@ -427,12 +424,12 @@
|
|||
<string name="button_continue">Continua</string>
|
||||
<string name="button_back">Indietro</string>
|
||||
<string name="button_done">Fatto</string>
|
||||
<string name="report_sent_success">Inviato con successo @%s</string>
|
||||
<string name="report_sent_success">Segnalato @%s con successo</string>
|
||||
<string name="hint_additional_info">Altri commenti</string>
|
||||
<string name="report_remote_instance">Inoltra a %s</string>
|
||||
<string name="failed_report">Errore durante l\'invio</string>
|
||||
<string name="failed_fetch_posts">Errore durante lo scaricamento degli aggiornamenti</string>
|
||||
<string name="report_description_1">La segnalazione sarà inviata al moderatore del tuo server. Puoi spiegare perchè vuoi segnalare questo utente qui sotto:</string>
|
||||
<string name="failed_report">Segnalazione fallita</string>
|
||||
<string name="failed_fetch_posts">Scaricamento dei post fallito</string>
|
||||
<string name="report_description_1">La segnalazione sarà inviata al moderatore del tuo server. Puoi spiegare perchè stai segnalando questo utente qui sotto:</string>
|
||||
<string name="report_description_remote_instance">L\'utente è su un altro server. Mandare una copia della segnalazione anche lì\?</string>
|
||||
<string name="title_accounts">Utenti</string>
|
||||
<string name="failed_search">Errore durante la ricerca</string>
|
||||
|
@ -450,10 +447,10 @@
|
|||
<string name="poll_new_choice_hint">Scelta %d</string>
|
||||
<string name="edit_poll">Modifica</string>
|
||||
<string name="post_lookup_error_format">Errore nella ricerca del post %s</string>
|
||||
<string name="title_scheduled_posts">Toot programmati</string>
|
||||
<string name="action_access_scheduled_posts">Toot programmati</string>
|
||||
<string name="action_schedule_post">Programma un toot</string>
|
||||
<string name="action_reset_schedule">RIpristina</string>
|
||||
<string name="title_scheduled_posts">Post programmati</string>
|
||||
<string name="action_access_scheduled_posts">Post programmati</string>
|
||||
<string name="action_schedule_post">Programma un post</string>
|
||||
<string name="action_reset_schedule">Ripristina</string>
|
||||
<string name="poll_info_format"> <!-- 15 votes • 1 hour left --> %1$s • %2$s</string>
|
||||
<string name="no_drafts">Non hai bozze.</string>
|
||||
<plurals name="poll_info_people">
|
||||
|
@ -464,66 +461,66 @@
|
|||
<string name="add_hashtag_title">Aggiungi hashtag</string>
|
||||
<string name="dialog_mute_warning">Silenziare @%s\?</string>
|
||||
<string name="dialog_block_warning">Bloccare @%s\?</string>
|
||||
<string name="action_unmute_domain">Non silenziare più %s</string>
|
||||
<string name="action_unmute_conversation">Smetti di silenziare conversazione</string>
|
||||
<string name="action_unmute_domain">Smetti di silenziare %s</string>
|
||||
<string name="action_unmute_conversation">Smetti di silenziare la conversazione</string>
|
||||
<string name="action_mute_conversation">Silenzia conversazione</string>
|
||||
<string name="notification_follow_request_format">%s ha chiesto di seguirti</string>
|
||||
<string name="error_audio_upload_size">La dimensione dei file audio deve essere inferiore a 40 MB.</string>
|
||||
<string name="error_audio_upload_size">I file audio devono essere più piccoli di 40 MB.</string>
|
||||
<string name="action_unmute_desc">Smetti di silenziare %s</string>
|
||||
<string name="notification_follow_request_name">Richieste di seguirti</string>
|
||||
<string name="account_note_saved">Salvato!</string>
|
||||
<string name="account_note_hint">La tua nota privata su questo account</string>
|
||||
<string name="pref_title_hide_top_toolbar">Nascondi il titolo della barra degli strumenti in alto</string>
|
||||
<string name="pref_title_confirm_reblogs">Mostra la finestra di dialogo di conferma prima del boosting</string>
|
||||
<string name="pref_title_confirm_reblogs">Mostra la finestra di conferma prima di boostare</string>
|
||||
<string name="pref_title_show_cards_in_timelines">Mostra le anteprime dei collegamenti nelle timelines</string>
|
||||
<string name="warning_scheduling_interval">Mastodon ha un intervallo minimo di programmazione di 5 minuti.</string>
|
||||
<string name="warning_scheduling_interval">Mastodon ha un intervallo di programmazione minimo di 5 minuti.</string>
|
||||
<string name="no_announcements">Non ci sono annunci.</string>
|
||||
<string name="no_scheduled_posts">Non hai stati pianificati.</string>
|
||||
<string name="no_scheduled_posts">Non hai post pianificati.</string>
|
||||
<string name="pref_title_enable_swipe_for_tabs">Abilita il gesto di scorrimento per passare da una scheda all\'altra</string>
|
||||
<string name="notification_follow_request_description">Notifiche sulle richieste di essere seguiti</string>
|
||||
<string name="pref_main_nav_position_option_bottom">Parte inferiore</string>
|
||||
<string name="pref_main_nav_position_option_bottom">In fondo</string>
|
||||
<string name="pref_main_nav_position_option_top">In cima</string>
|
||||
<string name="pref_main_nav_position">Posizione di navigazione principale</string>
|
||||
<string name="pref_title_gradient_for_media">Mostra sfumature colorate per i media nascosti</string>
|
||||
<string name="pref_main_nav_position">Posizione barra di navigazione principale</string>
|
||||
<string name="pref_title_gradient_for_media">Mostra gradienti colorati per i media nascosti</string>
|
||||
<string name="dialog_mute_hide_notifications">Nascondi notifiche</string>
|
||||
<string name="action_mute_notifications_desc">Disattiva le notifiche da %s</string>
|
||||
<string name="action_unmute_notifications_desc">Riattiva le notifiche da %s</string>
|
||||
<string name="title_announcements">Annunci</string>
|
||||
<string name="pref_title_notification_filter_follow_requests">Richieste di seguirti</string>
|
||||
<string name="pref_title_notification_filter_follow_requests">mi viene richiesto di seguirmi</string>
|
||||
<string name="wellbeing_hide_stats_profile">Nascondi statistiche quantitative sui profili</string>
|
||||
<string name="wellbeing_hide_stats_posts">Nascondi le statistiche quantitative sui post</string>
|
||||
<string name="limit_notifications">Limita le notifiche della timeline</string>
|
||||
<string name="review_notifications">Revisiona le notifiche</string>
|
||||
<string name="limit_notifications">Limita le notifiche dalla timeline</string>
|
||||
<string name="review_notifications">Rivedi le notifiche</string>
|
||||
<string name="pref_title_wellbeing_mode">Benessere</string>
|
||||
<string name="notification_subscription_description">Notifiche di quando qualcuno a cui sei iscritto ha pubblicato un nuovo toot</string>
|
||||
<string name="notification_subscription_name">Nuovi toots</string>
|
||||
<string name="pref_title_notification_filter_subscriptions">qualcuno a cui sono iscritto ha pubblicato un nuovo toot</string>
|
||||
<string name="notification_subscription_format">%s appena pubblicato</string>
|
||||
<string name="notification_subscription_description">Notifiche di nuovi post di qualcuno a cui sei iscritto</string>
|
||||
<string name="notification_subscription_name">Nuovi post</string>
|
||||
<string name="pref_title_notification_filter_subscriptions">qualcuno che seguo ha pubblicato un nuovo post</string>
|
||||
<string name="notification_subscription_format">%s ha appena pubblicato</string>
|
||||
<plurals name="error_upload_max_media_reached">
|
||||
<item quantity="one">Non puoi caricare più di %1$d allegato multimediale.</item>
|
||||
<item quantity="other">Non puoi caricare più di %1$d allegati multimediali.</item>
|
||||
</plurals>
|
||||
<string name="drafts_post_reply_removed">Il toot a cui hai scritto una risposta è stato rimosso</string>
|
||||
<string name="draft_deleted">Bozza cancellata</string>
|
||||
<string name="drafts_post_failed_to_send">L\'invio di questo toot è fallito!</string>
|
||||
<string name="drafts_post_reply_removed">Il post a cui hai scritto una risposta è stato rimosso</string>
|
||||
<string name="draft_deleted">Bozza eliminata</string>
|
||||
<string name="drafts_post_failed_to_send">L\'invio di questo post è fallito!</string>
|
||||
<string name="dialog_delete_list_warning">Sei sicuro di voler cancellare la lista %s\?</string>
|
||||
<string name="duration_indefinite">Indefinita</string>
|
||||
<string name="label_duration">Durata</string>
|
||||
<string name="post_media_attachments">Allegati</string>
|
||||
<string name="post_media_audio">Audio</string>
|
||||
<string name="pref_title_animate_custom_emojis">Mostra le animazioni delle emojis personalizzate</string>
|
||||
<string name="pref_title_animate_custom_emojis">Riproduci emoji animate</string>
|
||||
<string name="action_subscribe_account">Iscriviti</string>
|
||||
<string name="dialog_delete_conversation_warning">Rimuovere questa conversazione\?</string>
|
||||
<string name="drafts_failed_loading_reply">Errore nel recuperare le informazioni sulla risposta</string>
|
||||
<string name="drafts_failed_loading_reply">Errore nel recupero delle informazioni sulla risposta</string>
|
||||
<string name="action_unsubscribe_account">Disiscriviti</string>
|
||||
<string name="action_delete_conversation">Rimuovi conversazione</string>
|
||||
<string name="action_delete_conversation">Elimina conversazione</string>
|
||||
<string name="wellbeing_mode_notice">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 - Conteggio dei Preferiti/Boost nei post
|
||||
\n - Statistiche riguardo a Preferiti/Post nei profili
|
||||
\n
|
||||
\n Le notifiche push non saranno influenzate, ma puoi rivedere le tue impostazioni delle notifiche manualmente.</string>
|
||||
\n Le notifiche push non saranno influenzate, ma puoi modificare le tue impostazioni delle notifiche manualmente.</string>
|
||||
<string name="action_unbookmark">Rimuovi segnalibro</string>
|
||||
<string name="pref_title_confirm_favourites">Chiedi conferma prima di boostare</string>
|
||||
<string name="duration_14_days">14 giorni</string>
|
||||
|
@ -532,5 +529,16 @@
|
|||
<string name="duration_90_days">90 giorni</string>
|
||||
<string name="duration_180_days">180 giorni</string>
|
||||
<string name="duration_365_days">365 giorni</string>
|
||||
<string name="follow_requests_info">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.</string>
|
||||
<string name="follow_requests_info">Anche se il tuo account non è bloccato, lo staff di %1$s ha pensato che potresti voler verificare le richieste di seguirti da parte questi account manualmente.</string>
|
||||
<string name="notification_sign_up_format">%s si è registrato</string>
|
||||
<string name="pref_title_notification_filter_sign_ups">qualcuno si è registrato</string>
|
||||
<string name="title_login">Login</string>
|
||||
<string name="notification_update_format">%s ha modificato il suo post</string>
|
||||
<string name="pref_title_notification_filter_updates">un post con cui ho interagito è stato modificato</string>
|
||||
<string name="tusky_compose_post_quicksetting_label">Componi post</string>
|
||||
<string name="notification_sign_up_name">Registrazioni</string>
|
||||
<string name="notification_sign_up_description">Notifiche di quando qualcuno si è registrato</string>
|
||||
<string name="notification_update_name">Modifiche ai post</string>
|
||||
<string name="notification_update_description">Notifiche di quando i post con cui hai interagito vengono modificati</string>
|
||||
<string name="error_could_not_load_login_page">Non è stato possibile caricare la pagina di login.</string>
|
||||
</resources>
|
||||
|
|
|
@ -527,4 +527,5 @@
|
|||
<string name="notification_update_name">Redigerte innlegg</string>
|
||||
<string name="notification_update_description">Varslinger når et innlegg du har hatt en interaksjon med er redigert</string>
|
||||
<string name="title_login">Innlogging</string>
|
||||
<string name="error_could_not_load_login_page">Klarte ikke å laste innloggingssiden.</string>
|
||||
</resources>
|
||||
|
|
|
@ -10,20 +10,20 @@
|
|||
</plurals>
|
||||
<string name="replying_to">A responder a @%s</string>
|
||||
<string name="action_edit_list">Editar a lista</string>
|
||||
<string name="lock_account_label_description">Exige a aprovação manual de seguidores</string>
|
||||
<string name="lock_account_label_description">Necessita de aprovar manualmente os seguidores</string>
|
||||
<string name="compose_save_draft">Guardar rascunho\?</string>
|
||||
<string name="later">Depois</string>
|
||||
<string name="unpin_action">Desafixar</string>
|
||||
<string name="conversation_2_recipients">%1$s e %2$s</string>
|
||||
<string name="pref_title_wellbeing_mode">Bem-estar</string>
|
||||
<string name="tusky_compose_post_quicksetting_label">Escrever Toot</string>
|
||||
<string name="dialog_delete_list_warning">Deseja excluir a lista %s\?</string>
|
||||
<string name="follow_requests_info">Apesar do seu perfil não ser trancado, %1$s exige que você revise a solicitação para te seguir destes perfis manualmente.</string>
|
||||
<string name="action_subscribe_account">Notificar</string>
|
||||
<string name="action_unsubscribe_account">Cancelar</string>
|
||||
<string name="dialog_delete_list_warning">Pretende remover a lista %s\?</string>
|
||||
<string name="follow_requests_info">Apesar do seu perfil não ser privado, %1$s exige que você reveja manualmente as solicitações para te seguir destes perfis.</string>
|
||||
<string name="action_subscribe_account">Subscrever</string>
|
||||
<string name="action_unsubscribe_account">Remover subscrição</string>
|
||||
<string name="error_authorization_denied">Autorização negada.</string>
|
||||
<string name="error_retrieving_oauth_token">Erro ao adquirir token de login.</string>
|
||||
<string name="error_compose_character_limit">O toot é muito longo!</string>
|
||||
<string name="error_compose_character_limit">O toot é muito extenso!</string>
|
||||
<string name="error_image_upload_size">O ficheiro deve ter menor de 8MB.</string>
|
||||
<string name="error_video_upload_size">Os ficheiros de vídeo devem ter menor de 40MB.</string>
|
||||
<string name="error_audio_upload_size">Os ficheiros de áudio devem ter menor de 40MB.</string>
|
||||
|
@ -48,13 +48,13 @@
|
|||
<string name="title_followers">Seguidores</string>
|
||||
<string name="title_favourites">Favoritos</string>
|
||||
<string name="title_bookmarks">Itens guardados</string>
|
||||
<string name="title_mutes">Utilizadors silenciados</string>
|
||||
<string name="title_blocks">Utilizadors bloqueados</string>
|
||||
<string name="title_mutes">Utilizadores silenciados</string>
|
||||
<string name="title_blocks">Utilizadores bloqueados</string>
|
||||
<string name="title_domain_mutes">Instâncias bloqueadas</string>
|
||||
<string name="title_follow_requests">Seguidores Pendentes</string>
|
||||
<string name="post_sensitive_media_title">Conteúdo sensível</string>
|
||||
<string name="title_edit_profile">Editar perfil</string>
|
||||
<string name="post_media_hidden_title">Conteúdo ocultado</string>
|
||||
<string name="post_media_hidden_title">Conteúdo multimédia ocultado</string>
|
||||
<string name="title_drafts">Rascunhos</string>
|
||||
<string name="post_sensitive_media_directions">Toque para ver</string>
|
||||
<string name="post_content_warning_show_more">Mostrar Mais</string>
|
||||
|
@ -67,7 +67,7 @@
|
|||
<string name="post_username_format">\@%s</string>
|
||||
<string name="post_boosted_format">%s fez boost</string>
|
||||
<string name="message_empty">Nada aqui.</string>
|
||||
<string name="footer_empty">Nada aqui. Arraste para baixo para atualizar!</string>
|
||||
<string name="footer_empty">Nada para ver aqui. Arraste para baixo para atualizar!</string>
|
||||
<string name="notification_reblog_format">%s fez boost ao seu toot</string>
|
||||
<string name="notification_favourite_format">%s adicionou o seu toot aos favoritos</string>
|
||||
<string name="notification_follow_format">%s está a seguir-te</string>
|
||||
|
@ -77,7 +77,7 @@
|
|||
<string name="notification_update_format">%s editou um toot</string>
|
||||
<string name="report_username_format">Denunciar @%s</string>
|
||||
<string name="report_comment_hint">Comentários adicionais\?</string>
|
||||
<string name="action_quick_reply">Resposta rápida</string>
|
||||
<string name="action_quick_reply">Resposta Rápida</string>
|
||||
<string name="action_reply">Responder</string>
|
||||
<string name="action_reblog">Fazer boost</string>
|
||||
<string name="action_unreblog">Desfazer boost</string>
|
||||
|
@ -89,7 +89,7 @@
|
|||
<string name="action_compose">Escrever</string>
|
||||
<string name="action_login">Entrar com Mastodon</string>
|
||||
<string name="action_logout">Sair</string>
|
||||
<string name="action_logout_confirm">Tem certeza de que deseja sair da conta %1$s\?</string>
|
||||
<string name="action_logout_confirm">Tem a certeza que deseja sair da conta %1$s\?</string>
|
||||
<string name="action_follow">Seguir</string>
|
||||
<string name="action_unfollow">Deixar de seguir</string>
|
||||
<string name="action_block">Bloquear</string>
|
||||
|
@ -106,12 +106,12 @@
|
|||
<string name="action_retry">Tentar novamente</string>
|
||||
<string name="action_close">Fechar</string>
|
||||
<string name="action_view_profile">Perfil</string>
|
||||
<string name="action_view_preferences">Preferências</string>
|
||||
<string name="action_view_account_preferences">Preferências da Conta</string>
|
||||
<string name="action_view_preferences">Configurações</string>
|
||||
<string name="action_view_account_preferences">Configurações da Conta</string>
|
||||
<string name="action_view_favourites">Favoritos</string>
|
||||
<string name="action_view_bookmarks">Guardados</string>
|
||||
<string name="action_view_mutes">utilizadors silenciados</string>
|
||||
<string name="action_view_blocks">utilizadors bloqueados</string>
|
||||
<string name="action_view_bookmarks">Itens Guardados</string>
|
||||
<string name="action_view_mutes">Utilizadores silenciados</string>
|
||||
<string name="action_view_blocks">Utilizadores bloqueados</string>
|
||||
<string name="action_view_domain_mutes">Instâncias bloqueadas</string>
|
||||
<string name="action_view_follow_requests">Seguidores Pendentes</string>
|
||||
<string name="action_view_media">Conteúdo multimédia</string>
|
||||
|
@ -138,13 +138,13 @@
|
|||
<string name="action_toggle_visibility">Privacidade do toot</string>
|
||||
<string name="action_content_warning">Aviso de conteúdo</string>
|
||||
<string name="action_emoji_keyboard">Teclado de emojis</string>
|
||||
<string name="action_schedule_post">Agendar toot</string>
|
||||
<string name="action_schedule_post">Agendar Toot</string>
|
||||
<string name="action_reset_schedule">Redefinir</string>
|
||||
<string name="action_add_tab">Adicionar Separador</string>
|
||||
<string name="action_links">Hiperligações</string>
|
||||
<string name="action_mentions">Menções</string>
|
||||
<string name="action_hashtags">Hashtags</string>
|
||||
<string name="action_open_reblogger">Ver quem fez boost</string>
|
||||
<string name="action_open_reblogger">Ver autor do boost</string>
|
||||
<string name="action_open_reblogged_by">Mostrar boosts</string>
|
||||
<string name="action_open_faved_by">Mostrar favoritos</string>
|
||||
<string name="title_hashtags_dialog">Hashtags</string>
|
||||
|
@ -152,7 +152,7 @@
|
|||
<string name="title_links_dialog">Hiperligações</string>
|
||||
<string name="action_open_media_n">Abrir conteúdo multimédia #%d</string>
|
||||
<string name="download_image">A descarregar %1$s</string>
|
||||
<string name="action_copy_link">Copiar hiperligação</string>
|
||||
<string name="action_copy_link">Copiar a hiperligação</string>
|
||||
<string name="action_open_as">Abrir como %s</string>
|
||||
<string name="action_share_as">Partilhar como…</string>
|
||||
<string name="download_media">Descarregar conteúdo multimédia</string>
|
||||
|
@ -178,22 +178,22 @@
|
|||
<string name="label_header">Cabeçalho</string>
|
||||
<string name="link_whats_an_instance">O que é uma instância\?</string>
|
||||
<string name="login_connection">A ligar…</string>
|
||||
<string name="dialog_whats_an_instance">O endereço IP ou domínio de qualquer instância pode ser inserido aqui, como por exemplo mastodon.social, masto.donte.com.br, colorid.es ou qualquer <a href="https://instances.social">outro!</a>
|
||||
<string name="dialog_whats_an_instance">O endereço IP ou domínio de qualquer instância pode ser inserido aqui, como por exemplo mastodon.social, masto.pt, pleroma.pt ou qualquer <a href="https://instances.social">outro!</a>
|
||||
\n
|
||||
\n Se ainda não tem uma conta, insira o nome da instância onde pretende participar e crie uma conta lá.
|
||||
\nSe ainda não tem uma conta, insira o nome da instância onde pretende participar e crie uma conta lá.
|
||||
\n
|
||||
\n Uma instância é um lugar onde sua conta é hospedada, mas pode facilmente seguir e comunicar com pessoas de outras instâncias como se todos estivessem no mesmo site.
|
||||
\nUma instância é o local onde sua conta é criada, mas pode facilmente seguir e comunicar com pessoas de outras instâncias como se estivessem todos no mesmo site.
|
||||
\n
|
||||
\nMais informações disponíveis em <a href="https://joinmastodon.org">joinmastodon.org</a>. </string>
|
||||
<string name="dialog_title_finishing_media_upload">Envio de Conteúdo Multimédia Terminando</string>
|
||||
<string name="dialog_title_finishing_media_upload">A Terminar Envio de Conteúdo Multimédia</string>
|
||||
<string name="dialog_message_uploading_media">A enviar…</string>
|
||||
<string name="dialog_download_image">Descarregar</string>
|
||||
<string name="dialog_message_cancel_follow_request">Cancelar pedido para seguir\?</string>
|
||||
<string name="dialog_message_cancel_follow_request">Cancelar o pedido para seguir\?</string>
|
||||
<string name="dialog_unfollow_warning">Deixar de seguir esta conta\?</string>
|
||||
<string name="dialog_delete_post_warning">Apagar este toot\?</string>
|
||||
<string name="dialog_redraft_post_warning">Apagar e criar novo rascunho\?</string>
|
||||
<string name="dialog_redraft_post_warning">Apagar e rescrever este toot\?</string>
|
||||
<string name="dialog_delete_conversation_warning">Apagar esta conversa\?</string>
|
||||
<string name="mute_domain_warning">Tem certeza que pretende bloquear a instância %s\? Deixará de poder ver quaisquer conteúdos dessa instância em qualquer timeline pública ou nas suas notificações. Os seus seguidores dessa instância serão removidos.</string>
|
||||
<string name="mute_domain_warning">Tem a certeza que pretende bloquear a instância %s\? Deixará de poder ver quaisquer conteúdos dessa instância em qualquer timeline pública ou nas suas notificações. Os seus seguidores dessa instância serão removidos.</string>
|
||||
<string name="mute_domain_warning_dialog_ok">Bloquear instância</string>
|
||||
<string name="dialog_block_warning">Bloquear @%s\?</string>
|
||||
<string name="dialog_mute_warning">Silenciar @%s\?</string>
|
||||
|
@ -202,7 +202,7 @@
|
|||
<string name="visibility_unlisted">Não listado: Não publicar em timelines públicas</string>
|
||||
<string name="visibility_private">Privado: Publicar apenas para os seguidores</string>
|
||||
<string name="visibility_direct">Direto: Publicar apenas para os utilizadores mencionados</string>
|
||||
<string name="pref_title_edit_notification_settings">Editar notificações</string>
|
||||
<string name="pref_title_edit_notification_settings">Notificações</string>
|
||||
<string name="pref_title_notifications_enabled">Notificações</string>
|
||||
<string name="pref_title_notification_alerts">Alertas</string>
|
||||
<string name="pref_title_notification_alert_sound">Notificar com som</string>
|
||||
|
@ -213,17 +213,17 @@
|
|||
<string name="pref_title_notification_filter_follows">for seguido</string>
|
||||
<string name="pref_title_notification_filter_subscriptions">alguém para quem ativei os alertas publicar um toot novo</string>
|
||||
<string name="pref_title_notification_filter_follow_requests">fizerem pedido para me seguir</string>
|
||||
<string name="pref_title_notification_filter_reblogs">derem boosts nos meus toots</string>
|
||||
<string name="pref_title_notification_filter_reblogs">fizerem boosts aos meus toots</string>
|
||||
<string name="pref_title_notification_filter_favourites">adicionarem os meus toots aos favoritos</string>
|
||||
<string name="pref_title_notification_filter_poll">votações terminarem</string>
|
||||
<string name="pref_title_notification_filter_sign_ups">alguém criar conta</string>
|
||||
<string name="pref_title_notification_filter_updates">um toot com o qual interagi for editado</string>
|
||||
<string name="pref_title_appearance_settings">Aparência</string>
|
||||
<string name="pref_title_app_theme">Temas</string>
|
||||
<string name="pref_title_app_theme">Tema da Aplicação</string>
|
||||
<string name="pref_title_timelines">Timelines</string>
|
||||
<string name="pref_title_timeline_filters">Filtros</string>
|
||||
<string name="app_them_dark">Noturno</string>
|
||||
<string name="app_theme_light">Diurno</string>
|
||||
<string name="app_them_dark">Escuro</string>
|
||||
<string name="app_theme_light">Claro</string>
|
||||
<string name="app_theme_black">AMOLED</string>
|
||||
<string name="app_theme_auto">Automático ao pôr-do-sol</string>
|
||||
<string name="app_theme_system">Usar o Tema do Sistema</string>
|
||||
|
@ -232,11 +232,11 @@
|
|||
<string name="pref_title_hide_follow_button">Esconder o botão de criação de toots ao fazer scroll</string>
|
||||
<string name="pref_title_language">Idioma</string>
|
||||
<string name="pref_title_bot_overlay">Mostrar indicador para bots</string>
|
||||
<string name="pref_title_animate_gif_avatars">Reproduzir avatares em GIFs</string>
|
||||
<string name="pref_title_animate_gif_avatars">Reproduzir avatars em GIF</string>
|
||||
<string name="pref_title_gradient_for_media">Mostrar desfocagem em conteúdo multimédia sensível</string>
|
||||
<string name="pref_title_animate_custom_emojis">Animar emojis personalizados</string>
|
||||
<string name="pref_title_post_filter">Filtro da timeline</string>
|
||||
<string name="pref_title_post_tabs">Separadors</string>
|
||||
<string name="pref_title_post_tabs">Separadores</string>
|
||||
<string name="pref_title_show_boosts">Mostrar boosts</string>
|
||||
<string name="pref_title_show_replies">Mostrar respostas</string>
|
||||
<string name="pref_title_show_media_preview">Mostrar pré-visualização de conteúdo multimédia</string>
|
||||
|
@ -268,23 +268,23 @@
|
|||
<string name="notification_follow_request_description">Notificações para seguidores pendentes</string>
|
||||
<string name="notification_boost_name">Boosts</string>
|
||||
<string name="notification_poll_name">Votações</string>
|
||||
<string name="notification_poll_description">Notificações para votações que terminaram</string>
|
||||
<string name="notification_subscription_description">Notificações quando alguém para quem ativei os alertas publicar um toot novo</string>
|
||||
<string name="notification_poll_description">Notificações para votações terminadas</string>
|
||||
<string name="notification_subscription_description">Notificações quando alguém para quem ativou os alertas publicar um toot novo</string>
|
||||
<string name="notification_sign_up_description">Notificações para novos utilizadores</string>
|
||||
<string name="notification_update_name">Edições a toots</string>
|
||||
<string name="notification_update_name">Edições de toots</string>
|
||||
<string name="notification_boost_description">Notificações para boosts recebidos</string>
|
||||
<string name="notification_favourite_name">Favoritos</string>
|
||||
<string name="notification_favourite_description">Notificações quando os teus toots são adicionados aos favoritos</string>
|
||||
<string name="notification_update_description">Notificações quando toots com os quais interagi foram editados</string>
|
||||
<string name="notification_favourite_description">Notificações quando os seus toots são adicionados aos favoritos</string>
|
||||
<string name="notification_update_description">Notificações quando toots com os quais interagiu forem editados</string>
|
||||
<string name="notification_mention_format">%s mencionou-te</string>
|
||||
<string name="notification_summary_large">%1$s, %2$s, %3$s e %4$d outros</string>
|
||||
<string name="notification_summary_medium">%1$s, %2$s e %3$s</string>
|
||||
<string name="description_account_locked">Perfil Bloqueado</string>
|
||||
<string name="description_account_locked">Perfil Privado</string>
|
||||
<string name="about_title_activity">Sobre</string>
|
||||
<string name="about_tusky_version">Tusky %s</string>
|
||||
<string name="about_powered_by_tusky">A correr o Tusky</string>
|
||||
<string name="filter_dialog_update_button">Atualizar</string>
|
||||
<string name="about_tusky_license">Tusky é um software livre e de código aberto e é ljcenciado com a versão 3 da GNU General Public License. Leia a licença aqui: https://www.gnu.org/licenses/gpl-3.0.pt-br.html</string>
|
||||
<string name="about_tusky_license">Tusky é um software livre e de código aberto, licenciado com a versão 3 da GNU General Public License. Pode ler a licença aqui: https://www.gnu.org/licenses/gpl-3.0.pt-br.html</string>
|
||||
<string name="about_project_site">Página do projeto:
|
||||
\n https://tusky.app</string>
|
||||
<string name="about_bug_feature_request_site">Reporte de erros e pedidos de funcionalidades:
|
||||
|
@ -296,13 +296,13 @@
|
|||
<string name="post_media_video">Vídeo</string>
|
||||
<string name="post_media_audio">Áudio</string>
|
||||
<string name="post_media_attachments">Anexos</string>
|
||||
<string name="state_follow_requested">Pedido enviado</string>
|
||||
<string name="state_follow_requested">Pedido para seguir enviado</string>
|
||||
<string name="abbreviated_in_years">em %dy</string>
|
||||
<string name="abbreviated_in_days">em %dd</string>
|
||||
<string name="abbreviated_in_hours">em %dh</string>
|
||||
<string name="abbreviated_in_minutes">em %dm</string>
|
||||
<string name="abbreviated_in_seconds">em %ds</string>
|
||||
<string name="abbreviated_years_ago">%da</string>
|
||||
<string name="abbreviated_years_ago">%dy</string>
|
||||
<string name="abbreviated_days_ago">%dd</string>
|
||||
<string name="abbreviated_hours_ago">%dh</string>
|
||||
<string name="abbreviated_minutes_ago">%dm</string>
|
||||
|
@ -325,7 +325,7 @@
|
|||
<string name="action_lists">Listas</string>
|
||||
<string name="error_rename_list">Não foi possível renomear a lista</string>
|
||||
<string name="title_lists">Listas</string>
|
||||
<string name="title_list_timeline">Lista da timeline</string>
|
||||
<string name="title_list_timeline">Cronologia da timeline</string>
|
||||
<string name="error_create_list">Não foi possível criar a lista</string>
|
||||
<string name="error_delete_list">Não foi possível apagar a lista</string>
|
||||
<string name="action_create_list">Criar uma lista</string>
|
||||
|
@ -338,10 +338,11 @@
|
|||
<string name="error_failed_set_caption">Erro ao incluir descrição</string>
|
||||
<plurals name="hint_describe_for_visually_impaired">
|
||||
<item quantity="one">Descrição para deficientes visuais
|
||||
\n(até %d letra)</item>
|
||||
<item quantity="other">Descrição para deficientes visuais
|
||||
\n(até %d caracteres)</item>
|
||||
<item quantity="other"></item>
|
||||
</plurals>
|
||||
<string name="action_set_caption">Descrever</string>
|
||||
<string name="action_set_caption">Escrever descrição</string>
|
||||
<string name="action_remove">Remover</string>
|
||||
<string name="lock_account_label">Bloquear perfil</string>
|
||||
<string name="send_post_notification_title">A enviar o toot…</string>
|
||||
|
@ -351,34 +352,34 @@
|
|||
<string name="send_post_notification_saved_content">Uma cópia do toot foi guardada nos seus rascunhos</string>
|
||||
<string name="action_compose_shortcut">Escrever</string>
|
||||
<string name="error_no_custom_emojis">A sua instância, %s, não tem emojis personalizados</string>
|
||||
<string name="emoji_style">Estilo de emoji</string>
|
||||
<string name="emoji_style">Estilo dos emojis</string>
|
||||
<string name="system_default">Padrão do sistema</string>
|
||||
<string name="download_fonts">É necessário descarregar estes pacotes de emojis primeiro</string>
|
||||
<string name="performing_lookup_title">A fazer pesquisa…</string>
|
||||
<string name="expand_collapse_all_posts">Expandir/Contrair todos os toots</string>
|
||||
<string name="action_open_post">Abrir toot</string>
|
||||
<string name="restart_required">É necessário reiniciar a aplicação</string>
|
||||
<string name="restart_emoji">É necessário reiniciar o aplicativo para aplicar as alterações</string>
|
||||
<string name="restart_emoji">É necessário reiniciar o Tusky para aplicar as alterações</string>
|
||||
<string name="restart">Reiniciar</string>
|
||||
<string name="caption_systememoji">Pacote de emojis padrão do seu dispositivo</string>
|
||||
<string name="caption_blobmoji">Emojis padrão do Android da versão 4.4 até 7.1</string>
|
||||
<string name="caption_blobmoji">Emojis padrão do Android 4.4 até ao 7.1</string>
|
||||
<string name="caption_twemoji">Pacote de emojis padrão do Mastodon</string>
|
||||
<string name="caption_notoemoji">Pacote de emojis atual do Google</string>
|
||||
<string name="download_failed">Erro ao baixar</string>
|
||||
<string name="caption_notoemoji">Pacote de emojis atuais da Google</string>
|
||||
<string name="download_failed">Erro ao descarregar</string>
|
||||
<string name="profile_badge_bot_text">Robô</string>
|
||||
<string name="account_moved_description">%1$s mudou-se para:</string>
|
||||
<string name="reblog_private">Dar boost para o mesmo público</string>
|
||||
<string name="reblog_private">Dar boost para o público inicial</string>
|
||||
<string name="unreblog_private">Desfazer boost</string>
|
||||
<string name="license_description">O Tusky contém código e recursos dos seguintes projetos de código aberto:</string>
|
||||
<string name="license_apache_2">Licenciado sob a licença Apache (cópia separadorixo)</string>
|
||||
<string name="license_apache_2">Licenciado sob a licença Apache (cópia abaixo)</string>
|
||||
<string name="license_cc_by_4">CC-BY 4.0</string>
|
||||
<string name="license_cc_by_sa_4">CC-BY-SA 4.0</string>
|
||||
<string name="profile_metadata_label">Metadados do perfil</string>
|
||||
<string name="profile_metadata_add">Adicionar</string>
|
||||
<string name="profile_metadata_add">adicionar dados</string>
|
||||
<string name="profile_metadata_label_label">Rótulo</string>
|
||||
<string name="profile_metadata_content_label">Conteúdo</string>
|
||||
<string name="pref_title_absolute_time">Usar tempo absoluto</string>
|
||||
<string name="label_remote_account">As informações separadorixo podem refletir incompletamente o perfil do utilizador. Toque aqui para abrir o perfil completo no navegador.</string>
|
||||
<string name="pref_title_absolute_time">Usar data absoluta</string>
|
||||
<string name="label_remote_account">As informações abaixo podem refletir, de forma incompleta, o perfil do utilizador. Toque aqui para abrir o perfil completo no navegador.</string>
|
||||
<string name="pin_action">Fixar</string>
|
||||
<plurals name="favs">
|
||||
<item quantity="one"><b>%1$s</b> Favorito</item>
|
||||
|
@ -388,25 +389,25 @@
|
|||
<item quantity="one"><b>%s</b> Boost</item>
|
||||
<item quantity="other"><b>%s</b> Boosts</item>
|
||||
</plurals>
|
||||
<string name="title_reblogged_by">Levou boost de</string>
|
||||
<string name="title_favourited_by">Favoritado por</string>
|
||||
<string name="title_reblogged_by">Boost dado por</string>
|
||||
<string name="title_favourited_by">Adicionado aos favoritos por</string>
|
||||
<string name="conversation_1_recipients">%1$s</string>
|
||||
<string name="conversation_more_recipients">%1$s, %2$s e %3$d outros</string>
|
||||
<string name="conversation_more_recipients">%1$s, %2$s e %3$d mais</string>
|
||||
<plurals name="max_tab_number_reached">
|
||||
<item quantity="one">excedeu o máximo de %1$d separador</item>
|
||||
<item quantity="other">excedeu o máximo de %1$d separadors</item>
|
||||
<item quantity="one">atingiu o máximo de %1$d separador</item>
|
||||
<item quantity="other">atingiu o máximo de %1$d separadores</item>
|
||||
</plurals>
|
||||
<string name="description_post_media">conteúdo multimédia: %s</string>
|
||||
<string name="description_post_media">Conteúdo multimédia: %s</string>
|
||||
<string name="description_post_cw">Aviso de Conteúdo: %s</string>
|
||||
<string name="description_post_media_no_description_placeholder">Sem descrição</string>
|
||||
<string name="description_post_reblogged">Você fez boost</string>
|
||||
<string name="description_post_favourited">Favoritado</string>
|
||||
<string name="description_post_bookmarked">Salvo</string>
|
||||
<string name="description_post_reblogged">Replicado</string>
|
||||
<string name="description_post_favourited">Adicionado aos favoritos</string>
|
||||
<string name="description_post_bookmarked">Guardado</string>
|
||||
<string name="description_visiblity_public">Público</string>
|
||||
<string name="description_visiblity_unlisted">Não-listado</string>
|
||||
<string name="description_visiblity_private">Privado</string>
|
||||
<string name="description_visiblity_direct">Direto</string>
|
||||
<string name="description_poll">Enquete com as opções: %1$s, %2$s, %3$s, %4$s; %5$s</string>
|
||||
<string name="description_poll">Votação com as opções: %1$s, %2$s, %3$s, %4$s; %5$s</string>
|
||||
<string name="hint_list_name">Nome da lista</string>
|
||||
<string name="add_hashtag_title">Adicionar hashtag</string>
|
||||
<string name="edit_hashtag_hint">Hashtag sem #</string>
|
||||
|
@ -414,11 +415,11 @@
|
|||
<string name="select_list_title">Selecionar lista</string>
|
||||
<string name="list">Lista</string>
|
||||
<string name="notifications_clear">Limpar</string>
|
||||
<string name="notifications_apply_filter">Filtro</string>
|
||||
<string name="filter_apply">Salvar</string>
|
||||
<string name="compose_shortcut_long_label">Compor toot</string>
|
||||
<string name="compose_shortcut_short_label">Compor</string>
|
||||
<string name="notification_clear_text">Tem certeza de que deseja limpar permanentemente todas as suas notificações\?</string>
|
||||
<string name="notifications_apply_filter">Filtrar</string>
|
||||
<string name="filter_apply">Aplicar</string>
|
||||
<string name="compose_shortcut_long_label">Escrever toot</string>
|
||||
<string name="compose_shortcut_short_label">Escrever</string>
|
||||
<string name="notification_clear_text">Tem certeza que pretende limpar permanentemente todas as suas notificações\?</string>
|
||||
<string name="compose_preview_image_description">Opções para imagem %s</string>
|
||||
<string name="poll_info_format"> <!-- 15 votos • 1 hora restante --> %1$s • %2$s</string>
|
||||
<plurals name="poll_info_votes">
|
||||
|
@ -430,10 +431,10 @@
|
|||
<item quantity="other">%s pessoas</item>
|
||||
</plurals>
|
||||
<string name="poll_info_time_absolute">termina em %s</string>
|
||||
<string name="poll_info_closed">Terminou</string>
|
||||
<string name="poll_info_closed">terminada</string>
|
||||
<string name="poll_vote">Votar</string>
|
||||
<string name="poll_ended_voted">Uma enquete que você votou terminou</string>
|
||||
<string name="poll_ended_created">Sua enquete terminou</string>
|
||||
<string name="poll_ended_voted">Uma votação em que votou terminou</string>
|
||||
<string name="poll_ended_created">A sua votação terminou</string>
|
||||
<plurals name="poll_timespan_days">
|
||||
<item quantity="one">%d dia restante</item>
|
||||
<item quantity="other">%d dias restantes</item>
|
||||
|
@ -451,20 +452,20 @@
|
|||
<item quantity="other">%d segundos restantes</item>
|
||||
</plurals>
|
||||
<string name="button_continue">Continuar</string>
|
||||
<string name="button_back">Voltar</string>
|
||||
<string name="button_done">Ok</string>
|
||||
<string name="button_back">Retroceder</string>
|
||||
<string name="button_done">Feito</string>
|
||||
<string name="report_sent_success">\@%s denunciado com sucesso</string>
|
||||
<string name="hint_additional_info">Comentários adicionais</string>
|
||||
<string name="report_remote_instance">Encaminhar para %s</string>
|
||||
<string name="failed_report">Erro ao denunciar</string>
|
||||
<string name="failed_fetch_posts">Erro ao carregar toots</string>
|
||||
<string name="report_description_1">A denúncia será enviada aos moderadores da instância. Explique por que denunciou a conta:</string>
|
||||
<string name="report_description_remote_instance">A conta está em outra instância. Enviar uma cópia anônima da denúncia para lá\?</string>
|
||||
<string name="report_description_1">A denúncia será enviada aos moderadores da instância. Pode adicionar abaixo uma explicação para a sua denúncia:</string>
|
||||
<string name="report_description_remote_instance">A conta está noutra instância. Quer enviar uma cópia anónima da denúncia para lá\?</string>
|
||||
<string name="title_accounts">Contas</string>
|
||||
<string name="failed_search">Erro ao pesquisar</string>
|
||||
<string name="pref_title_show_notifications_filter">Mostrar filtro de notificações</string>
|
||||
<string name="pref_title_enable_swipe_for_tabs">Ativar deslizar para alternar entre separadors</string>
|
||||
<string name="create_poll_title">Enquete</string>
|
||||
<string name="pref_title_show_notifications_filter">Mostrar Filtro das Notificações</string>
|
||||
<string name="pref_title_enable_swipe_for_tabs">Ativar gesto de deslizar para alternar entre separadores</string>
|
||||
<string name="create_poll_title">Votação</string>
|
||||
<string name="label_duration">Duração</string>
|
||||
<string name="duration_indefinite">Indefinido</string>
|
||||
<string name="duration_5_min">5 minutos</string>
|
||||
|
@ -481,46 +482,46 @@
|
|||
<string name="duration_180_days">180 dias</string>
|
||||
<string name="duration_365_days">365 dias</string>
|
||||
<string name="add_poll_choice">Adicionar opção</string>
|
||||
<string name="poll_allow_multiple_choices">Múltiplas opções</string>
|
||||
<string name="poll_allow_multiple_choices">Escolha múltipla</string>
|
||||
<string name="poll_new_choice_hint">Opção %d</string>
|
||||
<string name="edit_poll">Editar</string>
|
||||
<string name="post_lookup_error_format">Erro ao pesquisar %s</string>
|
||||
<string name="no_drafts">Sem rascunhos.</string>
|
||||
<string name="no_scheduled_posts">Sem toots agendados.</string>
|
||||
<string name="account_note_saved">Salvo!</string>
|
||||
<string name="post_lookup_error_format">Erro ao pesquisar toot %s</string>
|
||||
<string name="no_drafts">Não tem rascunhos.</string>
|
||||
<string name="no_scheduled_posts">Não tem toots agendados.</string>
|
||||
<string name="account_note_saved">Guardado!</string>
|
||||
<string name="wellbeing_mode_notice">Algumas informações que podem afetar seu bem-estar serão ocultadas. Isso inclui:
|
||||
\n
|
||||
\n- Notificações de favoritos, boosts e seguidores
|
||||
\n- Número de favoritos e boosts nos toots
|
||||
\n- Status de toots e seguidores nos perfis
|
||||
\n
|
||||
\nNotificações push não serão afetadas, mas é possível revisar sua preferência manualmente.</string>
|
||||
<string name="review_notifications">Revisar notificações</string>
|
||||
\nNotificações push não serão afetadas, mas é possível rever as configurações das notificações manualmente.</string>
|
||||
<string name="review_notifications">Rever Notificações</string>
|
||||
<string name="limit_notifications">Limitar notificações da timeline</string>
|
||||
<string name="no_announcements">Sem comunicados.</string>
|
||||
<string name="warning_scheduling_interval">Mastodon possui um intervalo mínimo de 5 minutos para agendar.</string>
|
||||
<string name="pref_title_show_cards_in_timelines">Mostrar prévias de Hiperligações nas linhas</string>
|
||||
<string name="pref_title_confirm_reblogs">Solicitar confirmação antes de dar boost</string>
|
||||
<string name="pref_title_confirm_favourites">Solicitar confirmação antes de favoritar</string>
|
||||
<string name="pref_title_hide_top_toolbar">Esconder o título da barra superior de tarefas</string>
|
||||
<string name="account_note_hint">Nota pessoal sobre este perfil aqui</string>
|
||||
<string name="wellbeing_hide_stats_posts">Esconder status dos toots</string>
|
||||
<string name="wellbeing_hide_stats_profile">Esconder status dos perfis</string>
|
||||
<string name="no_announcements">Sem anúncios.</string>
|
||||
<string name="warning_scheduling_interval">O Mastodon tem um intervalo mínimo de agendamento de 5 minutos.</string>
|
||||
<string name="pref_title_show_cards_in_timelines">Mostrar pré-visualização de hiperligações nas timelines</string>
|
||||
<string name="pref_title_confirm_reblogs">Mostrar janela de confirmação antes de dar boost</string>
|
||||
<string name="pref_title_confirm_favourites">Mostrar janela de confirmação antes de adicionar aos favoritos</string>
|
||||
<string name="pref_title_hide_top_toolbar">Esconder o título da barra superior</string>
|
||||
<string name="account_note_hint">Nota pessoal sobre este perfil</string>
|
||||
<string name="wellbeing_hide_stats_posts">Esconder estatísticas quantitativas nos toots</string>
|
||||
<string name="wellbeing_hide_stats_profile">Esconder estatísticas quantitativas nos perfis</string>
|
||||
<plurals name="error_upload_max_media_reached">
|
||||
<item quantity="one">Não é possível anexar mais de %1$d arquivo de conteúdo multimédia.</item>
|
||||
<item quantity="other">Não é possível anexar mais de %1$d arquivos de conteúdo multimédia.</item>
|
||||
<item quantity="one">Não é possível enviar mais de %1$d arquivo de conteúdo multimédia.</item>
|
||||
<item quantity="other">Não é possível enviar mais de %1$d arquivos de conteúdo multimédia.</item>
|
||||
</plurals>
|
||||
<string name="drafts_post_failed_to_send">Erro ao enviar o toot!</string>
|
||||
<string name="drafts_failed_loading_reply">Erro ao carregar toot para responder</string>
|
||||
<string name="draft_deleted">Rascunho excluído</string>
|
||||
<string name="drafts_post_reply_removed">O toot em que se rascunhou uma resposta foi excluído</string>
|
||||
<string name="drafts_failed_loading_reply">Erro ao carregar informação de resposta</string>
|
||||
<string name="draft_deleted">Rascunho apagado</string>
|
||||
<string name="drafts_post_reply_removed">O toot para o qual escreveu um rascunho foi apagado</string>
|
||||
<string name="error_generic">Ocorreu um erro.</string>
|
||||
<string name="error_network">Ocorreu um erro de conetividade! Por favor, verifique a sua ligação e tente novamente!</string>
|
||||
<string name="error_empty">Isto não pode estar vazio.</string>
|
||||
<string name="error_invalid_domain">Instância inválida inserida</string>
|
||||
<string name="error_invalid_domain">A instância inserida é inválida</string>
|
||||
<string name="error_failed_app_registration">Erro ao autenticar com esta instância.</string>
|
||||
<string name="error_no_web_browser_found">Nao foi possível encontrar um navegador.</string>
|
||||
<string name="error_authorization_unknown">Ocorreu um erro não identificado de autorização.</string>
|
||||
<string name="error_no_web_browser_found">Não foi possível encontrar um navegador.</string>
|
||||
<string name="error_authorization_unknown">Ocorreu um erro de autorização não identificado.</string>
|
||||
<string name="title_login">Entrar</string>
|
||||
<string name="action_save">Guardar</string>
|
||||
<string name="action_edit_profile">Editar perfil</string>
|
||||
|
@ -528,4 +529,5 @@
|
|||
<string name="action_undo">Desfazer</string>
|
||||
<string name="action_accept">Aceitar</string>
|
||||
<string name="action_reject">Rejeitar</string>
|
||||
<string name="error_could_not_load_login_page">Não foi possível carregar a página de login</string>
|
||||
</resources>
|
|
@ -100,7 +100,7 @@
|
|||
<string name="notification_follow_request_format">%s надсилає запит на підписку</string>
|
||||
<string name="notification_follow_format">%s підписується на вас</string>
|
||||
<string name="footer_empty">Тут нічого немає. Потягніть вниз, щоб оновити!</string>
|
||||
<string name="message_empty">Тут нічого немає.</string>
|
||||
<string name="message_empty">Тут порожньо.</string>
|
||||
<string name="post_content_warning_show_less">Згорнути</string>
|
||||
<string name="post_content_warning_show_more">Розгорнути</string>
|
||||
<string name="post_sensitive_media_directions">Натисніть для перегляду</string>
|
||||
|
@ -549,4 +549,5 @@
|
|||
<string name="notification_update_description">Сповіщення, коли редагується повідомлення, з яким ви взаємодіяли</string>
|
||||
<string name="notification_update_name">Редакції допису</string>
|
||||
<string name="title_login">Вхід</string>
|
||||
<string name="error_could_not_load_login_page">Не вдалося завантажити сторінку входу.</string>
|
||||
</resources>
|
|
@ -515,4 +515,6 @@
|
|||
<string name="pref_title_notification_filter_updates">khi một tút mà tôi tương tác bị sửa</string>
|
||||
<string name="notification_update_name">Sửa tút</string>
|
||||
<string name="notification_update_description">Thông báo khi tút mà tôi tương tác bị sửa</string>
|
||||
<string name="title_login">Đăng nhập</string>
|
||||
<string name="error_could_not_load_login_page">Không thể tải trang đăng nhập.</string>
|
||||
</resources>
|
|
@ -535,4 +535,5 @@
|
|||
<string name="pref_title_notification_filter_updates">我进行过互动的嘟文被编辑了</string>
|
||||
<string name="notification_update_name">嘟文编辑</string>
|
||||
<string name="notification_update_description">当你进行过互动的嘟文被编辑时发出通知</string>
|
||||
<string name="error_could_not_load_login_page">无法加载登录页。</string>
|
||||
</resources>
|
||||
|
|
|
@ -57,6 +57,7 @@
|
|||
<item>Occitan</item>
|
||||
<item>Polski</item>
|
||||
<item>Português (Brasil)</item>
|
||||
<item>Português (Portugal)</item>
|
||||
<item>Slovenščina</item>
|
||||
<item>Svenska</item>
|
||||
<item>Taqbaylit</item>
|
||||
|
@ -106,6 +107,7 @@
|
|||
<item>oc</item>
|
||||
<item>pl</item>
|
||||
<item>pt-BR</item>
|
||||
<item>pt-PT</item>
|
||||
<item>sl</item>
|
||||
<item>sv</item>
|
||||
<item>kab</item>
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<string name="error_authorization_unknown">An unidentified authorization error occurred.</string>
|
||||
<string name="error_authorization_denied">Authorization was denied.</string>
|
||||
<string name="error_retrieving_oauth_token">Failed getting a login token.</string>
|
||||
<string name="error_could_not_load_login_page">Could not load the login page.</string>
|
||||
<string name="error_compose_character_limit">The post is too long!</string>
|
||||
<string name="error_image_upload_size">The file must be less than 8MB.</string>
|
||||
<string name="error_video_upload_size">Video files must be less than 40MB.</string>
|
||||
|
@ -671,5 +672,6 @@
|
|||
<string name="action_unsubscribe_account">Unsubscribe</string>
|
||||
|
||||
<string name="tusky_compose_post_quicksetting_label">Compose Post</string>
|
||||
<string name="saving_draft">Saving draft…</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -369,13 +369,36 @@ class TimelineDaoTest {
|
|||
assertEquals("99", timelineDao.getTopPlaceholderId(1))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `preview card survives roundtrip`() = runBlocking {
|
||||
val setOne = makeStatus(statusId = 3, cardUrl = "https://foo.bar")
|
||||
|
||||
for ((status, author, reblogger) in listOf(setOne)) {
|
||||
timelineDao.insertAccount(author)
|
||||
reblogger?.let {
|
||||
timelineDao.insertAccount(it)
|
||||
}
|
||||
timelineDao.insertStatus(status)
|
||||
}
|
||||
|
||||
val pagingSource = timelineDao.getStatuses(setOne.first.timelineUserId)
|
||||
|
||||
val loadResult = pagingSource.load(PagingSource.LoadParams.Refresh(null, 2, false))
|
||||
|
||||
val loadedStatuses = (loadResult as PagingSource.LoadResult.Page).data
|
||||
|
||||
assertEquals(1, loadedStatuses.size)
|
||||
assertStatuses(listOf(setOne), loadedStatuses)
|
||||
}
|
||||
|
||||
private fun makeStatus(
|
||||
accountId: Long = 1,
|
||||
statusId: Long = 10,
|
||||
reblog: Boolean = false,
|
||||
createdAt: Long = statusId,
|
||||
authorServerId: String = "20",
|
||||
domain: String = "mastodon.example"
|
||||
domain: String = "mastodon.example",
|
||||
cardUrl: String? = null,
|
||||
): Triple<TimelineStatusEntity, TimelineAccountEntity, TimelineAccountEntity?> {
|
||||
val author = TimelineAccountEntity(
|
||||
serverId = authorServerId,
|
||||
|
@ -403,6 +426,10 @@ class TimelineDaoTest {
|
|||
)
|
||||
} else null
|
||||
|
||||
val card = when (cardUrl) {
|
||||
null -> null
|
||||
else -> "{ url: \"$cardUrl\" }"
|
||||
}
|
||||
val even = accountId % 2 == 0L
|
||||
val status = TimelineStatusEntity(
|
||||
serverId = statusId.toString(),
|
||||
|
@ -433,7 +460,8 @@ class TimelineDaoTest {
|
|||
expanded = false,
|
||||
contentCollapsed = false,
|
||||
contentShowing = true,
|
||||
pinned = false
|
||||
pinned = false,
|
||||
card = card,
|
||||
)
|
||||
return Triple(status, author, reblogAuthor)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
Tusky v17.0
|
||||
|
||||
- "Öffnen als..." ist jetzt im Menü in Konto Profilen auch verfügbar, wenn mehrere Konten genutzt werden
|
||||
- Die Anmeldung wird jetzt über die WebView innerhalb der App abgewickelt
|
||||
- Unterstützung für Android 12
|
||||
- Unterstützung für die neue Mastodon instance configuration API
|
||||
- und einige andere kleine Fehlerbehebungen und Verbesserungen
|
|
@ -0,0 +1,6 @@
|
|||
Tusky v18.0
|
||||
|
||||
- Support for new Mastodon 3.5 notification types
|
||||
- The bot badge now looks better and adjusts to the selected theme
|
||||
- Text can now be selected on the post detail view
|
||||
- Fixed a lot of bugs, including one that prevented logins on Android 6 and lower
|
|
@ -0,0 +1,7 @@
|
|||
Tusky útg.17.0
|
||||
|
||||
- "Opna sem..." er núna líka á valmyndinni í notendasniðum þegar verið er að nota marga aðganga
|
||||
- Innskráning er núna meðhöndluð í WebView innan forritsins
|
||||
- Stuðningur við Android 12
|
||||
- Stuðningur við API-kerfisviðmót fyrir nýja uppsetningu Mastodon-tilvika
|
||||
- og mökkur af smærri endurbótum og lagfæringum
|
|
@ -0,0 +1,7 @@
|
|||
Tusky v17.0
|
||||
|
||||
- "Otwórz jako..." teraz jest także dostępne w menu na profilach kont gdy używane jest kilka kont
|
||||
- Login teraz jest obsługiwany w WebView w aplikacji
|
||||
- Wsparcie dla Androida 12
|
||||
- Wsparcie nowego API konfiguracji instancji Mastodon
|
||||
- i wiele innych małych poprawek i ulepszeń
|
|
@ -0,0 +1,12 @@
|
|||
Tusky v6.0
|
||||
|
||||
- Os filtros de timeline passaram para "Preferências da Conta" e sincronizam com servidor
|
||||
- Pode ter uma hashtag personalizada como separador
|
||||
- Suporte a edição de listas
|
||||
- O editor sugere emojis personalizados ao escrever
|
||||
- Nova configuração: "seguir tema do sistema"
|
||||
- Melhor acessibilidade da timeline
|
||||
- O Tusky ignora notificações desconhecidas, deixando de crashar
|
||||
- Nova opção: trocar o idioma do sistema por outro
|
||||
- Novas traduções
|
||||
- Muitas outras melhorias e correções
|
|
@ -0,0 +1,7 @@
|
|||
Tusky v7.0
|
||||
|
||||
- Suporte para mostragem de votações, para votação e notificação de votações
|
||||
- Botões novos para filtrar notificações e excluí-las
|
||||
- Exclua e rascunhe os seus toots
|
||||
- Novo indicador que mostra, na foto de perfil, se uma conta é um bot (pode ser desativado nas preferências)
|
||||
- Novas traduções: Norueguês, Bokmål e Esloveno.
|
|
@ -0,0 +1,9 @@
|
|||
Tusky v9.0
|
||||
|
||||
- Agora pode criar votações no Tusky
|
||||
- Pesquisa melhorada
|
||||
- Nova opção em "Preferências da Conta": "Expandir sempre os toots com Aviso de Conteúdo"
|
||||
- Avatars em formato quadrado com cantos arredondados
|
||||
- Agora é possível denunciar utilizadores, mesmo que não tenham toots
|
||||
- O Tusky vai recusar a ligação através de ligações simples (não encriptadas) em Android 6+
|
||||
- Muitas outras pequenas melhorias e correções de bugs
|
|
@ -0,0 +1,3 @@
|
|||
Tusky v9.1
|
||||
|
||||
Esta atualização garante compatibilidade com Mastodon 3 e melhora a performance e estabilidade.
|
|
@ -0,0 +1,8 @@
|
|||
Tusky v10.0
|
||||
|
||||
- Agora é possível adicionar toots aos favoritos e ver a lista de favoritos no Tusky.
|
||||
- Já pode agendar toots, no entanto é necessário agendá-los para pelo menos 5 minutos depois do momento da escrita.
|
||||
- Já pode adicionar listas na barra lateral do Tusky!
|
||||
- Já pode partilhar ficheiros de som nos teus toots!
|
||||
|
||||
E muitas outras pequenas melhorias e correções de bugs!
|
|
@ -0,0 +1,11 @@
|
|||
Tusky v11.0
|
||||
|
||||
- Notificações de seguidores pendentes quando a conta está trancada!
|
||||
- Novas funcionalidades nas "Preferências":
|
||||
* desativação do gesto que alterna entre separadores
|
||||
* diálogo de confirmação antes de dar boost
|
||||
* mostragem da pré-visualização de links nas timelines
|
||||
- As conversas agora podem ser silenciadas
|
||||
- As votações passam a ser calculadas pelo número de votantes e não pelo número de votos
|
||||
- Várias correções relacionadas com a escrita de toots
|
||||
- Traduções melhoradas
|
|
@ -0,0 +1,8 @@
|
|||
Tusky v.12.0
|
||||
|
||||
- Interface principal melhorada - passa a ser possível mover os separadores para baixo!
|
||||
- Ao silenciar um utilizador, pode também escolher se também pretende silenciar as notificações
|
||||
- Agora dá para seguir quantas hashtags quiser num único separador!
|
||||
- A exibição da descrição dos conteúdos multimédia foi melhorada para suportar descrições super longas
|
||||
|
||||
Registo completo de alterações: https://github.com/tuskyapp/Tusky/releases
|
|
@ -0,0 +1,10 @@
|
|||
Tusky v13.0
|
||||
|
||||
- Suporte para anotações em perfis (novidade do Mastodon 3.2.0)
|
||||
- Suporte para anúncios do(s) administrador(es) de instâncias (novidade do Mastodon 3.1.0)
|
||||
|
||||
- O avatar da sua conta selecionada passa a ficar visível na barra de ferramentas principal (canto superior esquerdo)
|
||||
- Tocar no nome de utilizador na timeline abrirá o perfil em questão
|
||||
|
||||
- Várias pequenas melhorias e correções
|
||||
- Traduções melhoradas
|
|
@ -0,0 +1,7 @@
|
|||
Tusky v14.0
|
||||
|
||||
- Receba notificações quando um utilizador que segue publicar um toot - basta clicar no ícone do sino (novidade do Mastodon 3.3.0)
|
||||
- O suporte para rascunhos do Tusky foi reescrito para ser mais rápido, simples e menos propenso a erros.
|
||||
- Foi adicionado uma funcionalidade de bem-estar, que permite limitar algumas funcionalidades no Tusky.
|
||||
- O Tusky já consegue animar os emojis personalizados
|
||||
Registo completo de alterações: https://github.com/tuskyapp/Tusky/releases
|
|
@ -0,0 +1,5 @@
|
|||
Tusky v15.0
|
||||
|
||||
- O menu principal passa a mostrar uma opção para ver os utilizadores que pediram para o seguir!
|
||||
- O relógio para agendar toots ganhou um aspeto mais consistente com o resto do Tusky
|
||||
Registo completo de alterações: https://github.com/tuskyapp/Tusky/releases
|
|
@ -0,0 +1,3 @@
|
|||
Tusky v15.1
|
||||
|
||||
O Tusky já não crasha ao adicionar descrição às imagens
|
|
@ -0,0 +1,8 @@
|
|||
Tusky v16.0
|
||||
|
||||
- O algoritmo de carregamento da timeline foi completamente reescrito para ser mais rápida, mais estável e mais fácil de manter.
|
||||
- O Tusky passa a poder 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
|
|
@ -0,0 +1,7 @@
|
|||
Tusky v17.0
|
||||
|
||||
- "Abrir como..." está disponível no menu de perfis de contas quando estão várias contas configuradas
|
||||
- O login passa a ser feito numa WebView dentro da aplicação
|
||||
- Suporte para Android 12
|
||||
- Suporte para a nova API de configuração de instâncias do Mastodon
|
||||
- Várias pequenas melhorias e correções
|
|
@ -0,0 +1,12 @@
|
|||
Tusky é um cliente leve para Mastodon, um servidor de rede social de código aberto e livre.
|
||||
|
||||
• Design Material
|
||||
• Maioria das APIs do Mastodon implementadas
|
||||
• Suporte para várias contas
|
||||
• Temas diurno e noturno, com possibilidade de troca automática de acordo com o horário
|
||||
• Rascunhos - Escreva os seus toots e guarde-os para mais tarde
|
||||
• Escolha entre estilos diferentes de emoji
|
||||
• Otimizado para todos os tamanhos de ecrã
|
||||
• Código totalmente aberto, sem dependências não-livres como Google Play Services
|
||||
|
||||
Para ler mais sobre o Mastodon, visite o endereço https://joinmastodon.org/
|
|
@ -0,0 +1 @@
|
|||
Um cliente multi-contas para a rede social Mastodon
|
|
@ -0,0 +1 @@
|
|||
Tusky
|
Loading…
Reference in New Issue