diff --git a/CHANGES.md b/CHANGES.md index 1228ea65ca..863b1ca455 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,25 @@ -Changes in RiotX 0.11.0 (2019-XX-XX) +Changes in RiotX 0.12.0 (2019-XX-XX) +=================================================== + +Features ✨: + - + +Improvements 🙌: + - + +Other changes: + - + +Bugfix 🐛: + - + +Translations 🗣: + - + +Build 🧱: + - + +Changes in RiotX 0.11.0 (2019-12-19) =================================================== Features ✨: @@ -7,6 +28,7 @@ Features ✨: Improvements 🙌: - Handle navigation to room via room alias (#201) - Open matrix.to link in RiotX (#57) + - Limit sticker size in the timeline Other changes: - Use same default room colors than Riot-Web @@ -14,10 +36,9 @@ Other changes: Bugfix 🐛: - Scroll breadcrumbs to top when opened - Render default room name when it starts with an emoji (#477) - - Do not display " (IRC)") in display names https://github.com/vector-im/riot-android/issues/444 - -Translations 🗣: - - + - Do not display " (IRC)" in display names https://github.com/vector-im/riot-android/issues/444 + - Fix rendering issue with HTML formatted body + - Disable click on Stickers (#703) Build 🧱: - Include diff-match-patch sources as dependency diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/content/ContentAttachmentData.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/content/ContentAttachmentData.kt index 933657b2fb..0d8ef2c52b 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/content/ContentAttachmentData.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/content/ContentAttachmentData.kt @@ -30,7 +30,7 @@ data class ContentAttachmentData( val exifOrientation: Int = ExifInterface.ORIENTATION_UNDEFINED, val name: String? = null, val path: String, - val mimeType: String, + val mimeType: String?, val type: Type ) : Parcelable { diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/VideoInfo.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/VideoInfo.kt index a7d4708d33..da247810cb 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/VideoInfo.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/VideoInfo.kt @@ -25,7 +25,7 @@ data class VideoInfo( /** * The mimetype of the video e.g. "video/mp4". */ - @Json(name = "mimetype") val mimeType: String, + @Json(name = "mimetype") val mimeType: String?, /** * The width of the video in pixels. diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/timeline/TimelineEvent.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/timeline/TimelineEvent.kt index ed7f49aa46..caa64a85f8 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/timeline/TimelineEvent.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/timeline/TimelineEvent.kt @@ -104,7 +104,7 @@ fun TimelineEvent.getLastMessageContent(): MessageContent? { root.getClearContent().toModel() } else { annotations?.editSummary?.aggregatedContent?.toModel() - ?: root.getClearContent().toModel() + ?: root.getClearContent().toModel() } } @@ -116,7 +116,7 @@ fun TimelineEvent.getLastMessageBody(): String? { if (lastMessageContent != null) { return lastMessageContent.newContent?.toModel()?.body - ?: lastMessageContent.body + ?: lastMessageContent.body } return null diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/attachments/MXEncryptedAttachments.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/attachments/MXEncryptedAttachments.kt index 5f90b636ac..503bf8e4ff 100755 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/attachments/MXEncryptedAttachments.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/attachments/MXEncryptedAttachments.kt @@ -49,7 +49,7 @@ object MXEncryptedAttachments { * @param mimetype the mime type * @return the encryption file info */ - fun encryptAttachment(attachmentStream: InputStream, mimetype: String): EncryptionResult { + fun encryptAttachment(attachmentStream: InputStream, mimetype: String?): EncryptionResult { val t0 = System.currentTimeMillis() val secureRandom = SecureRandom() diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultFileService.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultFileService.kt index 868d63665a..c160ac9b31 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultFileService.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultFileService.kt @@ -83,15 +83,13 @@ internal class DefaultFileService @Inject constructor(private val context: Conte if (elementToDecrypt != null) { Timber.v("## decrypt file") - MXEncryptedAttachments.decryptAttachment(inputStream, elementToDecrypt) ?: throw IllegalStateException("Decryption error") - } else { - inputStream + MXEncryptedAttachments.decryptAttachment(inputStream, elementToDecrypt) + ?: throw IllegalStateException("Decryption error") } + + writeToFile(inputStream, destFile) + destFile } - .map { inputStream -> - writeToFile(inputStream, destFile) - destFile - } } else { Try.just(destFile) } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/content/FileUploader.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/content/FileUploader.kt index 209f03ad9d..2f4e991e62 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/content/FileUploader.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/content/FileUploader.kt @@ -43,9 +43,9 @@ internal class FileUploader @Inject constructor(@Authenticated suspend fun uploadFile(file: File, filename: String?, - mimeType: String, + mimeType: String?, progressListener: ProgressRequestBody.Listener? = null): ContentUploadResponse { - val uploadBody = file.asRequestBody(mimeType.toMediaTypeOrNull()) + val uploadBody = file.asRequestBody(mimeType?.toMediaTypeOrNull()) return upload(uploadBody, filename, progressListener) } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/create/CreateRoomTask.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/create/CreateRoomTask.kt index ca86765cd9..9af8434b7c 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/create/CreateRoomTask.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/create/CreateRoomTask.kt @@ -52,7 +52,7 @@ internal class DefaultCreateRoomTask @Inject constructor(private val roomAPI: Ro apiCall = roomAPI.createRoom(params) } val roomId = createRoomResponse.roomId!! - // Wait for room to come back from the sync (but it can maybe be in the DB is the sync response is received before) + // Wait for room to come back from the sync (but it can maybe be in the DB if the sync response is received before) val rql = RealmQueryLatch(realmConfiguration) { realm -> realm.where(RoomEntity::class.java) .equalTo(RoomEntityFields.ROOM_ID, roomId) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/LocalEchoEventFactory.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/LocalEchoEventFactory.kt index 0fed1ca6f5..7a935783cf 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/LocalEchoEventFactory.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/LocalEchoEventFactory.kt @@ -251,7 +251,7 @@ internal class LocalEchoEventFactory @Inject constructor( type = MessageType.MSGTYPE_AUDIO, body = attachment.name ?: "audio", audioInfo = AudioInfo( - mimeType = attachment.mimeType.takeIf { it.isNotBlank() } ?: "audio/mpeg", + mimeType = attachment.mimeType?.takeIf { it.isNotBlank() } ?: "audio/mpeg", size = attachment.size ), url = attachment.path @@ -264,7 +264,7 @@ internal class LocalEchoEventFactory @Inject constructor( type = MessageType.MSGTYPE_FILE, body = attachment.name ?: "file", info = FileInfo( - mimeType = attachment.mimeType.takeIf { it.isNotBlank() } + mimeType = attachment.mimeType?.takeIf { it.isNotBlank() } ?: "application/octet-stream", size = attachment.size ), diff --git a/matrix-sdk-android/src/main/res/values-cs/strings.xml b/matrix-sdk-android/src/main/res/values-cs/strings.xml index f6e23752c3..61f3db0b25 100644 --- a/matrix-sdk-android/src/main/res/values-cs/strings.xml +++ b/matrix-sdk-android/src/main/res/values-cs/strings.xml @@ -82,4 +82,86 @@ Prázdná místnost + %s upravil/a tuto místnost. + + Zpráva byla smazána [důvod: %1$s] + Zpráva smazána [smazal/a %1$s] [důvod: %2$s] + "%1$s obnovil/a pozvánku do místnosti pro %2$s" + Kočka + Lev + Kůň + Jednorožec + Prase + Slon + Králík + Panda + Kohout + Tučnák + Želva + Ryba + Chobotnice + Motýl + Květina + Strom + Kaktus + Houba + Glóbus + Měsíc + Mrak + Oheň + Banán + Jablko + Jahoda + Kukuřice + Pizza + Dort + Srdce + Smajlík + Robot + Klobouk + Brýle + Santa + Zvednutý palec + Deštník + Přesípací hodiny + Hodiny + Dárek + Žárovka + Knížka + Tužka + Sponka + Nůžky + Zámek + Klíč + Kladivo + Telefon + Vlajka + Vlak + Kolo + Letadlo + Raketa + Pohár + Míč + Kytara + Trumpeta + Zvon + Kotva + Sluchátka + Složka + Úvodní synchronizace: +\nStahuji účet… + Uvodní synchronizace: +\nStahuji klíče + Uvodní synchnizace: +\nStahuji místnost + Uvodní synchronizace: +\nStahuji moje místnosti + Uvodní synchonizace: +\nStahuji místnosti, které jsem opustil/a + Úvodní sychronizace: +\nImportuji komunity + Úvodní synchronizace: +\nImportuji data účtu + + Posílám zprávu… diff --git a/matrix-sdk-android/src/main/res/values-ko/strings.xml b/matrix-sdk-android/src/main/res/values-ko/strings.xml index 9dfbb6609b..68e94bb641 100644 --- a/matrix-sdk-android/src/main/res/values-ko/strings.xml +++ b/matrix-sdk-android/src/main/res/values-ko/strings.xml @@ -49,7 +49,7 @@ %1$s님이 %2$s님에게 방 초대를 보냈습니다 %1$s님이 %2$s의 초대를 수락했습니다 - ** 암호를 해독할 수 없음: %s ** + ** 암호를 복호화할 수 없음: %s ** 발신인의 기기에서 이 메시지의 키를 보내지 않았습니다. 관련 대화 diff --git a/matrix-sdk-android/src/main/res/values-sk/strings.xml b/matrix-sdk-android/src/main/res/values-sk/strings.xml index d5c7d95fd6..b729932b1f 100644 --- a/matrix-sdk-android/src/main/res/values-sk/strings.xml +++ b/matrix-sdk-android/src/main/res/values-sk/strings.xml @@ -88,70 +88,70 @@ Správa odstránená používateľom %1$s Správa odstránená [dôvod: %1$s] Správa odstránená používateľom %1$s [dôvod: %2$s] - Pes - Mačka - Lev + Hlava psa + Hlava mačky + Hlava leva Kôň - Jednorožec - Prasa + Hlava jednorožca + Hlava prasaťa Slon - Zajac - Panda + Hlava zajaca + Hlava pandy Kohút Tučniak Korytnačka Ryba Chobotnica Motýľ - Kvetina - Strom + Tulipán + Listnatý strom Kaktus - Hríb + Huba Zemeguľa - Mesiac + Polmesiac Oblak Oheň Banán - Jablko + Červené jablko Jahoda - Kukurica + Kukuričný klas Pizza - Koláč - Srdce - Úsmev + Narodeninová torta + Červené + Škeriaca sa tvár Robot - Klobúk + Cylinder Okuliare - Skrutkovač - Mikuláš + Francúzsky kľúč + Santa Claus Palec nahor Dáždnik Presýpacie hodiny - Hodiny - Darček + Budík + Zabalený darček Žiarovka - Kniha + Zatvorená kniha Ceruzka - Kancelárska sponka + Sponka na papier Nožnice - Zámok + Zatvorená zámka Kľúč Kladivo Telefón - Vlajka - Vlak + Kockovaná zástava + Rušeň Bicykel Lietadlo Raketa Trofej - Lopta + Futbal Gitara Trúbka - Zvonček + Zvon Kotva - Schlúchadlá - Priečinok - Pin + Slúchadlá + Fascikel + Špendlík Úvodná synchronizácia: \nPrebieha import účtu… @@ -173,4 +173,5 @@ Odosielanie správy… Vymazať správy na odoslanie + %1$s zamietol pozvanie používateľa %2$s vstúpiť do miestnosti diff --git a/matrix-sdk-android/src/main/res/values-zh-rCN/strings.xml b/matrix-sdk-android/src/main/res/values-zh-rCN/strings.xml index 3aed8858a3..6e3ced3048 100644 --- a/matrix-sdk-android/src/main/res/values-zh-rCN/strings.xml +++ b/matrix-sdk-android/src/main/res/values-zh-rCN/strings.xml @@ -13,7 +13,7 @@ %1$s 封禁了 %2$s %1$s 更换了他们的头像 %1$s 将他们的昵称设置为 %2$s - %1$s 把他们的昵称从 %2$s 改为 %3$s + %1$s 把他的昵称从 %2$s 改为 %3$s %1$s 移除了他们的昵称 (%2$s) %1$s 把主题改为: %2$s %1$s 把聊天室名称改为: %2$s @@ -167,4 +167,7 @@ 正在发送消息… 清除正在发送队列 + %1$s 撤回了对 %2$s 邀请 + 置顶 + diff --git a/matrix-sdk-android/src/main/res/values/strings.xml b/matrix-sdk-android/src/main/res/values/strings.xml index ce26c22137..e611ae25b0 100644 --- a/matrix-sdk-android/src/main/res/values/strings.xml +++ b/matrix-sdk-android/src/main/res/values/strings.xml @@ -243,4 +243,18 @@ Sending message… Clear sending queue + %1$s\'s invitation. Reason: %2$s + %1$s invited %2$s. Reason: %3$s + %1$s invited you. Reason: %2$s + %1$s joined. Reason: %2$s + %1$s left. Reason: %2$s + %1$s rejected the invitation. Reason: %2$s + %1$s kicked %2$s. Reason: %3$s + %1$s unbanned %2$s. Reason: %3$s + %1$s banned %2$s. Reason: %3$s + %1$s sent an invitation to %2$s to join the room. Reason: %3$s + %1$s revoked the invitation for %2$s to join the room. Reason: %3$s + %1$s accepted the invitation for %2$s. Reason: %3$s + %1$s withdrew %2$s\'s invitation. Reason: %3$s + diff --git a/matrix-sdk-android/src/main/res/values/strings_RiotX.xml b/matrix-sdk-android/src/main/res/values/strings_RiotX.xml index a22533c6d1..03bc6d3684 100644 --- a/matrix-sdk-android/src/main/res/values/strings_RiotX.xml +++ b/matrix-sdk-android/src/main/res/values/strings_RiotX.xml @@ -2,19 +2,6 @@ - %1$s\'s invitation. Reason: %2$s - %1$s invited %2$s. Reason: %3$s - %1$s invited you. Reason: %2$s - %1$s joined. Reason: %2$s - %1$s left. Reason: %2$s - %1$s rejected the invitation. Reason: %2$s - %1$s kicked %2$s. Reason: %3$s - %1$s unbanned %2$s. Reason: %3$s - %1$s banned %2$s. Reason: %3$s - %1$s sent an invitation to %2$s to join the room. Reason: %3$s - %1$s revoked the invitation for %2$s to join the room. Reason: %3$s - %1$s accepted the invitation for %2$s. Reason: %3$s - %1$s withdrew %2$s\'s invitation. Reason: %3$s - There is no network connection right now + \ No newline at end of file diff --git a/vector/build.gradle b/vector/build.gradle index 8a2df7c120..c8d474088f 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -15,7 +15,7 @@ androidExtensions { } ext.versionMajor = 0 -ext.versionMinor = 11 +ext.versionMinor = 12 ext.versionPatch = 0 static def getGitTimestamp() { @@ -293,6 +293,7 @@ dependencies { implementation 'me.gujun.android:span:1.7' implementation "io.noties.markwon:core:$markwon_version" implementation "io.noties.markwon:html:$markwon_version" + implementation 'com.googlecode.htmlcompressor:htmlcompressor:1.4' implementation 'me.saket:better-link-movement-method:2.2.0' implementation 'com.google.android:flexbox:1.1.1' implementation "androidx.autofill:autofill:$autofill_version" diff --git a/vector/lint.xml b/vector/lint.xml index b6da88aedd..6a9b0634a7 100644 --- a/vector/lint.xml +++ b/vector/lint.xml @@ -31,4 +31,8 @@ + + + + diff --git a/vector/src/main/assets/open_source_licenses.html b/vector/src/main/assets/open_source_licenses.html index 3cd500138a..2b08270c89 100755 --- a/vector/src/main/assets/open_source_licenses.html +++ b/vector/src/main/assets/open_source_licenses.html @@ -359,6 +359,11 @@ SOFTWARE.
Copyright 2018 Kumar Bibek +
  • + htmlcompressor +
    + Copyright 2017 Sergiy Kovalchuk +
  •  Apache License
    diff --git a/vector/src/main/java/im/vector/riotx/core/di/VectorComponent.kt b/vector/src/main/java/im/vector/riotx/core/di/VectorComponent.kt
    index c8c5d697f6..b78e291506 100644
    --- a/vector/src/main/java/im/vector/riotx/core/di/VectorComponent.kt
    +++ b/vector/src/main/java/im/vector/riotx/core/di/VectorComponent.kt
    @@ -38,6 +38,7 @@ import im.vector.riotx.features.home.AvatarRenderer
     import im.vector.riotx.features.home.HomeRoomListDataSource
     import im.vector.riotx.features.home.group.SelectedGroupDataSource
     import im.vector.riotx.features.html.EventHtmlRenderer
    +import im.vector.riotx.features.html.VectorHtmlCompressor
     import im.vector.riotx.features.navigation.Navigator
     import im.vector.riotx.features.notifications.*
     import im.vector.riotx.features.rageshake.BugReporter
    @@ -87,6 +88,8 @@ interface VectorComponent {
     
         fun eventHtmlRenderer(): EventHtmlRenderer
     
    +    fun vectorHtmlCompressor(): VectorHtmlCompressor
    +
         fun navigator(): Navigator
     
         fun errorFormatter(): ErrorFormatter
    diff --git a/vector/src/main/java/im/vector/riotx/core/epoxy/ZeroItem.kt b/vector/src/main/java/im/vector/riotx/core/epoxy/ZeroItem.kt
    new file mode 100644
    index 0000000000..b64abdcc6c
    --- /dev/null
    +++ b/vector/src/main/java/im/vector/riotx/core/epoxy/ZeroItem.kt
    @@ -0,0 +1,30 @@
    +/*
    + * Copyright 2019 New Vector Ltd
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + * http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +package im.vector.riotx.core.epoxy
    +
    +import com.airbnb.epoxy.EpoxyModelClass
    +import im.vector.riotx.R
    +
    +/**
    + * Item of size (0, 0).
    + * It can be useful to avoid automatic scroll of RecyclerView with Epoxy controller, when the first valuable item changes.
    + */
    +@EpoxyModelClass(layout = R.layout.item_zero)
    +abstract class ZeroItem : VectorEpoxyModel() {
    +
    +    class Holder : VectorEpoxyHolder()
    +}
    diff --git a/vector/src/main/java/im/vector/riotx/core/error/fatal.kt b/vector/src/main/java/im/vector/riotx/core/error/fatal.kt
    new file mode 100644
    index 0000000000..800e1ea7ad
    --- /dev/null
    +++ b/vector/src/main/java/im/vector/riotx/core/error/fatal.kt
    @@ -0,0 +1,31 @@
    +/*
    + * Copyright 2019 New Vector Ltd
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +package im.vector.riotx.core.error
    +
    +import im.vector.riotx.BuildConfig
    +import timber.log.Timber
    +
    +/**
    + * throw in debug, only log in production. As this method does not always throw, next statement should be a return
    + */
    +fun fatalError(message: String) {
    +    if (BuildConfig.DEBUG) {
    +        error(message)
    +    } else {
    +        Timber.e(message)
    +    }
    +}
    diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseActivity.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseActivity.kt
    index 02e28e079c..f70aed9393 100644
    --- a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseActivity.kt
    +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseActivity.kt
    @@ -222,8 +222,7 @@ abstract class VectorBaseActivity : AppCompatActivity(), HasScreenInjector {
     
         override fun onResume() {
             super.onResume()
    -
    -        Timber.v("onResume Activity ${this.javaClass.simpleName}")
    +        Timber.i("onResume Activity ${this.javaClass.simpleName}")
     
             configurationViewModel.onActivityResumed()
     
    diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseBottomSheetDialogFragment.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseBottomSheetDialogFragment.kt
    index 70311e2f57..b3a56f48ee 100644
    --- a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseBottomSheetDialogFragment.kt
    +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseBottomSheetDialogFragment.kt
    @@ -32,6 +32,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment
     import im.vector.riotx.core.di.DaggerScreenComponent
     import im.vector.riotx.core.di.ScreenComponent
     import im.vector.riotx.core.utils.DimensionConverter
    +import timber.log.Timber
     
     /**
      * Add MvRx capabilities to bottomsheetdialog (like BaseMvRxFragment)
    @@ -80,6 +81,11 @@ abstract class VectorBaseBottomSheetDialogFragment : BottomSheetDialogFragment()
             super.onCreate(savedInstanceState)
         }
     
    +    override fun onResume() {
    +        super.onResume()
    +        Timber.i("onResume BottomSheet ${this.javaClass.simpleName}")
    +    }
    +
         override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
             return super.onCreateDialog(savedInstanceState).apply {
                 val dialog = this as? BottomSheetDialog
    diff --git a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseFragment.kt b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseFragment.kt
    index 902dfd33a7..3bb667593c 100644
    --- a/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseFragment.kt
    +++ b/vector/src/main/java/im/vector/riotx/core/platform/VectorBaseFragment.kt
    @@ -105,7 +105,7 @@ abstract class VectorBaseFragment : BaseMvRxFragment(), HasScreenInjector {
         @CallSuper
         override fun onResume() {
             super.onResume()
    -        Timber.v("onResume Fragment ${this.javaClass.simpleName}")
    +        Timber.i("onResume Fragment ${this.javaClass.simpleName}")
         }
     
         @CallSuper
    diff --git a/vector/src/main/java/im/vector/riotx/core/ui/model/Size.kt b/vector/src/main/java/im/vector/riotx/core/ui/model/Size.kt
    new file mode 100644
    index 0000000000..65ab0ad2b2
    --- /dev/null
    +++ b/vector/src/main/java/im/vector/riotx/core/ui/model/Size.kt
    @@ -0,0 +1,20 @@
    +/*
    + * Copyright 2019 New Vector Ltd
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +package im.vector.riotx.core.ui.model
    +
    +// android.util.Size in API 21+
    +data class Size(val width: Int, val height: Int)
    diff --git a/vector/src/main/java/im/vector/riotx/features/attachments/AttachmentsMapper.kt b/vector/src/main/java/im/vector/riotx/features/attachments/AttachmentsMapper.kt
    index 5e843fcdfd..4b51c548a7 100644
    --- a/vector/src/main/java/im/vector/riotx/features/attachments/AttachmentsMapper.kt
    +++ b/vector/src/main/java/im/vector/riotx/features/attachments/AttachmentsMapper.kt
    @@ -18,6 +18,7 @@ package im.vector.riotx.features.attachments
     
     import com.kbeanie.multipicker.api.entity.*
     import im.vector.matrix.android.api.session.content.ContentAttachmentData
    +import timber.log.Timber
     
     fun ChosenContact.toContactAttachment(): ContactAttachment {
         return ContactAttachment(
    @@ -29,6 +30,7 @@ fun ChosenContact.toContactAttachment(): ContactAttachment {
     }
     
     fun ChosenFile.toContentAttachmentData(): ContentAttachmentData {
    +    if (mimeType == null) Timber.w("No mimeType")
         return ContentAttachmentData(
                 path = originalPath,
                 mimeType = mimeType,
    @@ -40,6 +42,7 @@ fun ChosenFile.toContentAttachmentData(): ContentAttachmentData {
     }
     
     fun ChosenAudio.toContentAttachmentData(): ContentAttachmentData {
    +    if (mimeType == null) Timber.w("No mimeType")
         return ContentAttachmentData(
                 path = originalPath,
                 mimeType = mimeType,
    @@ -51,16 +54,17 @@ fun ChosenAudio.toContentAttachmentData(): ContentAttachmentData {
         )
     }
     
    -fun ChosenFile.mapType(): ContentAttachmentData.Type {
    +private fun ChosenFile.mapType(): ContentAttachmentData.Type {
         return when {
    -        mimeType.startsWith("image/") -> ContentAttachmentData.Type.IMAGE
    -        mimeType.startsWith("video/") -> ContentAttachmentData.Type.VIDEO
    -        mimeType.startsWith("audio/") -> ContentAttachmentData.Type.AUDIO
    -        else                          -> ContentAttachmentData.Type.FILE
    +        mimeType?.startsWith("image/") == true -> ContentAttachmentData.Type.IMAGE
    +        mimeType?.startsWith("video/") == true -> ContentAttachmentData.Type.VIDEO
    +        mimeType?.startsWith("audio/") == true -> ContentAttachmentData.Type.AUDIO
    +        else                                   -> ContentAttachmentData.Type.FILE
         }
     }
     
     fun ChosenImage.toContentAttachmentData(): ContentAttachmentData {
    +    if (mimeType == null) Timber.w("No mimeType")
         return ContentAttachmentData(
                 path = originalPath,
                 mimeType = mimeType,
    @@ -75,6 +79,7 @@ fun ChosenImage.toContentAttachmentData(): ContentAttachmentData {
     }
     
     fun ChosenVideo.toContentAttachmentData(): ContentAttachmentData {
    +    if (mimeType == null) Timber.w("No mimeType")
         return ContentAttachmentData(
                 path = originalPath,
                 mimeType = mimeType,
    diff --git a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListViewModel.kt
    index bbeda127fc..24318bc508 100644
    --- a/vector/src/main/java/im/vector/riotx/features/home/group/GroupListViewModel.kt
    +++ b/vector/src/main/java/im/vector/riotx/features/home/group/GroupListViewModel.kt
    @@ -68,14 +68,14 @@ class GroupListViewModel @AssistedInject constructor(@Assisted initialState: Gro
         }
     
         private fun observeSelectionState() {
    -        selectSubscribe(GroupListViewState::selectedGroup) {
    -            if (it != null) {
    +        selectSubscribe(GroupListViewState::selectedGroup) { groupSummary ->
    +            if (groupSummary != null) {
                     val selectedGroup = _openGroupLiveData.value?.peekContent()
    -                // We only wan to open group if the updated selectedGroup is a different one.
    -                if (selectedGroup?.groupId != it.groupId) {
    -                    _openGroupLiveData.postLiveEvent(it)
    +                // We only want to open group if the updated selectedGroup is a different one.
    +                if (selectedGroup?.groupId != groupSummary.groupId) {
    +                    _openGroupLiveData.postLiveEvent(groupSummary)
                     }
    -                val optionGroup = Option.fromNullable(it)
    +                val optionGroup = Option.just(groupSummary)
                     selectedGroupStore.post(optionGroup)
                 }
             }
    diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/breadcrumbs/BreadcrumbsController.kt b/vector/src/main/java/im/vector/riotx/features/home/room/breadcrumbs/BreadcrumbsController.kt
    index bfc91bf5a1..3b77835917 100644
    --- a/vector/src/main/java/im/vector/riotx/features/home/room/breadcrumbs/BreadcrumbsController.kt
    +++ b/vector/src/main/java/im/vector/riotx/features/home/room/breadcrumbs/BreadcrumbsController.kt
    @@ -19,6 +19,7 @@ package im.vector.riotx.features.home.room.breadcrumbs
     import android.view.View
     import com.airbnb.epoxy.EpoxyController
     import im.vector.matrix.android.api.util.toMatrixItem
    +import im.vector.riotx.core.epoxy.zeroItem
     import im.vector.riotx.core.utils.DebouncedClickListener
     import im.vector.riotx.features.home.AvatarRenderer
     import javax.inject.Inject
    @@ -45,9 +46,13 @@ class BreadcrumbsController @Inject constructor(
         override fun buildModels() {
             val safeViewState = viewState ?: return
     
    +        // Add a ZeroItem to avoid automatic scroll when the breadcrumbs are updated from another client
    +        zeroItem {
    +            id("top")
    +        }
    +
             // An empty breadcrumbs list can only be temporary because when entering in a room,
             // this one is added to the breadcrumbs
    -
             safeViewState.asyncBreadcrumbs.invoke()
                     ?.forEach {
                         breadcrumbsItem {
    diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt
    index 64544a9035..d337d37754 100644
    --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt
    +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt
    @@ -86,8 +86,6 @@ import im.vector.riotx.features.autocomplete.command.CommandAutocompletePolicy
     import im.vector.riotx.features.autocomplete.user.AutocompleteUserPresenter
     import im.vector.riotx.features.command.Command
     import im.vector.riotx.features.home.AvatarRenderer
    -import im.vector.riotx.features.permalink.NavigateToRoomInterceptor
    -import im.vector.riotx.features.permalink.PermalinkHandler
     import im.vector.riotx.features.home.getColorFromUserId
     import im.vector.riotx.features.home.room.detail.composer.TextComposerAction
     import im.vector.riotx.features.home.room.detail.composer.TextComposerView
    @@ -109,6 +107,8 @@ import im.vector.riotx.features.media.ImageMediaViewerActivity
     import im.vector.riotx.features.media.VideoContentRenderer
     import im.vector.riotx.features.media.VideoMediaViewerActivity
     import im.vector.riotx.features.notifications.NotificationDrawerManager
    +import im.vector.riotx.features.permalink.NavigateToRoomInterceptor
    +import im.vector.riotx.features.permalink.PermalinkHandler
     import im.vector.riotx.features.reactions.EmojiReactionPickerActivity
     import im.vector.riotx.features.settings.VectorPreferences
     import im.vector.riotx.features.share.SharedData
    @@ -426,8 +426,10 @@ class RoomDetailFragment @Inject constructor(
                     composerLayout.composerRelatedMessageAvatar
             )
             composerLayout.expand {
    -            // need to do it here also when not using quick reply
    -            focusComposerAndShowKeyboard()
    +            if (isAdded) {
    +                // need to do it here also when not using quick reply
    +                focusComposerAndShowKeyboard()
    +            }
             }
             focusComposerAndShowKeyboard()
         }
    diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt
    index 102412948b..1303c3aad9 100644
    --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt
    +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt
    @@ -41,6 +41,7 @@ import im.vector.riotx.core.resources.StringProvider
     import im.vector.riotx.features.home.room.detail.timeline.format.NoticeEventFormatter
     import im.vector.riotx.features.home.room.detail.timeline.item.MessageInformationData
     import im.vector.riotx.features.html.EventHtmlRenderer
    +import im.vector.riotx.features.html.VectorHtmlCompressor
     import java.text.SimpleDateFormat
     import java.util.*
     
    @@ -82,6 +83,7 @@ data class MessageActionState(
     class MessageActionsViewModel @AssistedInject constructor(@Assisted
                                                               initialState: MessageActionState,
                                                               private val eventHtmlRenderer: Lazy,
    +                                                          private val htmlCompressor: VectorHtmlCompressor,
                                                               private val session: Session,
                                                               private val noticeEventFormatter: NoticeEventFormatter,
                                                               private val stringProvider: StringProvider
    @@ -100,6 +102,7 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted
     
             val quickEmojis = listOf("👍", "👎", "😄", "🎉", "😕", "❤️", "🚀", "👀")
     
    +        @JvmStatic
             override fun create(viewModelContext: ViewModelContext, state: MessageActionState): MessageActionsViewModel? {
                 val fragment: MessageActionsBottomSheet = (viewModelContext as FragmentViewModelContext).fragment()
                 return fragment.messageActionViewModelFactory.create(state)
    @@ -167,11 +170,16 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted
     
         private fun computeMessageBody(timelineEvent: Async): CharSequence? {
             return when (timelineEvent()?.root?.getClearType()) {
    -            EventType.MESSAGE     -> {
    +            EventType.MESSAGE,
    +            EventType.STICKER     -> {
                     val messageContent: MessageContent? = timelineEvent()?.getLastMessageContent()
                     if (messageContent is MessageTextContent && messageContent.format == MessageType.FORMAT_MATRIX_HTML) {
    -                    eventHtmlRenderer.get().render(messageContent.formattedBody
    -                            ?: messageContent.body)
    +                    val html = messageContent.formattedBody
    +                            ?.takeIf { it.isNotBlank() }
    +                            ?.let { htmlCompressor.compress(it) }
    +                            ?: messageContent.body
    +
    +                    eventHtmlRenderer.get().render(html)
                     } else {
                         messageContent?.body
                     }
    diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/edithistory/ViewEditHistoryViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/edithistory/ViewEditHistoryViewModel.kt
    index c1cccbef7a..64d8950420 100644
    --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/edithistory/ViewEditHistoryViewModel.kt
    +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/edithistory/ViewEditHistoryViewModel.kt
    @@ -61,6 +61,7 @@ class ViewEditHistoryViewModel @AssistedInject constructor(@Assisted
     
         companion object : MvRxViewModelFactory {
     
    +        @JvmStatic
             override fun create(viewModelContext: ViewModelContext, state: ViewEditHistoryViewState): ViewEditHistoryViewModel? {
                 val fragment: ViewEditHistoryBottomSheet = (viewModelContext as FragmentViewModelContext).fragment()
                 return fragment.viewEditHistoryViewModelFactory.create(state)
    diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/MessageItemFactory.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/MessageItemFactory.kt
    index 9c96f17022..9e05cdcc18 100644
    --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/MessageItemFactory.kt
    +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/MessageItemFactory.kt
    @@ -46,6 +46,7 @@ import im.vector.riotx.features.home.room.detail.timeline.tools.createLinkMoveme
     import im.vector.riotx.features.home.room.detail.timeline.tools.linkify
     import im.vector.riotx.features.html.CodeVisitor
     import im.vector.riotx.features.html.EventHtmlRenderer
    +import im.vector.riotx.features.html.VectorHtmlCompressor
     import im.vector.riotx.features.media.ImageContentRenderer
     import im.vector.riotx.features.media.VideoContentRenderer
     import me.gujun.android.span.span
    @@ -57,6 +58,7 @@ class MessageItemFactory @Inject constructor(
             private val dimensionConverter: DimensionConverter,
             private val timelineMediaSizeProvider: TimelineMediaSizeProvider,
             private val htmlRenderer: Lazy,
    +        private val htmlCompressor: VectorHtmlCompressor,
             private val stringProvider: StringProvider,
             private val imageContentRenderer: ImageContentRenderer,
             private val messageInformationDataFactory: MessageInformationDataFactory,
    @@ -179,10 +181,16 @@ class MessageItemFactory @Inject constructor(
                     .playable(messageContent.info?.mimeType == "image/gif")
                     .highlighted(highlight)
                     .mediaData(data)
    -                .clickListener(
    -                        DebouncedClickListener(View.OnClickListener { view ->
    -                            callback?.onImageMessageClicked(messageContent, data, view)
    -                        }))
    +                .apply {
    +                    if (messageContent.type == MessageType.MSGTYPE_STICKER_LOCAL) {
    +                        mode(ImageContentRenderer.Mode.STICKER)
    +                    } else {
    +                        clickListener(
    +                                DebouncedClickListener(View.OnClickListener { view ->
    +                                    callback?.onImageMessageClicked(messageContent, data, view)
    +                                }))
    +                    }
    +                }
         }
     
         private fun buildVideoMessageItem(messageContent: MessageVideoContent,
    @@ -227,6 +235,7 @@ class MessageItemFactory @Inject constructor(
                                             attributes: AbsMessageItem.Attributes): VectorEpoxyModel<*>? {
             val isFormatted = messageContent.formattedBody.isNullOrBlank().not()
             return if (isFormatted) {
    +            // First detect if the message contains some code block(s) or inline code
                 val localFormattedBody = htmlRenderer.get().parse(messageContent.body) as Document
                 val codeVisitor = CodeVisitor()
                 codeVisitor.visit(localFormattedBody)
    @@ -240,7 +249,8 @@ class MessageItemFactory @Inject constructor(
                         buildMessageTextItem(codeFormatted, false, informationData, highlight, callback, attributes)
                     }
                     CodeVisitor.Kind.NONE   -> {
    -                    val formattedBody = htmlRenderer.get().render(messageContent.formattedBody!!)
    +                    val compressed = htmlCompressor.compress(messageContent.formattedBody!!)
    +                    val formattedBody = htmlRenderer.get().render(compressed)
                         buildMessageTextItem(formattedBody, true, informationData, highlight, callback, attributes)
                     }
                 }
    diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageImageVideoItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageImageVideoItem.kt
    index 457f30cbf4..2fd46ddf12 100644
    --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageImageVideoItem.kt
    +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/MessageImageVideoItem.kt
    @@ -36,6 +36,8 @@ abstract class MessageImageVideoItem : AbsMessageItem {
     
    +        @JvmStatic
             override fun create(viewModelContext: ViewModelContext, state: DisplayReactionsViewState): ViewReactionsViewModel? {
                 val fragment: ViewReactionsBottomSheet = (viewModelContext as FragmentViewModelContext).fragment()
                 return fragment.viewReactionsViewModelFactory.create(state)
    diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsViewModel.kt
    index 7f7a1f41c4..1c4d414f18 100644
    --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsViewModel.kt
    +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/actions/RoomListQuickActionsViewModel.kt
    @@ -37,6 +37,7 @@ class RoomListQuickActionsViewModel @AssistedInject constructor(@Assisted initia
     
         companion object : MvRxViewModelFactory {
     
    +        @JvmStatic
             override fun create(viewModelContext: ViewModelContext, state: RoomListQuickActionsState): RoomListQuickActionsViewModel? {
                 val fragment: RoomListQuickActionsBottomSheet = (viewModelContext as FragmentViewModelContext).fragment()
                 return fragment.roomListActionsViewModelFactory.create(state)
    diff --git a/vector/src/main/java/im/vector/riotx/features/html/VectorHtmlCompressor.kt b/vector/src/main/java/im/vector/riotx/features/html/VectorHtmlCompressor.kt
    new file mode 100644
    index 0000000000..9f3cf96a7e
    --- /dev/null
    +++ b/vector/src/main/java/im/vector/riotx/features/html/VectorHtmlCompressor.kt
    @@ -0,0 +1,40 @@
    +/*
    + * Copyright 2019 New Vector Ltd
    + *
    + * Licensed under the Apache License, Version 2.0 (the "License");
    + * you may not use this file except in compliance with the License.
    + * You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +package im.vector.riotx.features.html
    +
    +import com.googlecode.htmlcompressor.compressor.Compressor
    +import com.googlecode.htmlcompressor.compressor.HtmlCompressor
    +import javax.inject.Inject
    +import javax.inject.Singleton
    +
    +@Singleton
    +class VectorHtmlCompressor @Inject constructor() {
    +
    +    // All default options are suitable so far
    +    private val htmlCompressor: Compressor = HtmlCompressor()
    +
    +    fun compress(html: String): String {
    +        var result = htmlCompressor.compress(html)
    +
    +        // Trim space after 
    and

    , unfortunately the method setRemoveSurroundingSpaces() from the doc does not exist + result = result.replace("
    ", "
    ") + result = result.replace("
    ", "
    ") + result = result.replace("

    ", "

    ") + + return result + } +} diff --git a/vector/src/main/java/im/vector/riotx/features/media/ImageContentRenderer.kt b/vector/src/main/java/im/vector/riotx/features/media/ImageContentRenderer.kt index df638b462b..909fd5b8eb 100644 --- a/vector/src/main/java/im/vector/riotx/features/media/ImageContentRenderer.kt +++ b/vector/src/main/java/im/vector/riotx/features/media/ImageContentRenderer.kt @@ -31,11 +31,13 @@ import im.vector.matrix.android.internal.crypto.attachments.ElementToDecrypt import im.vector.riotx.core.di.ActiveSessionHolder import im.vector.riotx.core.glide.GlideApp import im.vector.riotx.core.glide.GlideRequest +import im.vector.riotx.core.ui.model.Size import im.vector.riotx.core.utils.DimensionConverter import im.vector.riotx.core.utils.isLocalFile import kotlinx.android.parcel.Parcelize import timber.log.Timber import javax.inject.Inject +import kotlin.math.min class ImageContentRenderer @Inject constructor(private val activeSessionHolder: ActiveSessionHolder, private val dimensionConverter: DimensionConverter) { @@ -56,17 +58,18 @@ class ImageContentRenderer @Inject constructor(private val activeSessionHolder: enum class Mode { FULL_SIZE, - THUMBNAIL + THUMBNAIL, + STICKER } fun render(data: Data, mode: Mode, imageView: ImageView) { - val (width, height) = processSize(data, mode) - imageView.layoutParams.height = height - imageView.layoutParams.width = width + val size = processSize(data, mode) + imageView.layoutParams.width = size.width + imageView.layoutParams.height = size.height // a11y imageView.contentDescription = data.filename - createGlideRequest(data, mode, imageView, width, height) + createGlideRequest(data, mode, imageView, size) .dontAnimate() .transform(RoundedCorners(dimensionConverter.dpToPx(8))) .thumbnail(0.3f) @@ -74,12 +77,12 @@ class ImageContentRenderer @Inject constructor(private val activeSessionHolder: } fun renderFitTarget(data: Data, mode: Mode, imageView: ImageView, callback: ((Boolean) -> Unit)? = null) { - val (width, height) = processSize(data, mode) + val size = processSize(data, mode) // a11y imageView.contentDescription = data.filename - createGlideRequest(data, mode, imageView, width, height) + createGlideRequest(data, mode, imageView, size) .listener(object : RequestListener { override fun onLoadFailed(e: GlideException?, model: Any?, @@ -102,7 +105,7 @@ class ImageContentRenderer @Inject constructor(private val activeSessionHolder: .into(imageView) } - private fun createGlideRequest(data: Data, mode: Mode, imageView: ImageView, width: Int, height: Int): GlideRequest { + private fun createGlideRequest(data: Data, mode: Mode, imageView: ImageView, size: Size): GlideRequest { return if (data.elementToDecrypt != null) { // Encrypted image GlideApp @@ -112,8 +115,9 @@ class ImageContentRenderer @Inject constructor(private val activeSessionHolder: // Clear image val contentUrlResolver = activeSessionHolder.getActiveSession().contentUrlResolver() val resolvedUrl = when (mode) { - Mode.FULL_SIZE -> contentUrlResolver.resolveFullSize(data.url) - Mode.THUMBNAIL -> contentUrlResolver.resolveThumbnail(data.url, width, height, ContentUrlResolver.ThumbnailMethod.SCALE) + Mode.FULL_SIZE, + Mode.STICKER -> contentUrlResolver.resolveFullSize(data.url) + Mode.THUMBNAIL -> contentUrlResolver.resolveThumbnail(data.url, size.width, size.height, ContentUrlResolver.ThumbnailMethod.SCALE) } // Fallback to base url ?: data.url @@ -144,23 +148,32 @@ class ImageContentRenderer @Inject constructor(private val activeSessionHolder: ) } - private fun processSize(data: Data, mode: Mode): Pair { + private fun processSize(data: Data, mode: Mode): Size { val maxImageWidth = data.maxWidth val maxImageHeight = data.maxHeight val width = data.width ?: maxImageWidth val height = data.height ?: maxImageHeight - var finalHeight = -1 var finalWidth = -1 + var finalHeight = -1 // if the image size is known // compute the expected height if (width > 0 && height > 0) { - if (mode == Mode.FULL_SIZE) { - finalHeight = height - finalWidth = width - } else { - finalHeight = Math.min(maxImageWidth * height / width, maxImageHeight) - finalWidth = finalHeight * width / height + when (mode) { + Mode.FULL_SIZE -> { + finalHeight = height + finalWidth = width + } + Mode.THUMBNAIL -> { + finalHeight = min(maxImageWidth * height / width, maxImageHeight) + finalWidth = finalHeight * width / height + } + Mode.STICKER -> { + // limit on width + val maxWidthDp = min(dimensionConverter.dpToPx(120), maxImageWidth / 2) + finalWidth = min(dimensionConverter.dpToPx(width), maxWidthDp) + finalHeight = finalWidth * height / width + } } } // ensure that some values are properly initialized @@ -170,6 +183,6 @@ class ImageContentRenderer @Inject constructor(private val activeSessionHolder: if (finalWidth < 0) { finalWidth = maxImageWidth } - return Pair(finalWidth, finalHeight) + return Size(finalWidth, finalHeight) } } diff --git a/vector/src/main/java/im/vector/riotx/features/navigation/DefaultNavigator.kt b/vector/src/main/java/im/vector/riotx/features/navigation/DefaultNavigator.kt index 19f6aece58..08ff11217d 100644 --- a/vector/src/main/java/im/vector/riotx/features/navigation/DefaultNavigator.kt +++ b/vector/src/main/java/im/vector/riotx/features/navigation/DefaultNavigator.kt @@ -19,8 +19,11 @@ package im.vector.riotx.features.navigation import android.app.Activity import android.content.Context import android.content.Intent +import androidx.core.app.TaskStackBuilder import im.vector.matrix.android.api.session.room.model.roomdirectory.PublicRoom import im.vector.riotx.R +import im.vector.riotx.core.di.ActiveSessionHolder +import im.vector.riotx.core.error.fatalError import im.vector.riotx.core.platform.VectorBaseActivity import im.vector.riotx.core.utils.toast import im.vector.riotx.features.crypto.keysbackup.settings.KeysBackupManageActivity @@ -38,12 +41,18 @@ import im.vector.riotx.features.share.SharedData import timber.log.Timber import javax.inject.Inject import javax.inject.Singleton -import androidx.core.app.TaskStackBuilder @Singleton -class DefaultNavigator @Inject constructor() : Navigator { +class DefaultNavigator @Inject constructor( + private val sessionHolder: ActiveSessionHolder +) : Navigator { override fun openRoom(context: Context, roomId: String, eventId: String?, buildTask: Boolean) { + if (sessionHolder.getSafeActiveSession()?.getRoom(roomId) == null) { + fatalError("Trying to open an unknown room $roomId") + return + } + val args = RoomDetailArgs(roomId, eventId) val intent = RoomDetailActivity.newIntent(context, args) if (buildTask) { diff --git a/vector/src/main/java/im/vector/riotx/features/permalink/PermalinkHandler.kt b/vector/src/main/java/im/vector/riotx/features/permalink/PermalinkHandler.kt index 41ddb49cb5..e46adc53fc 100644 --- a/vector/src/main/java/im/vector/riotx/features/permalink/PermalinkHandler.kt +++ b/vector/src/main/java/im/vector/riotx/features/permalink/PermalinkHandler.kt @@ -87,9 +87,9 @@ class PermalinkHandler @Inject constructor(private val session: Session, } /** - * Open room either joined, or not unknown + * Open room either joined, or not */ - private fun openRoom(context: Context, roomId: String?, eventId: String? = null, buildTask: Boolean) { + private fun openRoom(context: Context, roomId: String?, eventId: String?, buildTask: Boolean) { return if (roomId != null && session.getRoom(roomId) != null) { navigator.openRoom(context, roomId, eventId, buildTask) } else { diff --git a/vector/src/main/java/im/vector/riotx/features/permalink/PermalinkHandlerActivity.kt b/vector/src/main/java/im/vector/riotx/features/permalink/PermalinkHandlerActivity.kt index 08e09fa48d..5339a2c6f9 100644 --- a/vector/src/main/java/im/vector/riotx/features/permalink/PermalinkHandlerActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/permalink/PermalinkHandlerActivity.kt @@ -27,7 +27,6 @@ import im.vector.riotx.core.utils.toast import im.vector.riotx.features.home.LoadingFragment import im.vector.riotx.features.login.LoginActivity import io.reactivex.android.schedulers.AndroidSchedulers -import kotlinx.android.synthetic.debug.activity_test_material_theme.* import java.util.concurrent.TimeUnit import javax.inject.Inject diff --git a/vector/src/main/java/im/vector/riotx/features/rageshake/BugReportActivity.kt b/vector/src/main/java/im/vector/riotx/features/rageshake/BugReportActivity.kt index 187566f660..5c1428cb54 100755 --- a/vector/src/main/java/im/vector/riotx/features/rageshake/BugReportActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/rageshake/BugReportActivity.kt @@ -77,8 +77,7 @@ class BugReportActivity : VectorBaseActivity() { override fun onPrepareOptionsMenu(menu: Menu): Boolean { menu.findItem(R.id.ic_action_send_bug_report)?.let { - val isValid = bug_report_edit_text.text.toString().trim().length > 10 - && !bug_report_mask_view.isVisible + val isValid = !bug_report_mask_view.isVisible it.isEnabled = isValid it.icon.alpha = if (isValid) 255 else 100 @@ -90,7 +89,11 @@ class BugReportActivity : VectorBaseActivity() { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.ic_action_send_bug_report -> { - sendBugReport() + if (bug_report_edit_text.text.toString().trim().length >= 10) { + sendBugReport() + } else { + bug_report_text_input_layout.error = getString(R.string.bug_report_error_too_short) + } return true } } @@ -150,7 +153,7 @@ class BugReportActivity : VectorBaseActivity() { val myProgress = progress.coerceIn(0, 100) bug_report_progress_view.progress = myProgress - bug_report_progress_text_view.text = getString(R.string.send_bug_report_progress, "$myProgress") + bug_report_progress_text_view.text = getString(R.string.send_bug_report_progress, myProgress.toString()) } override fun onUploadSucceed() { @@ -179,7 +182,7 @@ class BugReportActivity : VectorBaseActivity() { @OnTextChanged(R.id.bug_report_edit_text) internal fun textChanged() { - invalidateOptionsMenu() + bug_report_text_input_layout.error = null } @OnCheckedChanged(R.id.bug_report_button_include_screenshot) diff --git a/vector/src/main/java/im/vector/riotx/features/rageshake/BugReporter.kt b/vector/src/main/java/im/vector/riotx/features/rageshake/BugReporter.kt index b96542a8ce..dc353363d5 100755 --- a/vector/src/main/java/im/vector/riotx/features/rageshake/BugReporter.kt +++ b/vector/src/main/java/im/vector/riotx/features/rageshake/BugReporter.kt @@ -33,6 +33,7 @@ import im.vector.riotx.core.di.ActiveSessionHolder import im.vector.riotx.core.extensions.toOnOff import im.vector.riotx.core.utils.getDeviceLocale import im.vector.riotx.features.settings.VectorLocale +import im.vector.riotx.features.settings.VectorPreferences import im.vector.riotx.features.themes.ThemeUtils import im.vector.riotx.features.version.VersionProvider import okhttp3.Call @@ -44,12 +45,15 @@ import okhttp3.Response import org.json.JSONException import org.json.JSONObject import timber.log.Timber -import java.io.* +import java.io.File +import java.io.IOException +import java.io.OutputStreamWriter import java.net.HttpURLConnection -import java.util.Locale +import java.util.* import java.util.zip.GZIPOutputStream import javax.inject.Inject import javax.inject.Singleton +import kotlin.collections.ArrayList /** * BugReporter creates and sends the bug reports. @@ -57,6 +61,7 @@ import javax.inject.Singleton @Singleton class BugReporter @Inject constructor(private val activeSessionHolder: ActiveSessionHolder, private val versionProvider: VersionProvider, + private val vectorPreferences: VectorPreferences, private val vectorFileLogger: VectorFileLogger) { var inMultiWindowMode = false @@ -230,7 +235,7 @@ class BugReporter @Inject constructor(private val activeSessionHolder: ActiveSes .addFormDataPart("matrix_sdk_version", Matrix.getSdkVersion()) .addFormDataPart("olm_version", olmVersion) .addFormDataPart("device", Build.MODEL.trim()) - .addFormDataPart("lazy_loading", true.toOnOff()) + .addFormDataPart("verbose_log", vectorPreferences.labAllowedExtendedLogging().toOnOff()) .addFormDataPart("multi_window", inMultiWindowMode.toOnOff()) .addFormDataPart("os", Build.VERSION.RELEASE + " (API " + Build.VERSION.SDK_INT + ") " + Build.VERSION.INCREMENTAL + "-" + Build.VERSION.CODENAME) diff --git a/vector/src/main/java/im/vector/riotx/features/rageshake/VectorFileLogger.kt b/vector/src/main/java/im/vector/riotx/features/rageshake/VectorFileLogger.kt index 95053790c8..6049db6180 100644 --- a/vector/src/main/java/im/vector/riotx/features/rageshake/VectorFileLogger.kt +++ b/vector/src/main/java/im/vector/riotx/features/rageshake/VectorFileLogger.kt @@ -24,9 +24,7 @@ import java.io.File import java.io.PrintWriter import java.io.StringWriter import java.text.SimpleDateFormat -import java.util.Date -import java.util.Locale -import java.util.TimeZone +import java.util.* import java.util.logging.* import java.util.logging.Formatter import javax.inject.Inject @@ -83,7 +81,8 @@ class VectorFileLogger @Inject constructor(val context: Context, private val vec return if (vectorPreferences.labAllowedExtendedLogging()) { false } else { - priority < Log.ERROR + // Exclude debug and verbose logs + priority <= Log.DEBUG } } diff --git a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultViewModel.kt b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultViewModel.kt index 057c5d8159..01debac5ed 100644 --- a/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/reactions/EmojiSearchResultViewModel.kt @@ -42,6 +42,7 @@ class EmojiSearchResultViewModel @AssistedInject constructor( companion object : MvRxViewModelFactory { + @JvmStatic override fun create(viewModelContext: ViewModelContext, state: EmojiSearchResultViewState): EmojiSearchResultViewModel? { val activity: EmojiReactionPickerActivity = (viewModelContext as ActivityViewModelContext).activity() return activity.emojiSearchResultViewModelFactory.create(state) diff --git a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt index d89f0e2b99..dcd64c6a46 100644 --- a/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/roomdirectory/RoomDirectoryViewModel.kt @@ -178,7 +178,9 @@ class RoomDirectoryViewModel @AssistedInject constructor(@Assisted initialState: copy( asyncPublicRoomsRequest = Success(data.chunk!!), // It's ok to append at the end of the list, so I use publicRooms.size() - publicRooms = publicRooms.appendAt(data.chunk!!, publicRooms.size), + publicRooms = publicRooms.appendAt(data.chunk!!, publicRooms.size) + // Rageshake #8206 tells that we can have several times the same room + .distinctBy { it.roomId }, hasMore = since != null ) } diff --git a/vector/src/main/java/im/vector/riotx/features/settings/VectorSettingsBaseFragment.kt b/vector/src/main/java/im/vector/riotx/features/settings/VectorSettingsBaseFragment.kt index 666f1610b0..e32cc98123 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/VectorSettingsBaseFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/VectorSettingsBaseFragment.kt @@ -65,7 +65,7 @@ abstract class VectorSettingsBaseFragment : PreferenceFragmentCompat(), HasScree override fun onResume() { super.onResume() - Timber.v("onResume Fragment ${this.javaClass.simpleName}") + Timber.i("onResume Fragment ${this.javaClass.simpleName}") vectorActivity.supportActionBar?.setTitle(titleRes) // find the view from parent activity mLoadingView = vectorActivity.findViewById(R.id.vector_settings_spinner_views) diff --git a/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysViewModel.kt b/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysViewModel.kt index dd773f4c22..db4586dff5 100644 --- a/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/settings/push/PushGatewaysViewModel.kt @@ -40,6 +40,7 @@ class PushGatewaysViewModel @AssistedInject constructor(@Assisted initialState: companion object : MvRxViewModelFactory { + @JvmStatic override fun create(viewModelContext: ViewModelContext, state: PushGatewayViewState): PushGatewaysViewModel? { val fragment: PushGatewaysFragment = (viewModelContext as FragmentViewModelContext).fragment() return fragment.pushGatewaysViewModelFactory.create(state) diff --git a/vector/src/main/res/layout/activity_bug_report.xml b/vector/src/main/res/layout/activity_bug_report.xml index bbe819769a..7156f91314 100644 --- a/vector/src/main/res/layout/activity_bug_report.xml +++ b/vector/src/main/res/layout/activity_bug_report.xml @@ -1,5 +1,6 @@ + android:textColorHint="?attr/vctr_default_text_hint_color" + app:counterEnabled="true" + app:counterMaxLength="500"> + diff --git a/vector/src/main/res/values-bn-rIN/strings.xml b/vector/src/main/res/values-bn-rIN/strings.xml index 06ee50219e..a0af9661d4 100644 --- a/vector/src/main/res/values-bn-rIN/strings.xml +++ b/vector/src/main/res/values-bn-rIN/strings.xml @@ -336,12 +336,10 @@ ভিডিও কল সম্পাদনের জন্য Riot আপনার ক্যামেরা এবং আপনার মাইক্রোফোন অ্যাক্সেস করার অনুমতির প্রয়োজন। \n \nকল করতে সক্ষম হতে পরবর্তী পপ আপ অ্যাক্সেস অনুমতি দিন। - Riot আপনার ইমেল এবং ফোন নম্বরগুলির উপর ভিত্তি করে অন্যান্য ম্যাট্রিক্স ব্যবহারকারীদের খুঁজে পেতে আপনার ঠিকানা বই পরিচিতিগুলি অ্যাক্সেস করার অনুমতির প্রয়োজন। + রায়ট অন্যান্য ম্যাট্রিক্স ব্যবহারকারীদের তাদের ইমেল এবং ফোন নম্বরগুলির উপর ভিত্তি করে আপনার ঠিকানা বইটি চেক করতে পারে। আপনি যদি এই উদ্দেশ্যে আপনার ঠিকানা বইটি ভাগ করে নিতে সম্মত হন তবে দয়া করে পরবর্তী পপ-আপটিতে অ্যাক্সেসের অনুমতি দিন। + রায়ট অন্যান্য ম্যাট্রিক্স ব্যবহারকারীদের তাদের ইমেল এবং ফোন নম্বরগুলির উপর ভিত্তি করে আপনার ঠিকানা বইটি চেক করতে পারে। \n -\nদয়া করে পরবর্তী পপ-আপ অ্যাক্সেসের অনুমতি দিয়ে ঠিকানা বই ব্যবহারকারীদের Riot থেকে অ্যাক্সেসযোগ্য করুন। - Riot কে আপনার ইমেল এবং ফোন নম্বরগুলির উপর ভিত্তি করে অন্যান্য ম্যাট্রিক্স ব্যবহারকারীদের সন্ধান করার জন্য আপনার ঠিকানা বই যোগাযোগ অ্যাক্সেস করার অনুমতির প্রয়োজন। -\n -\nRiot কে আপনার পরিচিতি অ্যাক্সেস করার অনুমতি দেবেন \? +\nআপনি এই উদ্দেশ্যে আপনার ঠিকানা বই ভাগ করতে সম্মত হন\? "দুঃখিত। কর্ম সঞ্চালিত না, অনুপস্থিত অনুমতির জন্য " @@ -726,7 +724,7 @@ বুট করার সময় শুরু ব্যাকগ্রাউন্ড সিঙ্ক সক্ষম করুন সিঙ্ক অনুরোধ সময়সীমার - প্রতিটি অনুরোধের মধ্যে বিলম্ব + প্রতিটি সিঙ্কের মধ্যে বিলম্ব সেকেন্ড সেকেন্ড @@ -791,10 +789,10 @@ ডেটা সংরক্ষণ মোড ডেটা সংরক্ষণ মোড একটি নির্দিষ্ট ফিল্টার প্রয়োগ করে যাতে উপস্থিতি আপডেট এবং টাইপিং বিজ্ঞপ্তি ফিল্টার করা হয়। - যন্ত্র বিবরণ + যন্ত্রের তথ্য আইডি - নাম - যন্ত্রের নাম + সর্বজনীন নাম + সর্বজনীন নাম আপডেট করুন শেষ দেখা %1$s @ %2$s এই অপারেশন অতিরিক্ত প্রমাণীকরণ প্রয়োজন। @@ -942,9 +940,9 @@ ডিক্রিপশন সমস্যা প্রেরক ডিভাইস তথ্য - যন্ত্রের নাম - নাম - ডিভাইস আইডি + সর্বজনীন নাম + সর্বজনীন নাম + আইডি যন্ত্রের কুঞ্জি প্রতিপাদন Ed25519 ফিঙ্গারপ্রিন্ট @@ -1098,4 +1096,100 @@ কমান্ড \"%s\" আরও পেরামিটার প্রয়োজন, অথবা কিছু পেরামিটার ভুল। কর্ম প্রদর্শন করে দেওয়া আইডি সঙ্গে ব্যবহারকারী কে নিষিদ্ধ করে + কোনটা না + রদ কর + বিযুক্ত + পর্যালোচনা + পতন + + কোনও পরিচয় সার্ভার কনফিগার করা নেই। + + ভুল কনফিগার্ড সার্ভারের কারণে কল ব্যর্থ হয়েছে + কলগুলি নির্ভরযোগ্যভাবে কাজ করার জন্য দয়া করে আপনার হোমসার্ভার (%1$s) এর প্রশাসককে একটি টার্ন সার্ভার কনফিগার করতে বলুন। +\n +\nবিকল্পভাবে, আপনি পাবলিক সার্ভারটি %2$s এ ব্যবহার করার চেষ্টা করতে পারেন, তবে এটি নির্ভরযোগ্য হবে না এবং এটি আপনার সার্ভারের সাথে আপনার আইপি ঠিকানাটি ভাগ করে দেবে। আপনি সেটিংসে এটি পরিচালনা করতে পারেন। + %s ব্যবহার করার চেষ্টা করুন + আবার আমাকে জিজ্ঞাসা করবেন না + + অ্যাকাউন্ট পুনরুদ্ধারের জন্য একটি ইমেল সেট করুন এবং পরে আপনাকে চিনে এমন লোকেরা ইচ্ছিকভাবে আবিষ্কারযোগ্য। + একটি ফোন সেট করুন এবং পরে আপনাকে জারা চেনে সেই লোকেদের দ্বারা বিকল্প হিসাবে আবিষ্কার করার জন্য। + অ্যাকাউন্ট পুনরুদ্ধারের জন্য একটি ইমেল সেট করুন। আপনার পরিচিত লোকদের দ্বারা বিকল্প হিসাবে আবিষ্কারের জন্য পরে ইমেল বা ফোন ব্যবহার করুন। + অ্যাকাউন্ট পুনরুদ্ধারের জন্য একটি ইমেল সেট করুন। আপনার পরিচিত লোকদের দ্বারা বিকল্প হিসাবে আবিষ্কারের জন্য পরে ইমেল বা ফোন ব্যবহার করুন। + এই ইউআরএলে কোনও হোম সার্ভারে পৌঁছানো যায় না, দয়া করে এটি পরীক্ষা করে দেখুন + ফ্যালব্যাক কল সহায়তা সার্ভারকে অনুমতি দিন + আপনার হোমসার্ভার একটি প্রস্তাব না দিলে সহায়তা হিসাবে %s ব্যবহার করবে (আপনার আইপি ঠিকানা কল করার সময় ভাগ করা হবে) + এই ক্রিয়াটি সম্পাদন করতে আপনার সেটিংসে একটি পরিচয় সার্ভার যুক্ত করুন। + আপনার পাসওয়ার্ড নিশ্চিত করুন + আপনি রায়ট মোবাইল থেকে এটি করতে পারবেন না + প্রমাণীকরণ প্রয়োজন + + + পটভূমি সিঙ্ক মোড (পরীক্ষামূলক) + ব্যাটারির জন্য অনুকূলিত + রায়ট এমনভাবে পটভূমিতে সিঙ্ক হবে যা ডিভাইসের সীমিত সংস্থান (ব্যাটারি) সংরক্ষণ করে। +\nআপনার ডিভাইস রিসোর্স স্থিতির উপর নির্ভর করে সিঙ্কটি অপারেটিং সিস্টেম দ্বারা পিছিয়ে যেতে পারে। + রিয়েল টাইম জন্য অনুকূলিত + রায়ট নির্দিষ্ট সময়ে সময়ে পটভূমিতে সিঙ্ক হবে (কনফিগারযোগ্য)। +\nএটি রেডিও এবং ব্যাটারির ব্যবহারকে প্রভাবিত করবে, রায়ট ইভেন্টগুলি শুনছে বলে জানিয়ে একটি স্থায়ী বিজ্ঞপ্তি প্রদর্শিত হবে। + কোনও পটভূমি সিঙ্ক না + অ্যাপটি ব্যাকগ্রাউন্ডে থাকা অবস্থায় আপনাকে আগত বার্তাগুলি সম্পর্কে অবহিত করা হবে না। + সেটিংস আপডেট করতে ব্যর্থ। + + + পছন্দের সিঙ্ক ব্যবধান + %s +\nসিঙ্কটি ডিভাইসের সংস্থান (ব্যাটারি) বা অবস্থার (ঘুম) উপর নির্ভর করে পিছিয়ে যেতে পারে। + ঐক্যবদ্ধতা + বট, সেতু, উইজেট এবং স্টিকার প্যাকগুলি পরিচালনা করতে ইন্টিগ্রেশন ম্যানেজার ব্যবহার করুন। +\nইন্টিগ্রেশন ম্যানেজাররা কনফিগারেশন ডেটা গ্রহণ করে এবং উইজেটগুলি সংশোধন করতে, রুম আমন্ত্রন প্রেরণ করতে এবং আপনার পক্ষে পাওয়ার স্তর নির্ধারণ করতে পারে। + আবিষ্কার + আপনার আবিষ্কারের সেটিংস পরিচালনা করুন। + সংহতকরণের অনুমতি দিন + ইন্টিগ্রেশন ম্যানেজার + + সর্বজনীন নাম (যাদের সাথে আপনি যোগাযোগ করেন তাদের কাছে দৃশ্যমান) + একটি ডিভাইসের সর্বজনীন নাম আপনি যাদের সাথে যোগাযোগ করেন তাদের কাছে দৃশ্যমান + উইজেট + উইজেট লোড করুন + এই উইজেটটি যুক্ত করেছেন: + এটি ব্যবহার করে কুকিজ সেট করতে পারে এবং %s এর সাথে ডেটা ভাগ করা যায়: + এটি ব্যবহার করে ডেটা %s এর সাথে ভাগ করে নিতে পারে: + উইজেট লোড করতে ব্যর্থ। +\n%s + উইজেট পুনরায় লোড করুন + ব্রাউজারে খুলুন + আমার জন্য অ্যাক্সেস প্রত্যাহার করুন + + আপনার প্রদশনীয় নাম + আপনার অবতার URL + আপনার ব্যবহারকারীর আইডি + আপনার থিম + উইজেট আইডি + কক্ষের আইডি + + + এই উইজেটটি নিম্নলিখিত সংস্থানগুলি ব্যবহার করতে চায়: + অনুমতি + সব অবরুদ্ধ + ক্যামেরা ব্যবহার করুন + মাইক্রোফোন ব্যবহার করুন + ডিআরএম সুরক্ষিত মিডিয়া পড়ুন + + কোনও ইন্টিগ্রেশন ম্যানেজার কনফিগার করা নেই। + চালিয়ে যেতে আপনার এই পরিষেবার শর্তাদি স্বীকার করতে হবে। + + প্রদত্ত আইডি সহ ব্যবহারকারীকে নিষিদ্ধ তালিকা থেকে বের করে + ব্যবহারকারীর পাওয়ার স্তর নির্ধারণ করুন + প্রদত্ত আইডি সহ ব্যবহারকারীকে ডিওপ করে + প্রদত্ত আইডি সহ ব্যবহারকারীকে বর্তমান কক্ষ এ আমন্ত্রণ জানায় + প্রদত্ত ওরফে সহ রুমে যোগ দেয় + কক্ষ ছেড়ে দিন + রুমের টপিক সেট করুন + প্রদত্ত আইডি সহ ব্যবহারকারীকে কিক্ করে + আপনার প্রদর্শনের ডাকনাম পরিবর্তন করে + অন/অফ মার্কডাউন + মার্কডাউন সক্ষম করা হয়েছে। + মার্কডাউন অক্ষম করা হয়েছে। + + অফ diff --git a/vector/src/main/res/values-cs/strings.xml b/vector/src/main/res/values-cs/strings.xml index 53f1d35d79..0cf8f9d8e9 100644 --- a/vector/src/main/res/values-cs/strings.xml +++ b/vector/src/main/res/values-cs/strings.xml @@ -28,7 +28,7 @@ CZ Zapomenout místnost - Synchronizace + Synchronizuji.. Hlasitá oznámení Tichá oznámení @@ -46,7 +46,8 @@ Zobraz dešifrovaný zdroj Nahlásit obsah Aktivní hovor - Probíhající konferenční hovor.\nPřipojit se %1$s nebo %2$s. + Probíhající konferenční hovor. +\nPřipojit se jako %1$s nebo %2$s. hlasem videem Nemohu spustit hovor, prosím zkusit později @@ -601,4 +602,12 @@ Omlouváme se za způsobené nepříjemnosti. Nastavit důležitost upozornění na základě události, nastavení zvuku, LED, vibrací Důležitost upozornění na základě události + Inicializuji službu + Ověřte zařízení + + Odpojit + Ignorovat + Odmítnout + + Označit za přečtené diff --git a/vector/src/main/res/values-de/strings.xml b/vector/src/main/res/values-de/strings.xml index 47dc512cb4..55fa5d1488 100644 --- a/vector/src/main/res/values-de/strings.xml +++ b/vector/src/main/res/values-de/strings.xml @@ -1695,7 +1695,7 @@ Wenn du diese neue Wiederherstellungsmethode nicht eingerichtet hast, kann ein A Für andere auffindbar sein Verwenden Sie Bots, Bridges, Widgets und Sticker-Packs - Lesen Sie bei + Gelesen von Identitätsserver @@ -1708,4 +1708,6 @@ Wenn du diese neue Wiederherstellungsmethode nicht eingerichtet hast, kann ein A Gib einen neuen Identitätsserver ein Konnte keine Verbindung zum Heimserver herstellen + Latn + diff --git a/vector/src/main/res/values-es/strings.xml b/vector/src/main/res/values-es/strings.xml index 252acefabc..fb2f023ef9 100644 --- a/vector/src/main/res/values-es/strings.xml +++ b/vector/src/main/res/values-es/strings.xml @@ -1568,4 +1568,34 @@ Ten en cuenta que esta acción reiniciará la aplicación y puede tardar algo de Haz una sugerencia Por favor escriba su sugerencia a continuación. Describa su sugerencia aquí + Latn + + Ninguno + Revocar + Desconectar + Revisar + Declinar + + No se ha configurado un servidor de identidad. + + La llamada ha fallado por un servidor mal configurado + Intente usar %s + No volver a preguntar + + Para hacer esto, vaya a las opciones y añada un servidor de identidad. + Confirme su contraseña + Eso no se puede hacer en Riot para móvil + Se necesita autenticación + + + Optimizado para batería + Optimizado para operar en tiempo real + Sin sincronización en segundo plano + No se han podido actualizar las opciones. + + + Integraciones + Descubrimiento + Gestione sus preferencias de descubrimiento. + Entérese aquí de los mensajes sin leer diff --git a/vector/src/main/res/values-eu/strings.xml b/vector/src/main/res/values-eu/strings.xml index 57eed05cca..046e5557f5 100644 --- a/vector/src/main/res/values-eu/strings.xml +++ b/vector/src/main/res/values-eu/strings.xml @@ -1766,4 +1766,39 @@ Abisua: Fitxategi hau ezabatu daiteke aplikazioa desinstalatzen bada. Ez dago sare konexiorik orain + Berretsi zure pasahitza + Ezin duzu hau egin mugikorrerako Riot erabiliz + Autentifikazioa behar da + + + Integrazioak + Erabili integrazio kudeatzaileren bat botak, zubiak, trepetak eta eranskailu multzoak kudeatzeko. +\nIntegrazio kudeatzaileek konfigurazio datuak jasotzen dituzte, eta trepetak aldatu ditzakete, gelarako gonbidapenak bidali, eta botere mailak zure izenean ezarri. + Baimendu integrazioak + Trepeta + Kargatu trepeta + Trepeta hau honek gehitu du: + Hau erabiltzean cookie-ak ezarri litezke eta %s zerbitzariarekin datuak partekatu: + Hau erabiltzean %s zerbitzariarekin datuak partekatu litezke: + Huts egin du trepeta kargatzean. +\n%s + Birkargatu trepeta + Ireki nabigatzailean + Indargabetu sarbidea niretzat + + Zure pantaila-izena + Zure abatarraren URL-a + Zure erabiltzaile ID-a + Zure gaia + Trepetaren ID-a + Gelaren ID-a + + + Trepetak honako baliabide hauek erabili nahi ditu: + Baimendu + Blokeatu denak + Kamera erabili + Mikrofonoa erabili + DRM bidez babestutako multimedia irakurri + diff --git a/vector/src/main/res/values-fi/strings.xml b/vector/src/main/res/values-fi/strings.xml index fc9546d21d..ea8a6abc5a 100644 --- a/vector/src/main/res/values-fi/strings.xml +++ b/vector/src/main/res/values-fi/strings.xml @@ -257,11 +257,11 @@ Riot tarvitsee käyttöluvan kameraan ottaakseen kuvia ja suorittakseen videopuheluita. " \n -\nSalli kameran käyttö seuraavassa ponnahdusikkunassa soittaaksesi puhelun." +\nSoittaaksesi videopuhelun, salli seuraavassa ponnahdusikkunassa sovelluksen käyttää kameraa." Riot tarvitsee käyttöluvan mikrofoniin suorittakseen puheluita. " \n -\nSalli mikrofonin käyttö seuraavassa ponnahdusikkunassa soittaaksesi puhelun." +\nSoittaaksesi äänipuhelun, salli seuraavassa ponnahdusikkunassa sovelluksen käyttää mikrofonia." Riot tarvitsee käyttöluvan kameraan ja mikrofoniin suorittakseen videopuheluita. \n \nSalli mikrofonin ja kameran käyttö seuraavilla näytöillä aloittaaksesi tämän puhelun. @@ -1036,10 +1036,10 @@ Haluatko lisätä paketteja? \n%1$s Korjaa Play Services -palvelu - Firebase-token - FCM-token haettu onnistuneesti: + Firebase-tunniste + FCM-tunniste haettu onnistuneesti: \n%1$s - FCM-tokenin haku epäonnistui: + FCM-tunnisteen haku epäonnistui: \n%1$s [%1$s] \nTämä virhe ei ole Riotin hallinnassa ja Googlen mukaan tämä virhe tarkoittaa, että tällä laitteella on liikaa FCM:ään liittyneitä sovelluksia. Tämä virhe ilmenee vain tapauksissa, jossa on on erittäin paljon sovelluksia asennettuna, joten sen ei pitäisi vaikuttaa normaaliin käyttäjään. @@ -1049,9 +1049,9 @@ Haluatko lisätä paketteja? \nTämä virhe ei ole Riotin ratkaistavissa. Tässä puhelimessa ei ole Google-tiliä. Lisää laitteeseesi Google-tili tätä toimintoa varten. Lisää tili - Tokenin rekisteröinti - FCM-token rekisteröity onnistuneesti kotipalvelimelle. - FCM-tokenin rekisteröinti kotipalvelimelle epäonnistui: + Tunnisteen rekisteröinti + FCM-tunniste rekisteröity onnistuneesti kotipalvelimelle. + FCM-tunnisteen rekisteröinti kotipalvelimelle epäonnistui: \n%1$s Ilmoituspalvelu @@ -1479,7 +1479,7 @@ Jotta et menetä mitään, automaattiset päivitykset kannattaa pitää käytös Tervetuloa kotiin! Löydät täältä lukemattomat viestit Keskustelut - Yksityiset keskustelusi näytetään tässä + Tässä näytetään yksityiset keskustelusi Huoneet Huoneesi näytetään tässä @@ -1601,8 +1601,8 @@ Jotta et menetä mitään, automaattiset päivitykset kannattaa pitää käytös Huoneluettelo Julkaise tämä huone huoneluettelossa - Play Storen kuvaus - Push-säännöt + Play Storen kuvauksessa + Viesti-ilmoitusten säännöt %1$s luodaksesi tilin. Katkaise yhteys Kieltäydy @@ -1664,7 +1664,7 @@ Jotta et menetä mitään, automaattiset päivitykset kannattaa pitää käytös Ota yksityiskohtaiset lokit käyttöön. Yritä uudelleen, kun olet hyväksynyt kotipalvelimesi käyttöehdot. - Palvelimen vastaus näyttää viipyvän. Tämä voi johtua kehnosta yhteydestä tai palvelimillamme tapahtuneesta virheestä. Yritä hetken kuluttua uudelleen. + Palvelimen vastaus näyttäisi olevan liian hidas. Tämä voi johtua kehnosta yhteydestä tai palvelimella olevasta ongelmasta. Yritä hetken kuluttua uudelleen. Lähetä liite @@ -1707,6 +1707,148 @@ Jotta et menetä mitään, automaattiset päivitykset kannattaa pitää käytös Ole löydettävissä Tekstiviesti on lähetetty numeroon %s. Syötä sen sisältämä varmistuskoodi. - Push-sääntöjä ei ole määritetty + Viesti-ilmoitusten sääntöjä ei ole määritetty Luo uusi yksityiskeskustelu + Latn + + Kumoa + Tarkasta + Aseta puhelinnumerosi, ja voit myöhemmin antaa muiden löytää sinut puhelinnumerosi perusteella. + Aseta sähköpostisi tunnuksen palautusta varten. Myöhemmin voit asettaa sähköpostisi tai puhelinnumerosi löydettäviksi, jotta sinut voi löytää näillä tiedoilla. + Aseta sähköpostisi tunnuksen palautusta varten. Myöhemmin voit asettaa sähköpostisi tai puhelinnumerosi löydettäviksi, jotta sinut voi löytää näillä tiedoilla. + Vahvista salasanasi + Et voi tehdä tätä mobiili-Riotista + Tunnistautuminen vaaditaan + + + Integraatiot + Käytä integraatioiden lähdettä bottien, siltojen ja tarrapakettien hallintaan. +\nIntegraatioiden lähteet vastaanottavat asetusdataa ja voivat muokata sovelmia, lähettää kutsuja huoneeseen ja muokata oikeustasoja puolestasi. + Käyttäjien etsintä + Muokkaa etsinnän asetuksia. + Salli integraatiot + Integraatioiden lähde + + Sovelma + Lataa sovelma + Sovelman lisäsi: + Sovelman käyttö saattaa asettaa keksejä ja jakaa tietoa kohteen %s kanssa: + Sovelman käyttö saattaa jakaa tietoa kohteen %s kanssa: + Sovelman lataus epäonnistui. +\n%s + Lataa sovelma uudelleen + Avaa selaimessa + Kumoa minun pääsy + + Näyttönimesi + Profiilikuvasi osoite + Käyttäjätunnisteesi + Teemasi + Sovelman tunniste + Huoneen tunniste + + + Tämä sovelma haluaa käyttää seuraavia resursseja: + Salli + Estä kaikki + Käytä kameraa + Käytä mikrofonia + Lue DRM-suojattua mediaa + + Ei integraatioiden lähteitä asetettuna. + Huomiotta + + Olet kirjautunut ulos epäkelpojen tai vanhentuneiden pääsytietojen takia. + + Varmenna vertaamalla lyhyttä tekstijonoa. + Varmenna tämä laite merkkaamalla se luotetuksi. Kumppaneiden laitteisiin luottaminen antaa sinulle ylimääräistä mielenrauhaa, kun käytät osapuolten välistä salausta. + Tämän laitteen varmentaminen merkkaa sen luotetuksi, ja samoin sinun laitteesi merkataan luotetuksi kumppanisi näkökulmasta. + + Varmenna tämä laite varmistamalla, että seuraava emoji ilmestyy kumppanisi näytölle + Varmenna tämä laite varmistamalla, että seuraavat numerot ilmestyvät kumppanisi näytölle + + Turvalliset viestit tämän käyttäjän kanssa ovat salattuja päästä päähän, eivätkä kolmannet osapuolet voi lukea niitä. + Mitään ei tule näytölle\? Kaikki asiakasohjelmat eivät vielä tue interaktiivista varmennusta. Käytä vanhaa varmennustapaa. + Käytä vanhaa varmennustapaa. + + Laitteet eivät pysty sopimaan avaimista, tiivisteestä, MAC:sta tai SAS-metodista + Tiivisteet eivät täsmänneet + Vanhoissa Riotin versioissa oli tietoturvaongelma, joka saattoi antaa identiteettipalvelimelle(%1$s) pääsyn tunnukseesi. Jos luotat kohteeseen %2$s, voit jättää tämän huomiotta. Muussa tapauksessa, kirjaudu ulos ja kirjaudu uudelleen Riotiin. +\n +\nLue lisää: +\nhttps://medium.com/@RiotChat/36b4792ea0d6 + + Muuta + Viimeisin ominaisuuslista on aina %1$s. Jos löydät virheitä, lähetäthän virheraportin painikkeella, joka löytyy ylhäällä ja vasemmalla olevasta kotivalikosta, niin korjaamme vian niin nopeasti kuin pystymme. + Jos löytät virheitä, lähetäthän virheraportin ylhäältä ja vasemmalta löytyvästä kotivalikosta, niin korjaamme ongelman niin nopeasti kuin vain pystymme. + + Tuo osapuolten välisen salauksen avaimet tiedostosta ”%1$s”. + + Edistynyt + Ei rekisteröityjä viesti-ilmoitusten yhdyskäytäviä + + app_id: + push_key: + app_display_name: + device_name: + Formaatti: + + Rekisteröi tunniste + + RiotX on uusi Matrix-protokollaa (Matrix.org) käyttävä ohjelma: avointa ja hajautettua keskustelua tukeva turvallinen verkko. RiotX on täysin uusittu versio Riot Android -ohjelmasta, joka perustuu Matrix Android SDK:n uudelleenkirjoitukseen. +\n +\nHuomaa: tämä on betaversio. RiotX on vielä kehitystyössä, ja siinä on rajoitteita ja (toivottavasti ei kuitenkaan monta) bugeja. Kaikki palaute on tervetullutta! +\n +\nRiotX tukee: • Kirjaudu olemassaolevalle tunnukselle • Luo huoneita ja liity julkisiin huoneisiin • Hyväksy ja hylkää kutsuja • Listaa käyttäjän huoneet • Katso huoneen tietoja • Lähetä tekstiviestejä • Lähetä liitteitä • Lue ja kirjoita viestejä salatuissa huoneissa • Salaus: osapuolten välisen salauksen avaimien varmuuskopiointi, edistynyt laitteiden varmennus, avainten jakopyynnöt ja vastaus • Viesti-ilmoitukset • Vaalea, tumma ja musta teema +\n +\nKaikkia Riotin ominaisuuksia ei ole vielä toteutettu RiotX:ssä. Tärkeimmät puuttuvat (ja pian saapuvat!) ominaisuudet: • Tunnusten luonti • Huoneen asetukset (listaa huoneen jäsenet jne.) • Puhelut • Sovelmat • … + + Salataan pikkukuvaa… + Lähetetään pikkukuvaa (%1$s / %2$s) + Nimi tai tunniste (#example:matrix.org) + + Lisää Matrix-tunnisteella + Tuloksia ei löytynyt. Käytä ”Lisää Matrix-tunnisteella” etsiäksesi palvelimelta. + Suodata käyttäjätunnuksella tai tunnisteella… + + Etsittävät sähköpostiosoitteet + Vaihtoehdot ilmestyvät, kunhan olet lisännyt sähköpostiosoitteen. + Vaihtoehdot ilmestyvät, kunhan olet lisännyt puhelinnumeron. + Etsittävät puhelinnumerot + Runsassanaiset lokit auttavat antamalla enemmän tietoa kehittäjille, kun lähetät virheilmoituksen. Vaikka runsaammat lokit ovat käytössä, sovellus ei lähetä viestien sisältöjä tai mitään muuta yksityistä tietoa. + + + Avaa navigaatiovalikko + Avaa huoneen luontivalikko + Sulje huoneen luontivalikko… + Sulje avainten varmuuskopion mainos + Tiedosto ”%s$s” (%2$s) on liian iso lähetettäväksi. Raja on %3$s. + + Yhteystieto + Ääni + Jakotiedon käsittely epäonnistui + + Muokattu ilmianto + Ilmianna tämä sisältö + Sisällön ilmiannon syy + ILMIANNA + ESTÄ KÄYTTÄJÄ + + Sisältö ilmiannettu + Tämä sisältö on ilmiannettu. +\n +\nJos et halua nähdä enempää sisältöä tältä käyttäjältä, voit estää hänet piilottaaksesi hänen viestit + Ilmiannettu roskapostina + Tämä sisältö on ilmiannettu roskapostina. +\n +\nJos et halua nähdä enempää sisältöä tältä käyttäjältä, voit estää hänet piilottaaksesi hänen viestit + Ilmiannettu epäsopivana + Tämä sisältö on ilmiannettu epäsopivana. +\n +\nJos et halua nähdä enempää sisältöä tältä käyttäjältä, voit estää hänet piilottaaksesi hänen viestit + + Riot tarvitsee oikeuden tallentaakseen osapuolten välisen salauksen avaimesi talteen. +\n +\nSalli pääsy tiedostoihin seuraavassa ponnahdusikkunassa, jotta voit viedä avaimesi käsin. + diff --git a/vector/src/main/res/values-fr/strings.xml b/vector/src/main/res/values-fr/strings.xml index 6057627163..cc81f595d2 100644 --- a/vector/src/main/res/values-fr/strings.xml +++ b/vector/src/main/res/values-fr/strings.xml @@ -1709,7 +1709,7 @@ Si vous n’avez pas configuré de nouvelle méthode de récupération, un attaq Réessayez quand vous aurez accepté les termes et conditions de votre serveur d’accueil. - On dirait que le serveur mette trop de temps à répondre. Ça peut être dû à une mauvaise connexion ou à une erreur avec nos serveurs. Réessayez plus tard. + On dirait que le serveur met trop de temps à répondre. Ça peut être dû à une mauvaise connexion ou à une erreur avec le serveur. Réessayez plus tard. Envoyer une pièce jointe @@ -1770,4 +1770,39 @@ Si vous n’avez pas configuré de nouvelle méthode de récupération, un attaq Il n’y a aucune connexion au réseau pour le moment + Confirmez votre mot de passe + Vous ne pouvez pas faire cela depuis Riot mobile + Une authentification est nécessaire + + + Intégrations + Utilisez un gestionnaire d’intégrations pour gérer les bots, les passerelles, les widgets et les packs de stickers. +\nLes gestionnaires d’intégrations reçoivent des données de configuration et peuvent modifier des widgets, envoyer des invitations de salon et définir des rangs à votre place. + Autoriser les intégrations + Widget + Charger un widget + Ce widget a été ajouté par : + Son utilisation peut entraîner l’utilisation de cookies et le partage de données avec %s : + Son utilisation peut entraîner le partage de données avec %s : + Échec de chargement du widget. +\n%s + Recharger le widget + Ouvrir dans le navigateur + Révoquer l’accès pour moi + + Votre nom affiché + L’URL de votre avatar + Votre identifiant utilisateur + Votre thème + L’identifiant du widget + L’identifiant du salon + + + Ce widget veut utiliser les ressources suivantes : + Autoriser + Tout bloquer + Utiliser la caméra + Utiliser le micro + Lire des médias protégés par des DRM + diff --git a/vector/src/main/res/values-hu/strings.xml b/vector/src/main/res/values-hu/strings.xml index caca6bd7c8..1f518fd590 100644 --- a/vector/src/main/res/values-hu/strings.xml +++ b/vector/src/main/res/values-hu/strings.xml @@ -1769,4 +1769,40 @@ Ha nem te állítottad be a visszaállítási metódust, akkor egy támadó pró Jelenleg nincs hálózati kapcsolat + Jelszó megerősítés + Riot mobilról ezt nem teheted meg + Azonosítás szükséges + + + Integrációk + Botok, hidak, kisalkalmazások és matrica csomagok kezeléséhez használj Integrációs Menedzsert. +\n +\nIntegrációs Menedzser megkapja a konfigurációt, módosíthat kisalkalmazásokat, szobához meghívót küldhet és a hozzáférési szintet beállíthatja helyetted. + Integrációk engedélyezése + Kisalkalmazás + Kisalkalmazás betöltése + Ezt a kisalkalmazást hozzáadta: + A használatához lehet, hogy sütiket kell használni és adat lesz megosztva ezzel: %s: + A használatához lehet, hogy adat lesz megosztva ezzel: %s: + Kisalkalmazás betöltése sikertelen: +\n%s + Kisalkalmazás újratöltése + Megnyitás böngészőben + Hozzáférés megvonása magamtól + + Megjelenítési neved + Profilképed URL-je + Felhasználói azonosítód + Témád + Kisalkalmazás azon. + Szoba azonosító + + + Ez a kisalkalmazás az alábbi erőforrásokat szeretné használni: + Engedélyez + Mind tiltása + Kamera használata + Mikrofon használata + DRM-mel védett média olvasása + diff --git a/vector/src/main/res/values-id/strings.xml b/vector/src/main/res/values-id/strings.xml index 56f6d4deb2..692fa7ad13 100644 --- a/vector/src/main/res/values-id/strings.xml +++ b/vector/src/main/res/values-id/strings.xml @@ -1,6 +1,6 @@ - in + id ID Pesan diff --git a/vector/src/main/res/values-it/strings.xml b/vector/src/main/res/values-it/strings.xml index d46eaa987b..ddc19fe125 100644 --- a/vector/src/main/res/values-it/strings.xml +++ b/vector/src/main/res/values-it/strings.xml @@ -10,39 +10,39 @@ Messaggi Stanza Impostazioni - Dettagli membri + Dettagli sui membri Cronologia OK Annulla Salva - Lascia + Esci Invia Copia - Rinvia + Rispedisci Rimuovi - Cita + Citazione Condividi Ultimi Inoltra - Collegamento permanente - Vedi sorgente - Vedi sorgente decriptato + Permalink + Vedi il codice sorgente + Vedi il codice sorgente decifrato Elimina Rinomina - Segnala contenuto - Chiamata attiva - Chiamata di conferenza in corso. + Segnala questo contenuto + Chiamata in corso + Avvio conferenza. \nUnisciti come %1$s o %2$s - Voce + Audio Video Impossibile avviare la chiamata, riprova più tardi - A causa di permessi insufficienti, potrebbero mancare alcune funzioni… - Necessiti del permesso per invitare ad iniziare una conferenza in questa stanza + Poichè i tuoi permessi non sono sufficienti, alcune funzioni potrebbero non esser disponibili… + Non hai permessi sufficienti per avviare una conferenza in questa stanza Impossibile avviare la chiamata - Informazioni dispositivo - Le chiamate in modalità conferenza non sono supportate nelle stanze criptate + Informazioni sul dispositivo + Le stanze criptate non supportano le conferenze Invia comunque o Invita @@ -50,7 +50,7 @@ Disconnetti - Chiamata voce + Chiamata audio Chiamata video Ricerca globale Segna tutti come letti @@ -68,14 +68,14 @@ Home Preferiti - Persone + Chat dirette Stanze - Filtra i nomi delle stanze - Filtra i preferiti - Filtra le persone - Filtra i nomi delle stanze + Cerca + Cerca tra i preferiti + Cerca tra le chat dirette + Cerca tra le stanze Inviti @@ -83,11 +83,11 @@ Conversazioni - Libro degli indirizzi locale + Rubrica locale Elenco utenti - Solo contatti Matrix + Mostra solo i contatti Matrix Nessuna conversazione - Riot non ha il permesso di accedere ai tuoi contatti locali + Riot non ha avuto l\'autorizzazione ad accedere alla tua Rubrica locale Nessun risultato @@ -100,18 +100,18 @@ %d utenti - Invia registri - Invia registri di crash - Invia istantanea + Invia i registri + Invia i registri di crash + Invia schermata Segnala errore - Per favore descrivi l\'errore. Cosa hai fatto? Cosa ti aspettavi dovesse accadere? Cosa è effettivamente successo? + Per favore descrivi l\'errore. Cosa stavi facendo\? Cosa ti aspettavi dovesse accadere\? Cosa è effettivamente successo\? Descrivi qui il problema - Al fine di diagnosticare i problemi, i registri Riot di questo dispositivo saranno inviati con il rapporto dell\'errore. Questo rapporto, che include i registri e l\'istantanea grafica, non sarà pubblicamente visibile. Se preferisci inviare solo il testo soprastante, deseleziona: - Sembra che tu stia scuotendo il dispositivo con frustrazione. Desideri aprire la schermata di segnalazione errore? - L\'applicazione è andata in crash l\'ultima volta. Desideri aprire la schermata di segnalazione del crash? + Per permettere una diagnosi del problema, oltre alla segnalazione errore verranno inviati anche i registri di Riot. Rapporto, registri e schermata non saranno resi pubblici. Tuttavia, se preferisci inviare solamente la segnalazione, deseleziona: + Sembra tu stia scuotendo il dispositivo con rabbia. Vuoi segnalare un errore\? + L\'ultima volta l\'applicazione è andata in crash. Vuoi inviare una segnalazione\? - La segnalazione dell\'errore è stata spedita con successo - Fallito l\'invio della segnalazione di errore (%s) + La segnalazione errore è stata spedita + L\'invio della segnalazione errore è fallito (%s) Avanzamento (%s%%) Invia file in @@ -122,16 +122,16 @@ Crea account Accedi Disconnetti - URL server home - URL server identità + URL dell\'Home Server + URL dell\'Identity Server Cerca - Inizia nuova chat - Avvia chiamata voce + Avvia una nuova chat diretta + Avvia chiamata audio Avvia chiamata video Invia file - Cattura foto o video + Fai una foto o un video Accedi @@ -152,35 +152,33 @@ Conferma la nuova password Nome utente e/o password non corretti Il nome utente può contenere solo lettere, numeri, punti, trattini e linee basse - Password troppo breve (min 6) - Password mancante - Non sembra essere un indirizzo email valido - Non sembra essere un numero di telefono valido - L\'indirizzo email è già stato definito. - Indirizzo email mancante - Numero di telefono mancante - Indirizzo email o numero di telefono mancante + Password troppo corta (min 6) + Manca la password + Questo indirizzo email non sembra corretto + Questo numero di telefono non sembra corretto + L\'indirizzo email è già stato impostato. + Manca l\'indirizzo email + Manca il numero di telefono + Manca l\'indirizzo email o il numero di telefono Token non valido Le password non corrispondono - Password dimenticata? + Hai dimenticato la password\? Usa opzioni server personalizzate (avanzate) Per favore controlla la tua email per proseguire la registrazione - La registrazione con email e numero di telefono in una volta sola non è ancora supportata (relative API in sviluppo). Sarà utilizzato solo il numero di telefono. - -Puoi aggiungere la tua email al tuo profilo dalle impostazioni. - Questo server home vorrebbe assicurarsi che tu non sia un robot - Nome utente in uso - Server home: - Server identità: + La registrazione con email e numero di telefono in una volta sola non è ancora supportata. Sarà utilizzato solo il numero di telefono. Potrai aggiungere l\'indirizzo email al tuo profilo dalle impostazioni. + Questo Home Server vorrebbe assicurarsi che tu non sia un robot + Nome utente già in uso + Home Server: + Identity Server: Ho verificato il mio indirizzo email - Per ripristinare la password, inserisci l\'indirizzo email associato al tuo account: - L\'indirizzo email associato al tuo account deve essere inserito. - Una nuova password deve essere inserita. - Un\'email è stata inviata a %s. Appena avrai seguito il link lì contenuto, clicca qui sotto. - Verifica indirizzo email fallita: assicurati di aver cliccato sul link contenuto nell\'email - La tua password è stata ripristinata. - -Sei stato disconnesso da tutti i dispositivi e non riceverai più alcuna notifica. Per riabilitare le notifiche, riconnettiti su ciascun dispositivo. + Per reimpostare la password, inserisci l\'indirizzo email associato al tuo account: + Va inserito l\'indirizzo email associato al tuo account. + Va inserita una nuova password. + E\' stata inviata una mail a %s. Dopo che avrai seguito il link che contiene, clicca qui sotto. + La verifica del tuo indirizzo email è fallita: assicurati di aver cliccato sul link contenuto nella mail + La tua password è stata reimpostata. +\n +\nSei stato disconnesso da tutti i dispositivi e non riceverai più alcuna notifica. Per ripristinare le notifiche, riconnettiti su ciascun dispositivo. L\'URL deve iniziare con http[s]:// @@ -191,18 +189,18 @@ Sei stato disconnesso da tutti i dispositivi e non riceverai più alcuna notific Impossibile registrarsi: difetto proprietà dell\'email Inserisci un URL valido - Nome utente/password non validi - Il token di accesso specificato non è stato riconosciuto + Nome utente/password non corretto + Il Token di accesso specificato non è stato riconosciuto JSON malformato Non conteneva un JSON valido Sono state inviate troppe richieste Questo nome utente è già in uso - Il link nell\'email non è ancora stato cliccato + Il link nella mail non è ancora stato cliccato - È necessario eseguire nuovamente l\'accesso per generare le chiavi di crittografia da-utente-a-utente per questo dispositivo ed inviare la chiave pubblica al server home. -Ciò può capitare solo una volta. -Ci scusiamo per l\'inconveniente. + È necessario eseguire nuovamente l\'accesso per generare le chiavi crittografiche per questo dispositivo ed inviare la chiave pubblica al\'Home Server. +\nQuesto inconveniente non capiterà più. +\nScusa per il disguido. Elenco ricevute lette @@ -231,46 +229,46 @@ Ci scusiamo per l\'inconveniente. Argomento stanza - Chiamata connessa + Chiamata in corso Chiamata in connessione… Chiamata terminata - Sto chiamando… + Chiamata in corso… Chiamata in arrivo - Videochiamata in arrivo - Chiamata voce in arrivo + Chiamata video in arrivo + Chiamata audio in arrivo Chiamata in corso… Ricezione fallita da parte del destinatario. - Fallita connessione al supporto multimediale + La connessione al supporto multimediale è fallita Impossibile avviare la fotocamera chiamata risposta altrove - Cattura foto o video + Fai una foto o un video Impossibile registrare video Informazione - Riot necessita del permesso di accedere alla tua galleria di foto e video per inviare e salvare allegati. - -Per favore consenti l\'accesso nella prossima finestra così da poter inviare file dal tuo telefono. - Riot necessita del permesso di accedere alla fotocamera per scattare foto e fare videochiamate. - - -Per favore dai l\'autorizzazione nella prossima finestra al fine di effettuare la chiamata. - Riot necessita del permesso di accedere al microfono per eseguire chiamate audio. - - -Per favore dai l\'autorizzazione nella prossima finestra al fine di effettuare la chiamata. - Riot necessita del permesso di accedere alla fotocamera ed al microfono per eseguire videochiamate. - -Per favore consenti l\'accesso nella prossima finestra per potere effettuare la chiamata. - Riot può accedere alla tua rubrica per trovare altri utenti Matrix basandosi sulla loro email e sul numero di telefono. Se sei d\'accordo sulla condivisione della tua rubrica a questo scopo, consenti l\'accesso nella prossima finestra. - Riot può accedere alla tua rubrica per trovare altri utenti Matrix basandosi sulla loro email e sul numero di telefono. + Riot deve essere autorizzato ad accedere alla tua Galleria di foto e video per poter inviare e salvare allegati. \n -\nSei d\'accordo sulla condivisione della tua rubrica a questo scopo\? +\nNel prossimo pop-up concedi l\'autorizzazione per poteri inviare file dal tuo dispositivo. + Riot deve essere autorizzato ad accedere alla tua fotocamera per poter fare foto e video. + " +\n +\nNel prossimo pop-up concedi l\'autorizzazione per poter fare la chiamata." + Riot deve essere autorizzato ad accedere al microfono e poter così fare chiamate audio. + " +\n +\nNel prossimo pop-up concedi l\'autorizzazione per poter fare la chiamata." + Riot deve essere autorizzato ad accedere a fotocamera e microfono per poter fare chiamate video. +\n +\nNel prossimo pop-up concedi le autorizzazioni per poter fare la chiamata. + Riot può usare tua Rubrica locale per trovare altri utenti Matrix grazie alle loro email e numeri di telefono. Se ti sta bene comunicare i dati di tutti i tuoi contatti all\'Identity Server, puoi concedere l\'autorizzazione nel prossimo pop-up. + Riot può usare tua Rubrica locale per trovare altri utenti Matrix grazie alle loro email e numeri di telefono. +\n +\nTi sta bene comunicare i dati di tutti i tuoi contatti per questo scopo\? - Spiacente. Azione non eseguita a causa di mancate autorizzazioni + Purtroppo l\'azione non è stata eseguita poichè mancano i permessi Salvato @@ -280,7 +278,7 @@ Per favore consenti l\'accesso nella prossima finestra per potere effettuare la Continua - Rimuoviti + Rimuovi Unisciti Anteprima Rifiuta @@ -289,19 +287,20 @@ Per favore consenti l\'accesso nella prossima finestra per potere effettuare la Vai al primo messaggio non letto. - Sei stato invitato ad unirti in questa stanza da %s - Questo invito è stato spedito da %s, che non è associato a questo account. È possibile che tu voglia connetterti con un altro account, o aggiungere l\'email al tuo account. + Sei stato invitato ad entrare in questa stanza da %s + Questo invito è stato spedito a %s, che non è associato a questo account. +\nPuoi aggiungere questa email al tuo account o provare ad accedere con un account differente. Stai provando ad accedere a %s. Desideri entrare per partecipare alla discussione? una stanza - Questa è l\'anteprima della stanza. Le interazioni con la stanza sono state disabilitate. + Questa è l\'anteprima della stanza. Le interazioni sono disabilitate. Nuova chat - Aggiungi membro - 1 membro + Aggiungi utente + 1 utente - Lascia stanza + Esci dalla stanza Sei sicuro di voler uscire dalla stanza? Sei sicuro di voler rimuovere %s da questa chat? Crea @@ -316,32 +315,32 @@ Per favore consenti l\'accesso nella prossima finestra per potere effettuare la DISPOSITIVI Invita - Lascia questa stanza - Rimuovi da questa stanza - Bandisci - Togli il bando + Esci da questa stanza + Butta fuori da questa stanza + Bannalo + Togli il ban Ripristina ad utente normale - Rendi moderatore - Rendi amministratore + Nomina moderatore + Nomina amministratore Nascondi tutti i messaggi di questo utente Mostra tutti i messaggi di questo utente ID utente, nome o email - Citazione - Mostra elenco dispositivi - Non potrai annullare questa modifica in quanto promuoverai l\'utente al tuo stesso livello di potere. -Sicuro di procedere? + Cita + Mostra l\'elenco dei dispositivi + La nomina non potrà essere annullata perché darai a questo utente i tuoi stessi poteri. +\nSicuro di voler procedere\? - "Sicuro di voler invitare %s in questa chat?" + Sicuro di voler invitare %s\? - Invita tramite ID + Invita tramite ID utente CONTATTI LOCALI (%d) ELENCO UTENTI (%s) Solo utenti Matrix - Invita utente tramite ID - Per favore inserisci uno o più indirizzi email o ID Matrix - Email o ID Matrix + Invita tramite ID utente + Per favore inserisci uno o più indirizzi email o ID utente + Email o ID utente Cerca @@ -352,11 +351,11 @@ Sicuro di procedere? Messaggio non criptato… La connessione al server è stata persa. Messaggi non inviati. %1$s o %2$s ora? - Messaggi non inviati a causa di dispositivi sconosciuti qui presenti. %1$s o %2$s ora? + Messaggi non inviati a causa della presenza di dispositivi sconosciuti. %1$s o %2$s ora\? Rispedisci tutto Annulla tutto - Rinvia messaggi non spediti - Elimina messaggi non spediti + Rispedisci messaggi non inviati + Elimina i messaggi non inviati File non trovato Non hai il permesso di pubblicare in questa stanza @@ -367,40 +366,40 @@ Sicuro di procedere? Ignora Impronta digitale (%s): Impossibile verificare l\'identità del server remoto. - Ciò potrebbe significare che qualcuno sta intercettando il tuo traffico, oppure il tuo telefono non riconosce come affidabile il certificato fornito dal server remoto. - Se l\'amministratore del server ha dichiarato che questa anomalia è prevista, assicurati che l\'impronta digitale corrisponda a quella fornita da loro. - Il certificato è cambiato rispetto a quello ritenuto affidabile dal tuo telefono. Questo è ESTREMAMENTE INSOLITO. Si raccomanda di NON ACCETTARE questo nuovo certificato. - Il certificato è cambiato da quello precedente ritenuto affidabile ad uno non affidabile. Il server potrebbe aver rinnovato il proprio certificato. Contatta l\'amministratore del server per chiedere l\'impronta digitale prevista. - Accetta il certificato solo se l\'amministratore ha pubblicato un\'impronta digitale che corrisponda a quella qua sopra. + Ciò potrebbe voler dire che qualcuno sta intercettando il tuo traffico dati, oppure che il tuo telefono non riconosce come affidabile il certificato fornito dal server remoto. + Se l\'amministratore del server ha dichiarato che questa anomalia è prevista, assicurati che l\'impronta digitale corrisponda a quella fornita dal server stesso.. + Il certificato è diverso da quello precedentemente contrassegnato sul tuo telefono come \"affidabile\". Questa cosa è MOLTO INSOLITA. Si raccomanda di NON ACCETTARE questo nuovo certificato. + Il certificato del server è cambiato: quello precedente era stato contrassegnato come affidabile ma quello attuale no. Può darsi che il certificato precedente sia scaduto e sia stato semplicemente sostituito con uno nuovo. Contatta l\'amministratore del server per verificare l\'impronta digitale in uso. + Contrassegna il certificato come affidabile solo se l\'mpronta digitale comunicata dall\'amministratore del server corrisponde a quella qua sopra. Dettagli stanza - Persone + Utenti File Impostazioni - ID malformato. Dovrebbe essere un indirizzo email o un ID Matrix come \'@localpart:domain\' + ID malformato. Dovrebbe essere un indirizzo email o un ID utente come \'@localpart:domain\' INVITATI - AGGIUNTI + MEMBRI - Motivo per segnalare questo contenuto - Desideri nascondere tutti i messaggi di questo utente? - -Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tempo. - Annulla caricamento - Annulla scaricamento + Motivo per cui segnali questo contenuto + Desideri nascondere tutti i messaggi di questo utente\? +\n +\nTieni presente che questa azione riavvierà l\'app e ciò potrebbe richiedere molto tempo. + Annulla l\'upload + Annulla il download Cerca - Filtra membri della stanza + Cerca tra i membri della stanza Nessun risultato STANZE MESSAGGI - PERSONE + UTENTI FILE - ENTRARE + ENTRA ELENCO PREFERITI STANZE @@ -410,17 +409,17 @@ Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tem Crea stanza Entra nella stanza Entra in una stanza - Digita ID o soprannome (alias) + Digita l\'ID stanza o il suo nome - Esplora elenco + Esplora l\'elenco Ricerca negli elenchi… Preferito Bassa priorità Chat diretta - Lascia conversazione + Esci dalla conversazione Dimentica @@ -434,30 +433,30 @@ Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tem - Immagine profilo + Immagine del profilo Nome visualizzato Email Aggiungi indirizzo email Telefono Aggiungi numero di telefono - Mostra le informazioni dell\'app nelle impostazioni di sistema. - Informazioni applicazione + Mostra le informazioni dell\'App nelle Impostazioni di sistema. + Informazioni sull\'App - Abilita notifiche per questo account - Abilita notifiche per questo dispositivo + Abilita le notifiche per questo account + Abilita le notifiche per questo dispositivo Accendi lo schermo per 3 secondi alla notifica - Msg nelle chat uno-a-uno - Msg nelle chat di gruppo - Quando vengo invitato in una stanza + Messaggi nelle chat dirette + Messaggi nelle chat di gruppo + Invito ad entrare in una stanza Invito ad una chiamata Messaggi inviati da bot Esegui all\'avvio - Sincronizzazione in sottofondo - Abilita sync in sottofondo - Attesa per una richiesta di sync - Attesa per ogni sincronizzazione + Sincronizzazione in background + Abilita la sincronizzazione in background + La richiesta di sincronizzazione sta impiegando troppo tempo + Ritardo tra ogni sincronizzazione secondo secondi @@ -467,9 +466,9 @@ Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tem Avvisi di terze parti Copyright Politica sulla privacy - Elimina cache - Elimina file multimediali temporanei - Conserva file multimediali + Svuota la cache + Svuota la cache dei file multimediali + Conserva i file multimediali Impostazioni utente Notifiche @@ -479,63 +478,63 @@ Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tem Crittografia Target delle notifiche Contatti locali - Autorizzazione contatti - Nazione rubrica telefonica + Consenti l\'accesso alla Rubrica locale + Prefisso telefonico internazionale Schermata iniziale Segna le stanze con notifiche perse Segna le stanze con messaggi non letti Dispositivi Mostra data e ora di tutti i messaggi - Modalità risparmio banda + Modalità risparmio dati - Informazioni dispositivo + Informazioni sul dispositivo ID Nome pubblico - Aggiorna nome pubblico - Ultima visualizzazione + Aggiorna il nome pubblico + Ultimo accesso %1$s @ %2$s Questa operazione richiede un\'autenticazione aggiuntiva.\nPer proseguire, inserisci la tua password. Autenticazione Password: Invia - Connesso come - Server home - Server identità + Autenticato come + Home Server + Identity Server Interfaccia utente Lingua Scegli una lingua In attesa di verifica - Controlla la tua email e clicca sul link lì contenuto. Fatto questo, clicca su Continua. - Impossibile verificare l\'indirizzo email. Controlla la tua email e clicca sul link lì contenuto. Fatto questo, clicca su continua. + Controlla la tua email e clicca sul link che ti è stato spedito. Fatto questo, clicca su Continua. + Impossibile verificare l\'indirizzo email. Controlla la tua email e clicca sul link che ti è stato spedito. Fatto questo, clicca su Continua. Questo indirizzo email è già in uso. Questo indirizzo email non è stato trovato. Questo numero di telefono è già in uso. - Cambia password + Cambia la password Password attuale Nuova password - Conferma nuova password - Fallito l\'aggiornamento password + Conferma la nuova password + Fallito l\'aggiornamento della password La tua password è stata aggiornata - Mostrare tutti i messaggi di %s? - -Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tempo. + Mostrare tutti i messaggi di %s\? +\n +\nTieni presente che questa azione riavvierà l\'app e ciò potrebbe richiedere molto tempo. Sicuro di voler rimuovere questo target di notifica? Sicuro di voler rimuovere %1$s %2$s? - Scegli una nazione + Scegli un paese - Nazione - Per favore scegli una nazione + Paese + Per favore scegli un paese Numero di telefono - Numero di telefono non valido per la nazione selezionata + Numero di telefono non valido per il paese selezionato Verifica numero di telefono - "Un SMS è stato spedito con il codice di attivazione. Per favore inserisci il codice qui sotto." + E\' stato spedito un SMS con il codice di attivazione. Per favore inserisci il codice qui sotto. Inserisci un codice di attivazione Errore durante la convalida del numero di telefono Codice @@ -549,23 +548,23 @@ Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tem - Immagine stanza - Nome stanza + Icona della stanza + Nome della stanza Argomento - Etichetta stanza - Etichettata come: + Etichetta + Etichetta come: Preferito Bassa priorità - Niente + Nessuna etichetta Accesso e visibilità - Mostra questa stanza nell\'elenco delle stanze + Mostra questa stanza nell\'elenco delle stanze pubbliche Accesso alla stanza - Leggibilità cronologia della stanza - Chi può leggere la cronologia? + Accesso alla Timeline + Chi può leggere la Timeline\? Chi può entrare in questa stanza? @@ -575,37 +574,37 @@ Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tem Solo i membri (dal momento in cui entrano nella stanza) - Per indirizzare ad una stanza tramite link, essa deve avere un indirizzo. + Una stanza deve avere un indirizzo per poter essere linkata. Solo le persone che sono state invitate Chiunque conosca il link della stanza, eccetto gli ospiti Chiunque conosca il link della stanza, compresi gli ospiti - Utenti banditi + Utenti bannati Avanzate ID interno della stanza Indirizzi Laboratorio - Queste sono caratteristiche sperimentali che possono fallire in modo inatteso. Usare con cautela. + Queste sono caratteristiche sperimentali che potrebbero dare risultati inattesi. Usare con cautela. Crittografia da-utente-a-utente La crittografia da-utente-a-utente è attiva Devi disconnetterti per abilitare la crittografia. Cripta solo per i dispositivi verificati - Non inviare mai da questa stanza messaggi criptati a dispositivi non verificati. + Non inviare mai da questa stanza dei messaggi criptati verso dispositivi che non siano stati verificati da questo stesso dispositivo. Questa stanza non ha indirizzi locali - Nuovo indirizzo (es. #foo:matrix.org) + Nuovo indirizzo stanza (es. #foo:matrix.org) - Formato soprannome non valido - \'%s\' non è un formato valido per un soprannome - Non avrai un indirizzo principale specificato per questa stanza. + Il formato del nome della stanza non è corretto + \'%s\' non è un formato valido per un nome di stanza + Non avrai un indirizzo principale specifico per questa stanza. Avvisi per l\'indirizzo principale Imposta come indirizzo principale - Non più come indirizzo principale + Non usare più come indirizzo principale Copia ID stanza Copia indirizzo stanza @@ -618,20 +617,20 @@ Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tem Tema - %s stava cercando di caricare un punto specifico della cronologia di questa stanza, ma non l\'ha trovato. + %s stava cercando di caricare un punto specifico tra i messaggi passati di questa stanza, ma non l\'ha trovato. - Informazioni crittografia da-utente-a-utente + Informazioni sulla crittografia E2E - Informazioni evento + Informazioni sull\'evento ID utente Chiave identità Curve25519 Richiesta chiave per l\'impronta digitale Ed25519 Algoritmo ID sessione - Errore decriptazione + Errore di decriptazione - Informazioni dispositivo mittente + Informazioni sul dispositivo mittente Nome pubblico Nome pubblico ID @@ -639,56 +638,62 @@ Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tem Verifica Impronta digitale Ed25519 - Esporta chiavi da-utente-a-utente delle stanze + Esporta le chiavi di crittografia delle stanze Esporta le chiavi delle stanze Esporta le chiavi in un file locale Esporta - Inserisci frase d\'accesso (passphrase) - Conferma frase d\'accesso (passphrase) - Le chiavi da-utente-a-utente della stanza sono state salvate su \'%s\'. + Inserisci password + Conferma password + Le chiavi di crittografia della stanza sono state salvate su \'%s\'. +\n +\nAttenzione: se si disinstalla quest\'applicazione il file, viene eliminato. -Attenzione: questo file può essere eliminato se l\'applicazione viene disinstallata. - - Importa chiavi da-utente-a-utente delle stanze - Importa chiavi delle stanze + Importa le chiavi di crittografia della stanza + Importa le chiavi della stanza Importa le chiavi da un file locale Importa Cripta solo per i dispositivi verificati - Non inviare mai da questo dispositivo messaggi criptati a dispositivi non verificati. + Non inviare mai da questo dispositivo messaggi criptati verso dispositivi non verificati. NON verificato Verificato - Nella lista nera + Metti in lista nera dispositivo sconosciuto niente Conferma - Sconferma - Nella lista nera - Non nella lista nera + Rimuovi la conferma + Lista nera + Togli dalla lista nera - Verifica dispositivo - Per verificare che quel dispositivo è affidabile, contatta il suo proprietario utilizzando altri canali di comunicazione (ad esempio, per persona o per telefono) e chiedigli se nelle Impostazioni, sezione Crittografia, la voce Chiave dispositivo corrisponde al codice riportato qui sotto: - Se ciò corrisponde, premi il pulsante di verifica qui sotto. In caso contrario, qualcun altro sta intercettando questo dispositivo e probabilmente dovresti inserirlo nella lista nera. In futuro il processo di verifica sarà più sofisticato. - Ho verificato che le chiavi corrispondano + Verifica il dispositivo + Per verificare se quel dispositivo è affidabile, contatta il suo proprietario utilizzando altri canali di comunicazione (ad esempio, per persona o per telefono) e chiedigli se nelle Impostazioni, sezione Crittografia, la chiave del dispositivo corrisponde a quella riportata qui sotto: + Se corrisponde, premi il pulsante di verifica qui sotto. In caso contrario, qualcun altro sta intercettando questo dispositivo e probabilmente dovresti metterlo in lista nera. In futuro il processo di verifica sarà più sofisticato. + Ho verificato che le chiavi corrispondono - Riot supporta ora la crittografia da-utente-a-utente, ma devi riconnetterti per abilitarla.\n\nPuoi farlo ora o più tardi dalle impostazioni dell\'applicazione. + Riot supporta ora la crittografia da-utente-a-utente, ma per abilitarla devi riconnetterti. +\n +\nPuoi farlo ora, o più tardi, dalle impostazioni dell\'applicazione. La stanza contiene dispositivi sconosciuti - Questa stanza contiene dispositivi sconosciuti che non sono stati verificati.\nCiò significa che non esiste alcuna garanzia che i dispositivi appartengano agli utenti che ne rivendicano il possesso.\nSi consiglia di passare attraverso il processo di verifica per ogni dispositivo prima di continuare, ma è possibile inviare ugualmente il messaggio senza fare la verifica se preferisci.\n\nDispositivi sconosciuti: + Questa stanza contiene dispositivi sconosciuti che non sono stati verificati. +\nNon v\'è alcuna garanzia che le persone che utilizzano quei dispositivi siano davvero chi dicono d\'essere. +\nSi consiglia di verificare ogni dispositivo prima di continuare, ma se si preferisce, è comunque possibile inviare ugualmente il messaggio anche senza la verifica. +\n +\nDispositivi sconosciuti: Scegli un elenco di stanze Il server potrebbe essere non disponibile o sovraccarico - Digita un server home per elencare le sue stanze pubbliche - URL server home - Tutte le stanze sul server home %s + Inserisci un Home Server per vedere le sue stanze pubbliche + URL dell\'Home Server + Tutte le stanze sull\'Home Server %s Tutte le stanze native %s - Cerca nella cronologia + Cerca tra i messaggi passati Grandezza font @@ -704,40 +709,40 @@ Attenzione: questo file può essere eliminato se l\'applicazione viene disinstal Tema Nero Sincronizzazione… - Suono notifiche + Suono delle notifiche Mostra gli orari in formato 12 ore - Hai bisogno dei permessi per gestire i widget in questa stanza + Devi avere il permesso per poter gestire i widget in questa stanza %1$s aggiunto da %2$s %1$s rimosso da %2$s - Crea una videoconferenza con jitsi - Sei sicuro di voler eliminare questo widget da questa stanza? + Avvia una conferenza usando Jitsi + Vuoi davvero eliminare questo widget dalla stanza\? Impossibile creare il widget. - Invio della richiesta fallito. + L\'invio della richiesta è fallito. Non sei in questa stanza. Non hai i permessi per eseguire l\'azione in questa stanza. - room_id mancante nella richiesta. - user_id mancante nella richiesta. - Aggiungi una app Matrix - Cattura foto - Cattura video + Nella richiesta manca l\'ID stanza. + Nella richiesta manca l\'ID utente. + Aggiungi un Widget + Fai una foto + Fai un video - Msg contenenti il nome mostrato - Msg contenenti il nome utente + Messaggi contenenti il nome mostrato + Messaggi contenenti il nome utente Notifiche silenziose Notifiche audio - In ascolto di eventi - Rapporto errori + Rilevazione eventi + Segnalazione errore - Cellulare + Smartphone Chiama Messaggio criptato - Dettagli della comunità + Dettagli sulla comunità Caricamento… @@ -745,32 +750,32 @@ Attenzione: questo file può essere eliminato se l\'applicazione viene disinstal Azioni Comunità - Filtra i nomi delle comunità + Cerca tra le e comunità Invita Comunità Nessun gruppo - Agita con rabbia per segnalare un errore + Per segnalare un errore agita il dispositivo con rabbia - Sicuro di voler iniziare una nuova conversazione con %s? - Sicuro di voler iniziare una chiamata vocale? - Sicuro di voler iniziare una chiamata video? + Sicuro di voler avviare una nuova chat con %s\? + Sicuro di voler fare una chiamata audio\? + Sicuro di voler fare una chiamata video\? Elenco gruppi - Elenca i membri - Apri intestazione + Elenco dei membri + Apri descrizione Sincronizzazione… - 1 membro attivo - %d membri attivi + 1 utente attivo + %d utenti attivi - 1 membro - %d membri + 1 utente + %d utenti - Sei sicuro di voler bandire dalla chat questo utente? + Sei sicuro di voler bannare questo utente\? 1 nuovo messaggio @@ -789,16 +794,16 @@ Attenzione: questo file può essere eliminato se l\'applicazione viene disinstal Tutti i messaggi Solo le citazioni Silenzioso - Aggiungi scorciatoia su schermata iniziale + Aggiungi scorciatoia sulla schermata iniziale - Anteprima degli URL in linea + Anteprima degli URL Vibra quando menzionano un utente Statistiche Notifiche Nuovo ID della comunità (es. +foo:matrix.org) - ID comunità non valido + L\'ID comunità non è valido \'%s\' non è un ID comunità valido @@ -816,7 +821,7 @@ Attenzione: questo file può essere eliminato se l\'applicazione viene disinstal %1$s in %2$s - Creazione del widget fallita + La creazione del widget è fallita 1 widget attivo %d widget attivi @@ -824,18 +829,18 @@ Attenzione: questo file può essere eliminato se l\'applicazione viene disinstal La stanza %s non è visibile. - Usa fotocamera nativa + Usa la fotocamera di sistema Hai aggiunto un nuovo dispositivo \'%s\' che sta richiedendo le chiavi crittografiche. - Il tuo dispositivo non verificato \'%s\' sta richiedendo le chiavi crittografiche. - Inizia la verifica + Il tuo dispositivo non verificato \'%s\' sta chiedendo le chiavi crittografiche. + Avvia la verifica Condividi senza verificare Ignora la richiesta Attenzione! - La chiamata in conferenza è in fase di sviluppo e potrebbe non essere affidabile. + Le conferenze sono in fase di sviluppo e potrebbero non essere affidabili. Errore di comando @@ -849,7 +854,7 @@ Attenzione: questo file può essere eliminato se l\'applicazione viene disinstal Crea una comunità Nome della comunità Esempio - ID della comunità + ID comunità esempio @@ -860,25 +865,25 @@ Attenzione: questo file può essere eliminato se l\'applicazione viene disinstal Stanze Si è unito Invitato - Filtra i membri del gruppo - Filtra le stanze del gruppo + Cerca tra i membri del gruppo + Cerca tra le stanze del gruppo - L\'amministratore non ha fornito una descrizione estesa per questa comunità. + L\'amministratore non ha fornito una descrizione estesa di questa comunità. %2$s ti ha buttato fuori da %1$s - %2$s ti ha bandito da %1$s + %2$s ti ha bannato da %1$s Motivo: %1$s Rientra Dimentica la stanza Avatar - Insegna + Predisposizione - Questa stanza non mostra insegne per alcuna comunità + Questa stanza non mostra predisposizione per alcuna comunità Il livello di potere deve essere un intero positivo. - Notificare avatar - Avatar ricevuto + Avatar di avviso + Avatar di ricezione 1 cambio d\'appartenenza %d cambi d\'appartenenza @@ -887,63 +892,63 @@ Attenzione: questo file può essere eliminato se l\'applicazione viene disinstal Privacy delle notifiche Normale Privacy ridotta - L\'app richiede il permesso per funzionare in sottofondo + L\'App deve essere autorizzata a funzionare in background • Le notifiche vengono inviate via Firebase Cloud Messaging • Le notifiche contengono solo metadati - • Il contenuto del messaggio di una notifica si trova al sicuro direttamente dal server home di Matrix - • Le notifiche contengono dati e metadati sul messaggio + • Il contenuto del messaggio di una notifica è emesso direttamente dall\'Home Server Matrix + • Le notifiche contengono metadati e contenuto del messaggio • Le notifiche non mostreranno il contenuto del messaggio - Privacy notifiche - Riot può funzionare in sottofondo per gestire le tue notifiche in modo sicuro e privato. Ciò può influenzare la durata della batteria. + Privacy delle notifiche + Riot può esser sempre attivo in background in modo da gestire le tue notifiche in modo costante e sicuro. Ciò può influire sulla durata della batteria. Concedi l\'autorizzazione Scegli un\'altra opzione - Invia un adesivo + Invia uno sticker - Invia adesivo - Non hai ancora alcun pacco di adesivi attivo. -\n -\nAggiungerne qualcuno ora\? + Invia sticker + Non ci sono pacchetti di sticker attivi. +\n +\nVuoi aggiungerne qualcuno\? - Disattiva iscrizione + Disattiva l\'account Disattiva il mio account - Invia statistiche di utilizzo - Riot raccoglie statistiche anonime per permetterci di migliorare l\'applicazione. - Attiva le statistiche per aiutarci a migliorare Riot. + Invia le statistiche di utilizzo + Riot raccoglie statistiche anonime per permettere il miglioramento dell\'applicazione. + Attiva le statistiche per aiutare a migliorare Riot. Sì, voglio aiutare! - Parametro necessario mancante. - Un parametro non è valido. - Per continuare ad usare l\'homeserver %1$s devi leggere e accettare i termini e le condizioni di utilizzo. - Leggi adesso + Manca un parametro indispensabile. + Uno dei parametri non è valido. + Per continuare ad usare l\'Home Server %1$s devi leggerne e accettarne i termini di servizio. + Leggi ora - Disattiva account - Questo renderà il tuo account permanentemente inutilizzabile. Non ci potrai più accedere e nessuno potrà ri-registrare lo stesso ID utente. Il tuo account abbandonerà tutte le stanze a cui partecipa e i dettagli del tuo account saranno rimossi dal server identità. Questa azione è irreversibile. - -Disattivare il tuo account non eliminerà in modo automatico i messaggi che hai inviato. Se vuoi che siano dimenticati i tuoi messaggi, seleziona la casella qua sotto. - -La visibilità dei messaggi in Matrix è simile alle email. \"Dimenticare i tuoi messaggi\" significa che quelli che hai inviato non verranno condivisi con alcun utente nuovo o non registrato, ma gli utenti registrati che hanno avuto accesso ai tuoi messaggi avranno ancora accesso alla loro copia. - Per favore dimenticate tutti i messaggi che ho inviato al momento della disattivazione del mio account (Attenzione: gli utenti futuri vedranno un elenco incompleto di conversazioni) + Disattiva l\'account + Ciò renderà il tuo account inutilizzabile per l\'eternità. Non potrai più accederci e nessuno potrà ri-registrare lo stesso ID utente. Il tuo account uscirà da tutte le stanze in cui si trova attualmente e di dettagli del tuo account saranno rimossi dall\'Identity Server. Questa azione è irreversibile. +\n +\nDisattivare il tuo account non eliminerà i messaggi che hai inviato. Se vuoi che i tuoi messaggi siano dimenticati seleziona la casella qua sotto. +\n +\nLa visibilità dei messaggi in Matrix è simile alle email. Questo vuol dire che se chiedi di \"dimenticare i tuoi messaggi\", quelli che hai inviato finora non verranno mai più condivisi con alcun nuovo utente, ma gli utenti che hanno già avuto accesso ai tuoi messaggi continueranno a potervi accedere. + Per favore dimenticate tutti i messaggi che ho inviato fino al momento della disattivazione del mio account (Attenzione: in questo modo i nuovi utenti potrebbero vedere delle conversazioni incomplete) Per continuare, inserisci la tua password: - Disattiva account + Disattiva l\'account Licenze di terze parti Scarica Parla Svuota - Richiedi di nuovo le chiavi di cifratura dai tuoi altri dispositivi. + Richiedi di nuovo le chiavi di crittografia dagli altri tuoi dispositivi. - Richiesta chiave inviata. + La richiesta della chiave è stata inviata. Richiesta inviata - Avvia Riot su un altro dispositivo che possa decifrare il messaggio, in modo da inviare le chiavi a questo dispositivo. + Avvia Riot su un altro dispositivo che possa decifrare il messaggio, in modo che possa inviare le chiavi a questo dispositivo. Digita qui… - Invia voce + Invia messaggio vocale prosegui con… Spiacenti, ma non è stata trovata alcuna applicazione esterna per completare l\'azione. @@ -953,37 +958,37 @@ La visibilità dei messaggi in Matrix è simile alle email. \"Dimenticare i tuoi Persone Per favore, inserisci la tua password. - Se possibile, scrivi la descrizione in inglese, grazie. + Se possibile, scrivi in inglese, grazie. Invia risposta criptata… Risposta non criptata… Mostra file multimediale prima dell\'invio - Attualmente non sei membro di alcuna comunità. + Al momento non fai parte di alcuna comunità. - Usa invio da tastiera per spedire un messaggio + Usa il tasto invio per spedire i messaggi Mostra l\'azione - Bandisci utente con un dato id - Togli il bando a un utente con un dato id - Definisci il livello di potere di un utente - Dimentica utente con un dato id - Invita utente con un dato id nella stanza corrente - Entra nella stanza con un determinato alias - Lascia la stanza - Imposta argomento della stanza - Butta fuori un utente con un dato id + Banna utente con l\'ID specificato + Togli il ban all\'utente con l\'ID specificato + Imposta i poteri di un utente + Rimuove il rango di operatore dall\'utente con l\'ID specificato + Invita l\'utente con l\'ID specificato nella stanza corrente + Entra nella stanza con un determinato nome + Esci dalla stanza + Imposta l\'argomento della stanza + Butta fuori l\'utente con l\'ID specificato Cambia il tuo nome visualizzato Markdown attivo / spento - Per correggere la gestione delle app Matrix + Per correggere la gestione dei widget - Questa stanza è stata sostituita e non è più attiva + Questa stanza è stata sostituita da un\'altra e non è più attiva La conversazione continua qui - Questa stanza è la continuazione di un\'altra conversazione - Clicca qui per vedere i messaggi più vecchi + Questa stanza contiene una conversazione cominciata altrove + Clicca qui per vedere i messaggi precedenti - Mostrare tutti i messaggi di questo utente? - -Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tempo. - A causa di permessi insufficienti, questa azione non è possibile. + Mostrare tutti i messaggi di questo utente\? +\n +\nTieni presente che questa azione riavvierà l\'app e ciò potrebbe richiedere molto tempo. + Non hai permessi sufficienti per effettuare questa azione. 1s %ds @@ -1028,31 +1033,31 @@ Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tem contatta l\'amministratore del servizio - Il server home ha superato uno dei limiti delle risorse, pertanto alcuni utenti non potranno accedere. - Il server home ha superato uno dei limiti delle risorse. + L\'Home Server ha superato uno dei limiti delle risorse, pertanto alcuni utenti non potranno accedere. + L\'Home Server ha superato uno dei limiti delle risorse. - Il server home ha raggiunto il limite mensile di utenti attivi, pertanto alcuni utenti non potranno accedere. - Il server home ha raggiunto il limite mensile di utenti attivi. + L\'Home Server ha raggiunto il limite mensile di utenti attivi, pertanto alcuni utenti non potranno accedere. + L\'Home Server ha raggiunto il limite mensile di utenti attivi. Per favore %s per aumentare questo limite. Per favore %s per continuare ad usare questo servizio. Errore - Aumenta le prestazioni caricando i membri della stanza solo alla prima visualizzazione. - Il tuo server home non supporta ancora il caricamento posticipato dei membri delle stanze. Prova in seguito. + Aumenta la performance caricando i dati dei membri della stanza solo quando questi si fan vedere. + Il tuo Home Server non supporta ancora il caricamento differito dei membri delle stanze. Prova più avanti. Spiacente, si è verificato un errore - Caricamento posticipato dei membri della stanza + Caricamento differito dei membri della stanza Tema Status.im Versione %s - Crea una passphrase (frase d\'ordine) per crittografare le chiavi esportate. Dovrai inserire la stessa passphrase per poter importare le chiavi. - Crea passphrase - Le passphrase devono corrispondere + Crea una password per mettere al sicuro le chiavi esportate. La stessa password dovrà essere usata per poter importare le chiavi. + Crea una password + Le password devono corrispondere espandi - collassa + riduci Mostra l\'area informazioni Sempre @@ -1067,115 +1072,114 @@ Tieni presente che questa azione riavvierà l\'app e potrebbe richiedere del tem Chiama comunque Butta fuori - Sei sicuro di voler buttare fuori questo utente dalla chat? - Sei sicuro di voler buttare fuori questi utenti dalla chat? + Sei sicuro di voler buttare fuori questo utente\? + Sei sicuro di voler buttare fuori questi utenti\? Motivo - Visualizza anteprima dei link all\'interno della chat quando il tuo server home supporta questa funzione. + Se il tuo Home Server supporta questa funzione, all\'interno delle chat verrà visualizzata un\'anteprima dei link postati. Invia notifiche di digitazione Fai sapere agli altri utenti che stai scrivendo. - Formattazione markdown - Formatta i messaggi utilizzando la sintassi markdown prima dell\'invio. Ciò consente una formattazione avanzata come l\'uso degli asterischi per visualizzare il testo in corsivo. + Formattazione Markdown + Permette di formattare i messaggi con sintassi Markdown prima di inviarli. Ad esempio si può ottienere un testo in corsivo aggiungendovi degli asterischi prima e dopo. Mostra le conferme di lettura - Clicca sulle conferme di lettura per un elenco dettagliato. - Mostra eventi di ingresso ed uscita partecipanti - Non si applica ad inviti, butta fuori ed espulsioni. - Mostra eventi degli account + Clicca sulle conferme di lettura per vederne l\'elenco dettagliato. + Mostra entrata ed uscita degli utenti + Inviti, butta fuori e ban non vengono considerati. + Mostra i cambiamenti degli account Includi cambiamenti dell\'avatar e del nome visualizzato. Password - Avvia la fotocamera di sistema invece della schermata fotocamera personalizzata. + Avvia la fotocamera di sistema invece della fotocamera di Riot. Questa opzione richiede un\'applicazione di terze parti per registrare i messaggi. - Il comando \"%s\" necessita di più parametri, o alcuni parametri non sono validi. + Il comando \"%s\" necessita di più parametri, oppure alcuni parametri non sono corretti. Markdown è stato abilitato. Markdown è stato disabilitato. Chiamate - Usa suoneria predefinita di Riot per le chiamate in arrivo - Suoneria chiamate in arrivo - Scegli suoneria per le chiamate: + Usa la suoneria predefinita di Riot per le chiamate in arrivo + Suoneria delle chiamate in arrivo + Scegli la suoneria per le chiamate: - Accetto + Accetta - Per favore, rivedere e accettare le politiche di questo server home: + Per favore, leggi e accetta i termini di servizio di questo Home Server: - %1$d/%2$d chiave/i importate con successo. + %1$d/%2$d chiav(i) importate con successo. - Notifiche per la risoluzione dei problemi - Diagnostica per la risoluzione dei problemi + Diagnostica delle notifiche + Diagnosi Esegui i test In esecuzione… (%1$d di %2$d) La diagnostica di base risponde correttamente. Se continui a non ricevere notifiche, invia una segnalazione errore per aiutarci a indagare. Uno o più test hanno fallito, prova le soluzioni suggerite. - Uno o più test hanno fallito, per favore invia un rapporto errore per aiutarci a indagare. + Uno o più test hanno fallito, per favore invia un rapporto di errore per aiutarci a indagare. Impostazioni di sistema. - Le notifiche sono abilitate nelle impostazioni di sistema. - Le notifiche sono disabilitate nelle impostazioni di sistema. -Controlla le impostazioni di sistema. - Apri le impostazioni + Le notifiche sono abilitate nelle Impostazioni di sistema. + Le notifiche sono disabilitate nelle Impostazioni di sistema. +\nControlla le Impostazioni di sistema. + Apri le Impostazioni Impostazioni account. Le notifiche sono abilitate per il tuo account. Le notifiche sono disabilitate per il tuo account. -Controlla le impostazioni dell\'account. +\nControlla le impostazioni dell\'account. Abilita Impostazioni dispositivo. Le notifiche sono abilitate per questo dispositivo. Le notifiche non sono abilitate per questo dispositivo. -Controlla le impostazioni Riot. +\nControlla le impostazioni di Riot. Abilita - Esegui controllo servizi + Esegui un controllo dei servizi L\'APK Google Play Services è disponibile e aggiornato. - Riot usa Google Play Services per consegnare i messaggi a comparsa, ma non sembra sia configurato correttamente: + Riot usa Google Play Services per consegnare i messaggi a comparsa, ma sembra non sia stato configurato correttamente: \n%1$s - Correggi i servizi play + Correggi i Play Services Token di Firebase Token FCM recuperato con successo: %1$s - Recupero fallito del Token FCM: -%1$s + Il recupero del Token FCM: %1$s è fallito - Registrazione token - Token FCM registrato con successo sul server home. - Registrazione fallita del token FCM sul server home: -%1$s + Registrazione Token + Token FCM registrato con successo sull\'Home Server. + E\'fallita la registrazione del Token FCM sull\'Home Server: +\n %1$s Servizio di notifiche Servizio di notifiche in esecuzione. Servizio di notifiche non in esecuzione. -Prova a riavviare l\'applicazione. +\nProva a riavviare l\'applicazione. Avvia il servizio Auto riavvio del servizio di notifiche - Il servizio è stato terminato e riavviato automaticamente. - Fallito l\'avvio del servizio + Il servizio è stato chiuso e si è riavviato automaticamente. + L\'avvio del servizio è fallito Esegui all\'avvio - Il servizio sarà eseguito quando il dispositivo sarà riavviato. - Il servizio non sarà avviato al riavvio del dispositivo, non riceverai notifiche finché Riot non verrà aperto almeno una volta. + Il servizio inizierà quando il dispositivo sarà riavviato. + Il servizio non partirà al riavvio del dispositivo. Non riceverai notifiche finché Riot non verrà aperto almeno una volta. Abilita l\'esecuzione all\'avvio - Controlla le restrizioni in sottofondo - Le restrizioni in sottofondo sono disabilitate per Riot. Questo test andrebbe eseguito usando dati mobili (non WIFI). -%1$s - Le restrizioni in sottofondo sono abilitate per Riot. -Il lavoro che l\'app tenta di eseguire verrà limitato in modo aggressivo mentre è in sottofondo e ciò potrebbe influenzare le notifiche. -%1$s - Disabilita le restrizioni + Verifica se Riot sia stato configurato per funzionare in modo limitato quando lavora in background + Riot non funziona senza alcuna restrizione anche quando è eseguito in background. Questo test andrebbe eseguito usando dati mobili (non WIFI). +\n%1$s + Riot è stato configurato per funzionare in modo limitato quando è eseguito in background. +\nIl funzionamento dell\'App, quando è eseguita in background, è stato fortemente limitato e ciò potrebbe influenzare la ricezione delle notifiche. +\n%1$s + Non limitare Ottimizzazione della batteria Riot non è influenzato dall\'ottimizzazione della batteria. - Se un utente lascia un dispositivo scollegato e fermo per un periodo di tempo, a schermo spento, il dispositivo entra in modalità Doze. Ciò impedisce alle app di accedere alla rete e rinvia le attività, le sincronizzazioni e gli allarmi normali. + Se si lascia un dispositivo scollegato, fermo e con lo schermo spento, dopo un certo tempo questo entra in modalità Doze. Ciò impedisce alle App di accedere alla rete e ritarda le attività, le sincronizzazioni e la ricezione dei normali allarmi. Ignora l\'ottimizzazione - Connessione in sottofondo - Riot deve mantenere una connessione in sottofondo a basso impatto per poter ricevere notifiche affidabili. -Nella schermata successiva ti verrà chiesto di consentire a Riot di funzionare sempre in sottofondo, accetta per favore. + Connessione in background + Per poter ricevere le notifiche in tempo reale, Riot deve potersi sempre connettere. Anche quando funziona in background. +\nNella schermata successiva ti verrà chiesto di consentire a Riot di funzionare anche quando è in background, accetta per favore. Concedi il permesso Si è verificato un errore durante la verifica dell\'indirizzo email. @@ -1183,186 +1187,184 @@ Nella schermata successiva ti verrà chiesto di consentire a Riot di funzionare Si è verificato un errore durante la verifica del numero di telefono. Ulteriori informazioni: %s - Nessun valido APK Google Play Services è stato trovato. Le notifiche non funzioneranno correttamente. + Non è stato trovato nessun APK Google Play Services valido. Le notifiche non funzioneranno correttamente. Riot.im - Comunica, a modo tuo - Un\'app universale di chat sicure interamente sotto il tuo controllo. - Un\'app di chat, sotto il tuo controllo e interamente flessibile. Riot ti permette di comunicare a modo tuo. Creata per [matrix] - lo standard per le comunicazioni aperte, decentralizzate. + Una App per chat universali, sicure ed interamente sotto il tuo controllo. + Una App per chat flessibile e interamente sotto il tuo controllo. Riot ti permette di comunicare a modo tuo. Creata per [matrix] - lo standard per le comunicazioni aperte, decentralizzate. \n -\nOttieni un account matrix.org gratuito, ottieni il tuo server su https://modular.im, o usa un altro server Matrix. +\nPuoi aprire un account matrix.org gratuito, creare il tuo server su https://modular.im o usare un altro server Matrix. \n \nPerché scegliere Riot.im\? \n -\n• COMUNICAZIONE COMPLETA: crea stanze per i tuoi team, i tuoi amici, la tua comunità - come preferisci! Chatta, condividi file, aggiungi widget e fai videochiamate vocali - tutto gratuito. +\n• COMUNICAZIONE COMPLETA: crea stanze per discussione pubbliche o private per i tuoi team, i tuoi amici, la tua comunità - come preferisci! Chatta, condividi file, aggiungi widget e fai chiamate video o audio - tutto gratuito. \n -\n• GRANDI INTEGRAZIONI: usa Riot.im con gli strumenti che conosci ed ami. Con Riot.im puoi addirittura chattare con utenti e gruppi su altre app di chat. +\n• GRANDI INTEGRAZIONI: collega Riot.im alle piattaforme che conosci ed ami. Con Riot.im puoi addirittura chattare con utenti e gruppi che usano altre App di chat. \n -\n• PRIVATO E SICURO: tieni segrete le tue conversazioni. Una crittografia end-to-end allo stato dell\'arte assicura che le comunicazioni private restino tali. +\n• PRIVATO E SICURO: tieni segrete le tue conversazioni. Una crittografia end-to-end allo stato dell\'arte assicura che le comunicazioni private restino sempre tali. \n -\n• OPEN, NON CHIUSO: open source e costruito su Matrix. Possiedi i tuoi dati ospitando il tuo server personale, o scegliendone uno di cui ti fidi. +\n• OPEN, NON CHIUSO: open source e costruito su Matrix. Riprendi il possesso dei tuoi dati creando il tuo server Matrix personale, o scegliendone uno di cui ti fidi. \n -\n• OVUNQUE TU SIA: resta in contatto ovunque tu sia con la cronologia dei messaggi totalmente sincronizzata tra i tuoi dispositivi ed online su https://riot.im. +\n• OVUNQUE TU SIA: stai sul pezzo ovunque tu sia grazie la cronologia dei messaggi sempre sincronizzata tra i tuoi dispositivi ed online su https://riot.im. - Videochiamata in corso… + Chiamata video in corso… - "Apportiamo continuamente cambiamenti e migliorie a Riot.im. -Il registro completo delle modifiche si può trovare qui: %1$s. -Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi." - Backup chiave - Usa backup chiave - Il backup delle chiavi non è concluso, attendere prego… + Riot.im continua a crescere e migliorare. Il registro completo delle modifiche si può trovare qui: %1$s. Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi. + Backup delle chiavi + Usa il Backup delle chiavi + Il Backup delle chiavi non è concluso, attendere prego… Salta Fatto Impostazioni di notifica avanzate - Perderai i tuoi messaggi cifrati se ti disconnetti adesso - Backup chiave in corso. Se ti disconnetti ora, perderai l\'accesso ai tuoi messaggi cifrati. - Il Backup Chiave Sicuro deve essere attivo su tutti i tuoi dispositivi per evitare di perdere l\'accesso ai tuoi messaggi cifrati. + Se ti disconnetti adesso perderai i tuoi messaggi cifrati + Il Backup delle chiavi è in corso. Se ti disconnetti adesso perderai i tuoi messaggi cifrati. + Il Backup delle chiavi deve essere attivo su tutti i tuoi dispositivi per evitare di perdere l\'accesso ai tuoi messaggi cifrati. Non voglio i miei messaggi cifrati Backup delle chiavi… - Usa backup chiave + Usa il Backup delle chiavi Sei sicuro\? Backup - Perderai l\'accesso ai tuoi messaggi cifrati a meno che non fai il backup delle tue chiavi prima di disconnetterti. + Perderai l\'accesso ai tuoi messaggi cifrati a meno che tu non faccia il Backup delle chiavi prima di disconnetterti. - Resta + Rimani Interrompi Ignora Sei sicuro di volerti disconnettere\? Accedi con single sign-on - Questo URL è irraggiungibile, controllalo - Il tuo dispositivo sta usando un protocollo di sicurezza TLS obsoleto, vulnerabile ad attacchi. Per la tua sicurezza non potrai connetterti - Imposta l\'importanza della notifica per evento, configura il suono, il led, la vibrazione - Importanza della notifica per evento + Questo URL è irraggiungibile. Per favore controllalo + "Il tuo dispositivo usa un protocollo di sicurezza TLS obsoleto e vulnerabile agli attacchi. Per la tua sicurezza, ti viene impedito di connetterti" + Imposta i livelli di importanza delle notifiche in base al tipo. Configura i suoni, i led, e la vibrazione + Importanza delle notifiche in base al tipo Impostazioni personalizzate. - Nota che alcuni tipi di messaggio sono impostati come silenziosi (produrrà una notifica senza suono). + Nota che alcuni tipi di messaggio sono impostati come silenziosi (ossia generano notifiche senza suono). Alcune notifiche sono disattivate nelle tue impostazioni personalizzate. - Caricamento regole personalizzate fallito, riprova. - Controlla impostazioni + Il caricamento delle regole personalizzate è fallito, riprova. + Controlla le Impostazioni - [%1$s] -\nQuesto errore è fuori dal controllo di Riot e secondo Google, questo errore indica che il dispositivo ha troppe app registrate con FCM. L\'errore si verifica solo in casi in cui ci sia un numero estremo di app, quindi non dovrebbe affliggere l\'utente medio. - [%1$s] -\nQuesto errore è fuori dal controllo di Riot. Può accadere per vari motivi. Potrebbe funzionare se riprovi più tardi, puoi anche controllare che Google Play Service non ha limitazioni di utilizzo di dati nelle impostazioni di sistema, o che l\'orologio del tuo dispositivo è corretto, o può succedere in custom ROM. - [%1$s] -\nQuesto errore è fuori dal controllo di Riot. Non c\'è alcun account Google nel telefono. Apri il gestore di account ed aggiungi un account Google. + [%1$s] +\nQuesto errore non dipende da Riot. Secondo Google dipende dal fatto che questo dispositivo ha troppe App registrate con FCM. L\'errore si verifica solo in casi in cui ci sia un numero estremo di app, quindi non dovrebbe affliggere l\'utente medio. + [%1$s] +\nQuesto errore non dipende da Riot e può avere diverse cause. Potresti riprovare più tardi o controllare che Google Play Service non abbia configurato nelle Impostazioni di sistema dei limiti di utilizzo di dati. Anche un orologio di sistema regolato male potrebbe esserne la causa. Oppure può verificarsi se hai una ROM customizzata. + [%1$s] +\nQuesto errore non dipende da Riot. Non c\'è alcun account Google nel telefono. Apri il gestore di account ed aggiungi un account Google. Aggiungi account - Configura notifiche rumorose - Configura notifiche chiamata - Configura notifiche silenziose - Scegli colore del LED, vibrazione, suono… + Configura le notifiche rumorose + Configura le notifiche di chiamata + Configura le notifiche silenziose + Scegli il colore del LED, la vibrazione, il suono… Gestione chiavi crittografiche - Invia messaggio con tasto Invio - Il tasto Invio della tastiera invierà il messaggio invece di andare a capo + Invia il messaggio col tasto Invio + Il tasto Invio della tastiera, invece di andare a capo invierà il messaggio - La modalità risparmio dati applica un filtro specifico in modo che gli aggiornamenti di presenza e le notifiche di scrittura sono esclusi. + La modalità risparmio dati applica un filtro specifico che esclude gli aggiornamenti di presenza e le notifiche di scrittura. - Aggiorna password + Aggiorna la password La password non è valida Le password non corrispondono - Ripristino messaggi cifrati - Gestisci backup chiave + Ripristino dei messaggi cifrati + Gestisci il Backup delle chiavi Silenzioso Inserisci un nome utente. Inserisci una password La password è troppo debole - Elimina la password se vuoi che Riot generi una chiave di recupero. - Nessuna sessione Matrix disponibile + Cancella la password se vuoi che Riot generi un codice di recupero. + Non c\'è alcuna sessione Matrix disponibile Non perdere mai i messaggi cifrati - I messaggi nelle stanze cifrate sono protetti con la cifratura end-to-end. Solo tu e il/i destinatario/i avete le chiavi per leggere questi messaggi. -\n -\nFai un backup sicuro delle tue chiavi per evitare di perderle. - Inizia ad usare il backup chiavi + I messaggi nelle stanze cifrate sono protetti con crittografia E2E. Solo tu e il/i destinatario/i avete le chiavi crittografiche per leggere questi messaggi. +\n +\nRicorda di fare un backup delle tue chiavi crittografiche per evitare di perderle. + Inizia ad usare il Backup delle chiavi crittografiche (Avanzato) - Esporta manualmente le chiavi + Esporta manualmente le chiavi crittografiche Proteggi il tuo backup con una password. - Salveremo una copia cifrata delle tue chiavi nel tuo homeserver. Proteggi il tuo backup con una password per tenerlo sicuro. -\n -\nPer massima sicurezza, dovrebbe essere diversa dalla password del tuo account. + Una copia cifrata delle tue chiavi crittografiche sarà salvata sul tuo Home Server. Proteggi il tuo Backup con una password per tenerlo al sicuro. +\n +\nPer una maggior sicurezza, è meglio che la password del Backup delle chiavi sia diversa da quella del tuo account. Imposta password Creazione backup - Oppure, proteggi il tuo backup con una chiave di ripristino, salvandola in un luogo sicuro. - (Avanzato) Imposta con chiave di ripristino - Completato! - Backup delle tue chiavi in corso. - La tua chiave di ripristino è una rete di sicurezza - puoi usarla per recuperare l\'accesso ai tuoi messaggi cifrati se dimentichi la password. -\nTieni la tua chiave di ripristino in un luogo sicuro, come un password manager (o una cassaforte) - Tieni la tua chiave di ripristino in un luogo sicuro, come un password manager (o una cassaforte) + Oppure, proteggi il tuo Backup con un codice di recupero, salvandolo in un luogo sicuro. + (Avanzato) Imposta un codice di recupero + Fatto! + Il Backup delle tue chiavi crittografiche è in corso. + Il tuo codice di recupero è un\'ancora di salvezza - puoi usarlo per riaccedere ai tuoi messaggi cifrati se dimentichi la password. +\nSalva il tuo codice di recupero in un luogo sicuro, tipo un password manager (o una cassaforte) + Salva il tuo codice di recupero in un luogo sicuro, come un password manager (o una cassaforte) Fatto Ho fatto una copia - Salva chiave di ripristino + Salva il codice di recupero Condividi Salva come file - La chiave di ripristino è stata salvata in \'%s\'. -\n -\nAttenzione: questo file potrebbe essere eliminato se viene disinstallata l\'applicazione. + Il codice di recupero è stato salvato in \'%s\'. +\n +\nAttenzione: se l\'applicazione su cui è salvato venisse disinstallata, il codice di recupero verrà perso. Si prega di farne una copia - Condividi chiave di ripristino con… - Generazione chiave di ripristino usando la password, questo processo può durare diversi secondi. - Chiave di ripristino + Condividi il codice di recupero con… + Generazione del codice di recupero usando la password. Questo processo può durare alcuni secondi. + Codice di recupero Errore inatteso - Backup iniziato - Backup in corso in secondo piano delle tue chiavi di ripristino nel tuo homeserver. Il backup iniziale può durare diversi minuti. + Backup avviato + Il tuo Home Server sta facendo il Backup delle tue chiavi crittografiche in background. Il primo Backup può impiegare diversi minuti. Sei sicuro\? - Potresti perdere l\'accesso ai tuoi messaggi se ti disconnetti o perdi il dispositivo. + Se ti disconnetti o perdessi questo dispositivo potresti perdere l\'accesso ai tuoi messaggi. - Rilevazione versione backup… - Usa la tua password di ripristino per sbloccare la cronologia dei messaggi cifrati - usa la tua chiave di ripristino - Non conosci la tua password di ripristino, puoi %s. + Verifica versione backup… + Usa la tua password di recupero per sbloccare i messaggi cifrati + usa il tuo codice di recupero + Se non conosci la tua password di recupero, puoi %s. - Usa la tua chiave di ripristino per sbloccare la cronologia dei messaggi cifrati - Inserisci chiave di ripristino + Usa il tuo codice di recupero per sbloccare la Timeline dei messaggi cifrati + Inserisci codice di recupero Ripristino messaggio - Hai perso la chiave di ripristino\? Puoi crearne una nuova nelle impostazioni. - Impossibile decifrare il backup con questa password: verifica di avere inserito la password di ripristino corretta. + Hai perso il codice di recupero\? Nelle Impostazioni puoi crearne uno nuovo. + Impossibile decifrare il backup con questa password: verifica che la password di recupero inserita sia corretta. Errore di rete: controlla la tua connessione e riprova. - Ripristino backup: - Calcolo chiave di ripristino… - Scaricamento chiavi… + Ripristino Backup: + Codice di recupero in elaborazione… + Download chiavi… Importazione chiavi… - Sblocca cronologia - Inserisci una chiave di ripristino - Impossibile decifrare il backup con questa chiave di ripristino: verifica di avere inserito la chiave di ripristino corretta. + Sblocca Timeline + Inserisci un codice di recupero + Impossibile decifrare il backup con questo codice di recupero: verifica di avere inserito il codice di recupero corretto. Backup ripristinato %s ! - Ripristinate %1$d chiavi di sessione e aggiunte %2$d nuove chiavi sconosciute a questo dispositivo + Ripristinate %1$d Session-Keys e aggiunte %2$d nuove Key(s) finora sconosciute a questo dispositivo - Ripristinato un backup con %d chiave. - Ripristinato un backup con %d chiavi. + Ripristinato un Backup con %d chiave. + Ripristinato un Backup con %d chiavi. %d nuova chiave è stata aggiunta a questo dispositivo. %d nuove chiavi sono state aggiunte a questo dispositivo. - Rilevazione ultima versione chiavi di ripristino fallita (%s). - La cifratura di sessione non è attivata + Rilevazione ultima versione codici di recupero fallita (%s). + La cifratura della sessione non è stata attivata Ripristina da backup Elimina backup - Backup chiavi impostato correttamente per questo dispositivo. - Backup chiavi non attivo per questo dispositivo. - Nessun backup programmato per le chiavi da questo dispositivo. + Il Backup delle chiavi è stato impostato correttamente su questo dispositivo. + Il Backup delle chiavi non è attivo su questo dispositivo. + Questo dispositivo non sta facendo il Backup delle chiavi. Il backup ha una firma da un dispositivo sconosciuto con ID %s. Il backup ha una firma valida da questo dispositivo. @@ -1372,30 +1374,30 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi."Il backup ha una firma non valida dal dispositivo non verificato %s Impossibile ottenere info di fiducia per il backup (%s). - Per usare il backup chiavi su questo dispositivo, recupera con la password o chiave di ripristino ora. + Per utilizzare il Backup delle chiavi crittografiche su questo dispositivo, devi accedervi con la password o con il codice di recupero. Eliminazione backup… Eliminazione backup fallita (%s) Elimina backup - Eliminare dal server il backup delle chiavi di cifratura\? Non potrai più usare la tua chiave di ripristino per leggere la cronologia di messaggi cifrati. + Eliminare il Backup delle chiavi crittografiche dall\'Home Server\? Non potrai più usare il codice di recupero per leggere i messaggi cifrati. - Nessun backup chiavi - È stato rilevato un nuovo backup chiavi per messaggi sicuri. -\n -\nSe non hai impostato il nuovo metodo di ripristino, potrebbe essere un tentativo di un aggressore di accedere al tuo account. Cambia la tua password e imposta un nuovo metodo di ripristino immediatamente nelle impostazioni. + Nuovo Backup delle chiavi + È stato rilevato un nuovo Backup delle chiavi crittografiche. +\n +\nSe non hai già configurato il nuovo metodo di ripristino, potrebbe trattarsi di un tentativo di un aggressore. Cambia subito la tua password e configura un nuovo metodo di ripristino nelle Impostazioni. Sono stato io Non perdere mai i messaggi cifrati - Inizia ad usare il backup chiavi + Inizia ad usare il Backup delle chiavi Non perdere mai i messaggi cifrati - Usa backup chiavi + Usa il Backup delle chiavi - Nuove chiavi di messaggi cifrati - Gestisci in backup chiavi + Nuove chiavi di crittografia + Gestisci nel Backup delle chiavi - Backup chiavi… + Backup chiavi in corso… - Backup fatto di tutte le chiavi + Il Backup delle chiavi è stato eseguito Backup di %d chiave… Backup di %d chiavi… @@ -1405,7 +1407,7 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi."Algoritmo Firma - Risposta alla scoperta di un homeserver non valida + Risposta Home Server non valida Opzioni autocompletamento server Riot ha rilevato una configurazione server personalizzata per il tuo dominio userId \"%1$s\": \n%2$s @@ -1417,10 +1419,10 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi."Scegli Sorgente multimediale predefinita Scegli - Riproduci suono otturatore + Riproduci il suono dell\'otturatore Segna come letto - L\'app non ha bisogno di connettersi in background all\'homeserver, dovrebbe ridurre il consumo della batteria + L\'app non ha bisogno di connettersi in background all\'Home Server. Ciò dovrebbe ridurre il consumo della batteria %1$s: 1 messaggio %1$s: %2$d messaggi @@ -1437,23 +1439,23 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi."Io ** Invio fallito - per favore apri la stanza - Spiacenti, le chiamate di gruppo con Jitsi non sono supportate sui vecchi dispositivi (con Android precedenti al 5.0) + Purtroppo i vecchi dispositivi (quelli con Android precedenti al 5.0) non supportano le conferenze con Jitsi Verifica dispositivo IP sconosciuto - Un nuovo dispositivo sta richiedendo le chiavi di cifratura. -\nNome dispositivo: %1$s -\nUltimo accesso: %2$s -\nSe non hai effettuato l\'accesso in un altro dispositivo, ignora questa richiesta. - Un dispositivo non verificato sta richiedendo le chiavi di cifratura. -\nNome dispositivo: %1$s -\nUltimo accesso: %2$s -\nSe non hai effettuato l\'accesso in un altro dispositivo, ignora questa richiesta. + Un nuovo dispositivo sta chiedendo le chiavi crittografiche. +\nNome dispositivo: %1$s +\nUltimo accesso: %2$s +\nSe non hai effettuato l\'accesso da un altro dispositivo, ignora questa richiesta. + Un dispositivo non verificato sta chiedendo le chiavi crittografiche. +\nNome dispositivo: %1$s +\nUltimo accesso: %2$s +\nSe non hai effettuato l\'accesso da un altro dispositivo, ignora questa richiesta. Verifica Condividi - Richiesta condivisione chiave + Richiesta condivisione chiavi crittografiche Ignora Verifica confrontando una breve stringa. @@ -1497,12 +1499,12 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi."Il SAS non corrispondeva Il dispositivo ha ricevuto un messaggio inaspettato È stato ricevuto un messaggio non valido - Chiave non corrispondente + Le chiavi non corrispondono Utente non corrispondente Errore sconosciuto - Esiste già un backup sul tuo HomeServer - Sembra che tu abbia già impostato un backup chiavi da un altro dispositivo. Vuoi sostituirlo con quello che stai creando\? + Esiste già un backup sul tuo Home Server + Sembra tu abbia già impostato il Backup delle chiavi crittografiche da un altro dispositivo. Vuoi sostituirlo con il Backup che stai creando\? Sostituisci Ferma @@ -1521,7 +1523,7 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi."Benvenuti a casa! Recupera i messaggi non letti qui Conversazioni - La tua conversazione diretta verrà mostrata qui + Le tue conversazioni dirette verranno mostrate qui Stanze Le tue stanze verranno mostrate qui @@ -1560,7 +1562,7 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi."Pubblica questa stanza nell\'elenco stanze Si è verificato un errore nell\'ottenere informazioni sulla fiducia - Si è verificato un errore nell\'ottenere i dati del backup chiavi + Si è verificato un errore nell\'ottenere i dati dal Backup delle chiavi Benvenuti nella beta! Mentre RiotX si trova nella fase iniziale dello sviluppo, potrebbero mancare alcune funzioni e potrebbero verificarsi errori. @@ -1568,7 +1570,7 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi."Descrizione nel Play Store Se trovi errori ti preghiamo segnalarli nel menu in alto a sinistra della Pagina Iniziale e noi li correggeremo appena possibile. - Importa chiavi e2e dal file \"%1$s\". + Importa le chiavi di crittografia dal file \"%1$s\". Versione SDK Matrix Altre note di terze parti @@ -1591,7 +1593,7 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi."Url: Formato: - Voce e video + Audio e Video Aiuto e informazioni @@ -1603,16 +1605,16 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi."Grazie, il suggerimento è stato inviato correttamente L\'invio del suggerimento è fallito (%s) - Mostra eventi nascosti nella cronologia + Mostra gli eventi nascosti nella Timeline RiotX - Client Matrix di nuova generazione - Un client per Matrix più veloce e leggero usando gli ultimi framework di Android - RiotX è un nuovo client per il protocollo Matrix (Matrix.org): una rete aperta per comunicazioni sicure e decentralizzate. RiotX è una riscrittura totale del client Riot Android, basata su una riscrittura completa dell\'SDK Android di Matrix. -\n -\nDisclaimer: questa è una versione beta. RiotX è attualmente in uno sviluppo attivo e contiene limitazioni ed errori (speriamo non troppi). I suggerimenti sono ben accetti! -\n -\nRiotX supporta: • Accesso ad account esistente • Crea stanze ed entra in stanze pubbliche • Accetta e rifiuta inviti • Elenca stanze utenti • Vedi dettagli stanza • Invia messaggi di testo • Invia allegati • Leggi e scrivi messaggi in stanze cifrate • Crypto: backup chiavi E2E, verifica avanzata dispositivi, richiesta e risposta condivisione chiavi • Notifiche push • Tema chiaro, scuro e nero -\n + Un client per Matrix più veloce e leggero che utilizza gli ultimi framework di Android + RiotX è un nuovo client per il protocollo Matrix (Matrix.org): una rete aperta per comunicazioni sicure e decentralizzate. RiotX è stato completamente riscritto rispetto a Riot Android, ed è a sua volta basato su un SDK Android di Matrix totalmente riscritto. +\n +\nDisclaimer: questa è una versione beta. RiotX è attualmente in uno sviluppo attivo e contiene ancora alcune limitazioni ed errori (speriamo non troppi). I suggerimenti sono ben accetti! +\n +\nRiotX supporta: • Accesso ad account esistente • Crea stanze ed entra in stanze pubbliche • Accetta e rifiuta inviti • Elenca stanze utenti • Vedi dettagli stanza • Invia messaggi di testo • Invia allegati • Leggi e scrivi messaggi in stanze cifrate • Crypto: backup chiavi E2E, verifica avanzata dispositivi, richiesta e risposta condivisione chiavi • Notifiche push • Tema chiaro, scuro e nero +\n \nNon tutte le funzioni di Riot sono già implementate in RiotX. Principali funzioni mancanti (prossimamente!): • Creazione account • Impostazioni stanza (elenca membri stanza, ecc.) • Chiamate • Widget • … Non hai nulla di nuovo da vedere! @@ -1642,127 +1644,127 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi."Invia un nuovo messaggio diretto Vedi l\'elenco delle stanze - Nome o ID (#esempio:matrix.org) + Nome o ID stanza (#esempio:matrix.org) Attiva swipe per rispondere nella timeline Collegamento copiato negli appunti - Gestore dell\'integrazione + Integration Manager - Nessun gestore integrazione configurato. - Aggiungi per ID matrix + Non è stato configurato nessun Integration Manager. + Aggiungi per ID utente Creare una stanza … - Nessun risultato trovato, usa \"Aggiungi per ID matrix\" per cercare sul server. + Nessun risultato trovato. Usa \"Aggiungi per ID utente\" per cercare sul server. Inizia a digitare per ottenere risultati - Filtra per nome utente o ID … + Cerca per nome o ID utente … Sto entrando nella stanza … - Visualizza Modifica cronologia + Visualizza Modifica Timeline Leggi Rifiuta - Per continuare, devi accettare i termini di servizio. + Per continuare devi accettare i termini di servizio. - Le precedenti versioni di Riot avevano un errore di sicurezza che poteva dare accesso al tuo account al tuo Server di Identità (%1$s). Se ti fidi di %2$s, puoi ignorare; altrimenti disconnettiti e riaccedi di nuovo. -\n -\nLeggi maggiori dettagli qui: + Alcune precedenti versioni di Riot contenevano un errore di sicurezza che permetteva al tuo Identity Server (%1$s) di accedere al tuo account. Se ti fidi di %2$s, puoi ignorare questo avviso; altrimenti disconnettiti e riaccedi di nuovo. +\n +\nLeggi maggiori dettagli qui: \nhttps://medium.com/@RiotChat/36b4792ea0d6 Termini di servizio - Leggi i termini - Diventa trovabile dagli altri - Usa bot, bridge, widget e pacchetti di adesivi + Leggi i termini di servizio + Fatti trovare dagli altri utenti + Usa bot, bridge, widget e pacchetti di sticker Leggi su Nessuno Revoca Disconnetti - Nessun server di identità configurato. + Non è stato configurato alcun Identity Server. - Chiamata fallita per server malconfigurato - Chiedi all\'amministratore del tuo homeserver (%1$s) di configurare un server TURN affinché le chiamate funzionino in modo affidabile. -\n -\nAltrimenti, puoi provare ad usare il server pubblico su %2$s, ma non è ugualmente affidabile e vedrà il tuo indirizzo IP. Puoi fare la tua scelta anche nelle Impostazioni. + Chiamata fallita a causa di un\'errata configurazione del server + Chiedi all\'amministratore del tuo Home Server (%1$s) di configurare un server TURN affinché le chiamate funzionino in modo affidabile. +\n +\nOppure puoi provare ad usare il server pubblico su %2$s, ma non sarà altrettanto affidabile e potrà vedere il tuo indirizzo IP. Puoi configurare tutto questo nelle Impostazioni. Prova ad usare %s Non chiedermelo più - Imposta un\'email per il recupero dell\'account, o più tardi per essere trovabile dalle persone che ti conoscono. - Imposta un telefono, o più tardi per essere trovabile dalle persone che ti conoscono. - Imposta un\'email per il recupero dell\'account. Più tardi usa email o telefono per essere trovabile dalle persone che ti conoscono. - Imposta un\'email per il recupero dell\'account. Più tardi usa email o telefono per essere trovabile dalle persone che ti conoscono. - Impossibile raggiungere un homeserver con questo URL, controllalo - Permetti server di assistenza chiamata di riserva - Userà %s come assistente quando l\'homeserver non ne offre uno (il tuo indirizzo IP sarà visibile durante le chiamate) - Aggiungi un server di identità nelle impostazioni per poterlo fare. + Imposta un\'email per il ripristino dell\'account in caso di problemi e, se vuoi, anche per farti trovare da chi conosce quell\'indirizzo email. + Aggiungi un numero di telefono se vuoi farti trovare da chi lo conosce. + Imposta un\'email per il ripristino dell\'account in caso di problemi. Email e telefono potranno essere usati anche per farti trovare dagli altri utenti. + Imposta un\'email per il ripristino dell\'account in caso di problemi. Email e numero di telefono potranno essere usati, se lo vorrai, anche per permettere a chi li conosce di trovarti. + Non è stato trovato alcun Home Server seguendo questo URL. Per favore, controllalo + Permetti chiamate dal Server di appoggio + "Se il tuo Home Server non ne ha un proprio Server d\'appoggio verrà usato %s (il Server d\'appoggio verrà a conoscenza del tuo indirizzo IP durante le chiamate)" + Per poterlo fare, aggiungi un Identity Server nelle Impostazioni. Modalità sync in background (Sperimentale) Ottimizzato per la batteria - Riot sincronizzerà in background in modo da preservare le risorse limitate del dispositivo (batteria). -\nA seconda dello stato delle risorse del tuo dispositivo, la sincronizzazione può essere ritardata dal sistema operativo. - Ottimizzato per il tempo reale - Riot sincronizzerà in background periodicamente in momenti precisi (configurabile). -\nCiò avrà impatto sull\'uso di dati e batteria, ci sarà una notifica permanente per comunicare che Riot è in attesa di eventi. - Nessun sync in background - Non ti verranno notificati i messaggi in arrivo quando l\'app è in background. - Aggiornamento impostazioni fallito. + Riot si sincronizzerà in background in modo da non consumare la poca batteria disponibile. +\nA seconda del livello della batteria, il sistema operativo potrebbe ritardare la sincronizzazione. + Ottimizzato per la performance + Riot si sincronizzerà in background ad intervalli regolari (configurabili). +\nCiò avrà un certo impatto sulla quantità di dati e batteria utilizzati. Una notifica sempre accesa comunicherà che Riot è attivo. + Nessuna sincronizzazione in background + Quando l\'App è in background non ti verranno notificati i messaggi in arrivo. + L\'aggiornamento delle impostazioni è fallito. - Intervallo di sync preferito + Intervallo preferito tra le sincronizzazioni %s \nLa sincronizzazione può essere ritardata a seconda delle risorse (batteria) o dello stato del dispositivo (sospensione). - Scoperte - Gestisci le tue impostazioni di rilevamento. + Farsi trovare + Configura l\'Identity Server per trovare e farsi trovare dagli altri utenti. Nome pubblico (visibile alle persone con cui comunichi) Il nome pubblico di un dispositivo è visibile alle persone con cui comunichi - Non stai usando alcun server di identità - Nessun server di identità configurato, è necessario per ripristinare la tua password. + Non stai usando alcun Identity Server + Nessun Identity Server configurato. E\' necessario per poter ripristinare la tua password. Pare che tu stia provando a connetterti ad un altro homeserver. Vuoi disconnetterti da qui\? - Server di identità - Disconnetti server di identità - Configura server di identità - Cambia server di identità - Attualmente stai usando %1$s per scoprire ed essere trovabile dai contatti esistenti che conosci. - Attualmente non stai usando alcun server di identità. Per scoprire ed essere trovabile dai contatti esistenti che conosci, configurane uno qua sotto. - Indirizzi email trovabili - Le opzioni di scoperta appariranno dopo avere aggiunto un\'email. - Le opzioni di scoperta appariranno dopo avere aggiunto un numero di telefono. - Se ti disconnetti dal server di identità non potrai più essere trovato da altri utenti e non potrai invitarne altri per email o telefono. - Numeri di telefono trovabili - Ti abbiamo inviato un\'email di conferma a %s, controlla l\'email e clicca sul link di conferma + Identity Server + Disconnetti Identity Server + Configura Identity Server + Cambia Identity Server + Stai usando l\'Identity Server %1$s per trovare e farti trovare da altri utenti. + In questo momento non stai usando alcun Identity Server. Per trovare e farti trovare dagli altri utenti, configurane uno qua sotto. + Indirizzi email visibili pubblicamente + Le opzioni su come farsi trovare da altri utenti appariranno dopo avere aggiunto un\'email. + Le opzioni su come farsi trovare da altri utenti appariranno dopo avere aggiunto un numero di telefono. + Se ti disconnetti dall\'Identity Server gli altri utenti non potranno trovarti e tu non potrai invitarne di nuovi per email o telefono. + Numeri di telefono visibili pubblicamente + Abbiamo inviato un\'email di conferma a %s, controlla l\'email e clicca sul link di conferma In attesa - Inserisci un nuovo server di identità - Impossibile connettersi al server di identità - Inserisci l\'URL del server di identità - Il server di identità non ha condizioni di servizio - Il server di identità che hai scelto non ha alcuna condizione di servizio. Continua solo se ti fidi del proprietario del servizio - È stato inviato un messaggio a %s. Inserisci il codice di verifica contenuto. + Inserisci un nuovo Identity Server + Impossibile connettersi all\'Identity Server + Inserisci l\'URL dell\'Identity Server + L\'Identity Server non ha reso noti i propri termini di servizio + L\'Identity Server che hai scelto non ha freso noti i propri termini di servizio. Continua solo se ti fidi + È stato inviato un messaggio a %s. Inserisci il codice di verifica che contiene. - Attualmente stai condividendo indirizzi email o numeri di telefono sul server di identità %1$s. Dovrai riconnetterti a %2$s per fermarne la condivisione. - Accetta le condizioni di servizio del server di identità (%s) per consentire di essere trovabile per email o numero di telefono. + In questo momento stai condividendo i tuoi indirizzi email o numeri di telefono sull\'Identity Server %1$s. Dovrai riconnetterti a %2$s per interromperne la condivisione. + Accetta i termini di servizio dell\'Identity Server (%s) per permettere ad altri utenti di trovarti tramite la tua email o numero di telefono. Latn - Attiva log dettagliati. - I log dettagliati aiuteranno gli sviluppatori fornendo loro più informazioni quando invii una segnalazione. Anche quando attivi, l\'applicazione non registra i contenuti dei messaggi o altri dati personali. + Attiva i log dettagliati. + I log dettagliati aiuteranno gli sviluppatori fornendo loro molte più informazioni nelle segnalazioni che invii scuotendo il dispositivo. Anche se attivi i log dettagliati, Riot non registra mai i contenuti dei messaggi o altri dati personali. - Riprova dopo avere accettato i termini e condizioni del tuo homeserver. + Riprova dopo avere accettato i termini di servizio del tuo Home Server. - Sembra che il server stia impiegando troppo tempo a rispondere, ciò può essere causato da scarsa connettività o un errore con i nostri server. Riprova fra qualche minuto. + Sembra che il server stia impiegando troppo tempo a rispondere. Ciò può essere causato da una cattiva connessione o da un errore del server. Riprova fra qualche minuto. Invia allegato Apri il pannello di navigazione - Apri il menu di creazione stanza - Chiudi il menu di creazione stanza… + Apri il menu \"Crea nuova stanza\" + Chiudi il menu di \"Crea nuova stanza\"… Crea una nuova conversazione diretta - Crea una nuova stanza - Chiudi il banner di backup chiavi + Crea nuova stanza + Chiudi il banner del Backup delle chiavi Mostra password Nascondi password Salta in fondo @@ -1784,8 +1786,8 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi."Fotocamera Audio Galleria - Adesivo - Errore di gestione dati condivisi + Sticker + Errore nella gestione dei dati condivisi È spam È inappropriato @@ -1808,10 +1810,45 @@ Per essere certo di non perdere nulla, mantieni gli aggiornamenti attivi." - Riot richiede l\'autorizzazione per salvare le tue chiavi E2E su disco. -\n + Riot richiede l\'autorizzazione per salvare le tue chiavi crittografiche sul disco. +\n \nPermetti l\'accesso nel prossimo pop-up per poter esportare le chiavi manualmente. - Non c\'è nessuna connessione di rete al momento + In questo momento non c\'è nessuna connessione di rete + + Conferma la tua password + Non puoi farlo da Riot mobile + E\'necessaria l\'autenticazione + + + Integrazioni + Usa un Integration Manager per gestire bot, bridge, widget e pacchetti di sticker. +\nGli Integration Manager possono ricevere dati di configurazione, modificare widget, mandare inviti alle stanze e modificare permessi a tuo nome. + Permetti l\'uso di integrazioni + Widget + Carica widget + Questo widget è stato aggiunto da: + Utilizzandolo potrebbero esser impostati dei cookie e dei dati potrebbero essere condivisi con %s: + Utilizzandolo potrebbero essere condivisi dei dati con %s: + Il caricamento del widget è fallito. +\n%s + Ricarica widget + Apri nel browser + Revoca l\'accesso per me + + Il tuo nome visualizzato + L\'URL del tuo avatar + Il tuo ID utente + Il tuo tema + ID widget + ID stanza + + + Questo widget vuole usare le seguenti risorse: + Permetti + Blocca tutto + Usare la fotocamera + Usa il microfono + Leggi media protetti da DRM diff --git a/vector/src/main/res/values-sq/strings.xml b/vector/src/main/res/values-sq/strings.xml index 10338ddde9..f2ff6691f3 100644 --- a/vector/src/main/res/values-sq/strings.xml +++ b/vector/src/main/res/values-sq/strings.xml @@ -1158,7 +1158,7 @@ Që të garantoni se s’ju shpëton gjë, thjesht mbajeni të aktivizuar mekani Ju lutemi, jepni një frazëkalim Frazëkalimi është shumë i dobët - Ju lutemi, fshini frazëkalimin, nëse doni që Riot-i të prodhojë një kyç rikthimesh. + Ju lutemi, fshini frazëkalimin, nëse doni që Riot-i të prodhojë një kyç rimarrjesh. S’ka sesione Matrix të gatshëm Mos humbni kurrë mesazhe të fshehtëzuar @@ -1167,16 +1167,16 @@ Që të garantoni se s’ju shpëton gjë, thjesht mbajeni të aktivizuar mekani \nBëni një kopjeruajtje të sigurt të kyçeve tuaj, për të shmangur humbjen e tyre. Caktoni Frazëkalim U bë - Ruani Kyç Rikthimesh + Ruani Kyç Rimarrjesh Ruaje si Skedë - Kyçi i rikthimeve u ruajt te \'%s\'. -\n + Kyçi i rimarrjeve u ruajt te \'%s\'. +\n \nKujdes: kjo kartelë mund të fshihet, nëse çinstalohet aplikacioni. Ju lutemi, bëni një kopje - Jepjani kyçin e rikthimeve… - Po prodhohet Kyç Rikthimesh duke përdorur frazëkalim, ky proces mund të hajë disa sekonda. - Kyç Rikthimesh + Jepjani kyçin e rimarrjeve… + Po prodhohet Kyç Rimarrjesh duke përdorur frazëkalim, ky proces mund të hajë disa sekonda. + Kyç Rimarrjesh Gabim i papritur Nisi Kopjeruajtja Te shërbyesi juaj Home, tani po krijohet në prapaskenë kopjeruajtje e kyçeve tuaj të fshehtëzimit. Kopjeruajtja fillestare mund të dojë disa minuta. @@ -1186,23 +1186,23 @@ Që të garantoni se s’ju shpëton gjë, thjesht mbajeni të aktivizuar mekani Nëse dilni nga llogaria, ose nëse humbni pajisjen tuaj, mund të humbni hyrjen në mesazhet tuaj. Po sillet version kopjeruajtjeje… - Që të shkyçni historikun e mesazheve tuaj të sigurt, përdorni frazëkalimin tuaj të rikthimeve - përdorni kyçin tuaj të rikthimeve - S’dihet frazëkalimi juaj i rikthimeve, mundeni të %s. + Që të shkyçni historikun e mesazheve tuaj të sigurt, përdorni frazëkalimin tuaj të rimarrjeve + përdorni kyçin tuaj të rimarrjeve + S’dihet frazëkalimi juaj i rimarrjeve, mundeni të %s. - Përdorni Kyçin tuaj të Rikthimeve për të shkyçur historikun tuaj të mesazheve të sigurt - Jepni Kyç Rikthimesh + Përdorni Kyçin tuaj të Rimarrjeve për të shkyçur historikun tuaj të mesazheve të sigurt + Jepni Kyç Rimarrjesh - Rikthim Mesazhesh + Rimarrje Mesazhesh - Humbët kyçin tuaj të rikthimeve? Te rregullimet mund të caktoni një të ri. - S’u shfshehtëzua dot kopjeruajtja me këtë frazëkalim: ju lutemi, verifikoni që dhatë frazëkalimin e duhur të rikthimeve. + Humbët kyçin tuaj të rimarrjeve\? Te rregullimet mund të caktoni një të ri. + S’u shfshehtëzua dot kopjeruajtja me këtë frazëkalim: ju lutemi, verifikoni që dhatë frazëkalimin e duhur të rimarrjeve. Gabim lidhjeje: ju lutemi, kontrolloni lidhjen tuaj dhe riprovoni. Po rikthehet kopjeruajtja: Shkyçeni Historikun - Ju lutemi, jepni një kyç rikthimesh - S’u shfshehtëzua dot kopjeruajtja me këtë kyç: ju lutemi, verifikoni që dhatë kyçin e duhur të rikthimeve. + Ju lutemi, jepni një kyç rimarrjesh + S’u shfshehtëzua dot kopjeruajtja me këtë kyç: ju lutemi, verifikoni që dhatë kyçin e duhur të rimarrjeve. Kopjeruajtja u Rikthye %s ! U rikthyen %1$d kyçe sesioni, dhe u shtuan %2$d kyç(e) të rinj që nuk njiheshin nga kjo pajisje @@ -1239,7 +1239,7 @@ Që të garantoni se s’ju shpëton gjë, thjesht mbajeni të aktivizuar mekani S’arrihet të fshihet kopjeruajtje (%s) Fshije Kopjeruajtjen - Të fshihen nga shërbyesi kyçet tuaj të kopjeruajtur të fshehtëzimit? S’do të jeni më në gjendje të përdorni kyçin tuaj të rikthimeve për lexim historiku mesazhesh të fshehtëzuar. + Të fshihen nga shërbyesi kyçet tuaj të kopjeruajtur të fshehtëzimit\? S’do të jeni më në gjendje të përdorni kyçin tuaj të rimarrjeve për lexim historiku mesazhesh të fshehtëzuar. Nëse dilni tani nga llogaria, do të humbni mesazhet tuaj të fshehtëzuar Kopjeruajtja e kyçeve po kryhet. Nëse dilni tani nga llogaria, do të humbni hyrjen te mesazhet tuaj të fshehtëzuar. @@ -1257,7 +1257,7 @@ Që të garantoni se s’ju shpëton gjë, thjesht mbajeni të aktivizuar mekani Jeni i sigurt se doni të dilni? Mënyra e ruajtjes së të dhënave aplikon një filtër specifik, që kështu përditësimet rreth pranish dhe njoftime mbi shtypje në tastierë lihen jashtë. - Rikthim Mesazhesh të Fshehtëzuar + Rimarrje Mesazhesh të Fshehtëzuar Ju lutemi, jepni emër përdoruesi. Fillo të përdorësh Kopjeruajtje Kyçesh (Të mëtejshme) @@ -1268,13 +1268,13 @@ Që të garantoni se s’ju shpëton gjë, thjesht mbajeni të aktivizuar mekani \n \nPër maksimumin e sigurisë, ky duhet të jetë i ndryshëm nga fjalëkalimi juaj për llogarinë. Po Krijohet Kopjeruajtje - Ose, sigurojeni kopjeruajtjen tuaj me një Kyç Rikthimesh, duke e ruajtur këtë diku të parrezikuar. - (Të mëtejshme) Rregullojeni me një Kyç Rikthimesh + Ose, sigurojeni kopjeruajtjen tuaj me një Kyç Rimarrjesh, duke e ruajtur këtë diku të parrezikuar. + (Të mëtejshme) Rregullojeni me një Kyç Rimarrjesh Sukses! Kyçet tuaj po kopjeruhen. - Kyçi juaj i rikthimeve është një lloj rrjeti sigurie - mund ta përdorni për të rifituar hyrje te mesazhet tuaj të fshehtëzuar, nëse harroni frazëkalimin tuaj. -\nMbajeni kyçin tuaj të rikthimeve diku shumë të sigurt, bie fjala, nën një përgjegjës fjalëkalimesh (ose në një kasafortë) - Mbajeni kyçin tuaj të rikthimeve diku në një vend shumë të sigurt, bie fjala, nën një përgjegjës fjalëkalimesh (ose në një kasafortë) + Kyçi juaj i rimarrjeve është një lloj mase sigurie - mund ta përdorni për të rifituar hyrje te mesazhet tuaj të fshehtëzuar, nëse harroni frazëkalimin tuaj. +\nMbajeni kyçin tuaj të rimarrjeve diku shumë të sigurt, bie fjala, nën një përgjegjës fjalëkalimesh (ose në një kasafortë) + Mbajeni kyçin tuaj të rimarrjeve diku në një vend shumë të sigurt, bie fjala, nën një përgjegjës fjalëkalimesh (ose në një kasafortë) Bëra një kopje Ndajeni me të tjerë Mos humbni kurrë mesazhe të fshehtëzuar @@ -1310,14 +1310,14 @@ Që të garantoni se s’ju shpëton gjë, thjesht mbajeni të aktivizuar mekani Fjalëkalimi s’është i vlefshëm Fjalëkalimet s’përputhen - Po përllogariten kyçe rikthimesh… + Po përllogariten kyçe rimarrjesh… Po shkarkohen kyçe… Po importohen kyçe… - Që të përdorni Kopjeruajtje Kyçesh në këtë pajisje, rikthejeni tani përmes frazëkalimit tuaj ose kyçit të rikthimeve. + Që të përdorni Kopjeruajtje Kyçesh në këtë pajisje, rikthejeni tani përmes frazëkalimit tuaj ose kyçit të rimarrjeve. Kopjeruajtje e Re Kyçesh - U pikas një kopjeruajtje e re kyçesh mesazhesh të sigurt. -\n -\nNëse metodën e re të rikthimeve nuk e caktuat ju, dikush mund të jetë duke u rrekur të hyjë në llogarinë tuaj. Ndryshoni menjëherë fjalëkalimin e llogarisë tuaj dhe caktoni një metodë të re rikthimesh, te Rregullimet. + U pikas një kopjeruajtje e re kyçesh mesazhesh të sigurt. +\n +\nNëse metodën e re të rimarrjeve nuk e caktuat ju, dikush mund të jetë duke u rrekur të hyjë në llogarinë tuaj. Ndryshoni menjëherë fjalëkalimin e llogarisë tuaj dhe caktoni një metodë të re rimarrjesh, te Rregullimet. Unë qeshë Përgjigje e pavlefshme zbulimi shërbyesi Home Mundësi Vetëplotësimi Shërbyesi @@ -1435,7 +1435,7 @@ Që të garantoni se s’ju shpëton gjë, thjesht mbajeni të aktivizuar mekani Mirë se vini në vatër! Mbaroni punë me mesazhet e palexuara Biseda - Biseda përmes mesazhesh të drejtpërdrejta do të shfaqet këtu + Biseda përmes mesazhesh të drejtpërdrejta do të shfaqen këtu Dhoma Dhomat tuaja do të shfaqen këtu @@ -1601,7 +1601,7 @@ Që të garantoni se s’ju shpëton gjë, thjesht mbajeni të aktivizuar mekani Caktoni një email për rimarrje llogarie, dhe më vonë të jetë i zbulueshëm (opsionale) nga persona që ju njohin. Caktoni një telefon, dhe më vonë të jetë i zbulueshëm (opsionale) nga persona që ju njohin. - Caktoni një email për rimarrje llogarie. Përdoni email ose telefon që të jeni i zbulueshëm (opsionale) nga persona që ju njohin. + Caktoni një email për rimarrje llogarie. Përdorni email ose telefon që të jeni i zbulueshëm (opsionale) nga persona që ju njohin. Caktoni një email për rimarrje llogarie. Përdorni email ose telefon që të jeni i zbulueshëm (opsionale) nga persona që ju njohin. S’kapet dot shërbyes Home te kjo URL, ju lutemi, kontrollojeni Do të përdoret %s si ndihmë kur shërbyesi juaj Home nuk ofron të tillë (gjatë thirrjes, adresa juaj IP do të ndahet me të tjerë) @@ -1663,7 +1663,7 @@ Që të garantoni se s’ju shpëton gjë, thjesht mbajeni të aktivizuar mekani Ju lutemi, riprovoni sapo të keni pranuar termat dhe kushtet e shërbyesit tuaj Home. - Duket sikur shërbyesit po i duhet shumë kohë për t’u përgjigjur,kjo mund të shkaktohet ose nga lidhje e dobët, ose nga një gabim me shërbyesit tanë. Ju lutemi, riprovoni pas pak. + Duket sikur shërbyesit po i duhet shumë kohë për t’u përgjigjur,kjo mund të shkaktohet ose nga lidhje e dobët, ose nga një gabim me shërbyesin tonë. Ju lutemi, riprovoni pas pak. Dërgo bashkëngjitje @@ -1721,4 +1721,40 @@ Që të garantoni se s’ju shpëton gjë, thjesht mbajeni të aktivizuar mekani Tani për tani s’la lidhje rrjeti + Ripohoni fjalëkalimin tuaj + Këtë s’e bëni dot që nga Riot-i për celular + Lypset mirëfilltësim + + + Integrime + Përdorni një Përgjegjës Integrimesh që të administroni robotë, ura, widget-e dhe paketa ngjitësish. +\nPërgjegjësit e Integrimeve marrin të dhëna formësimi dhe mund të ndryshojnë widget-e, të dërgojnë ftesa për në dhoma dhe të caktojnë shkallë pushteti në emrin tuaj. + Lejo integrim + Widget + Ngarko Widget + Ky widget qe shtuar nga: + Përdorimi i tij mund të sjellë depozitim cookies dhe ndarje të dhënash me %s: + Përdorimi i tij mund të sjellë ndarje të dhënash me %s: + S’u arrit të ngarkohej widget. +\n%s + Ringarkoje widget-in + Hape në shfletues + Shfuqizo hyrje për mua + + Emri juaj në ekran + URL-ja e avatarit tuaj + ID-ja juaj si përdorues + Tema juaj + ID Widget-i + ID Dhome + + + Ky widget dëshiron të përdorë burimet vijuese: + Lejoje + Bllokoji Krejt + Të përdorë kamerën + Të përdorë mikrofonin + Të lexojë Media të mbrojtur me DRM + + Mbyll banderolë kopjeruajtjeje kyçesh diff --git a/vector/src/main/res/values-zh-rCN/strings.xml b/vector/src/main/res/values-zh-rCN/strings.xml index 0a4da5b085..ea1506ca99 100644 --- a/vector/src/main/res/values-zh-rCN/strings.xml +++ b/vector/src/main/res/values-zh-rCN/strings.xml @@ -1471,4 +1471,13 @@ Riot 在后台时的工作将被显著的限制,这可能会影响消息通知 RiotX - -下一代 Matrix 客户端 (已编辑) + + 撤消 + 断开连接 + 检查 + 拒绝 + + 没有设置身份服务器。 + + 服务器的错误配置导致通话失败 diff --git a/vector/src/main/res/values-zh-rTW/strings.xml b/vector/src/main/res/values-zh-rTW/strings.xml index a1d6ceb32b..577c1ef955 100644 --- a/vector/src/main/res/values-zh-rTW/strings.xml +++ b/vector/src/main/res/values-zh-rTW/strings.xml @@ -1660,7 +1660,7 @@ Matrix 中的消息可見度類似于電子郵件。我們忘記您的郵件意 請在您接受您家伺服器的條款與條件前繼續重試。 - 看起來伺服器回應時間似乎太久了,這可能是不良的網路連線或我們的伺服器錯誤所造成。請稍後再試。 + 看起來伺服器回應時間似乎太久了,這可能是不良的網路連線或伺服器錯誤所造成。請稍後再試。 傳送附件 @@ -1720,4 +1720,41 @@ Matrix 中的消息可見度類似于電子郵件。我們忘記您的郵件意 目前沒有網路連線 + Latn + + 確認您的密碼 + 您無法在行動裝置上的 Riot 做這件事 + 需要驗證 + + + 整合 + 使用整合管理員以管理機器人、橋接、小工具與貼紙包。 +\n整合管理員可以代表您接收設定資料,調整小工具、傳送聊天室邀請並設定權力等級。 + 允許整合 + 小工具 + 載入小工具 + 此小工具新增由: + 使用它可能會設定 cookies 並與 %s 分享資料: + 使用它可能會與 %s 分享資料: + 載入小工具失敗。 +\n%s + 重新載入小工具 + 在瀏覽器中開啟 + 撤銷我的存取權限 + + 您的顯示名稱 + 您的大頭貼 URL + 您的使用者 ID + 您的佈景主題 + 小工具 ID + 聊天室 ID + + + 此小工具想要使用下列資源: + 允許 + 阻擋所有 + 使用相機 + 使用麥克風 + 讀取 DRM 保護的媒體 + diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index 2e4d04354b..8dd57df90a 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -5,7 +5,7 @@ en US - + Latn @@ -1801,4 +1801,166 @@ Not all features in Riot are implemented in RiotX yet. Main missing (and coming There is no network connection right now + Block user + + "All messages (noisy)" + "All messages" + "Mentions only" + "Mute" + "Settings" + "Leave the room" + "%1$s made no changes" + Sends the given message as a spoiler + Spoiler + Type keywords to find a reaction. + + You are not ignoring any users + + Long click on a room to see more options + + + %1$s made the room public to whoever knows the link. + %1$s made the room invite only. + Unread messages + + Liberate your communication + Chat with people directly or in groups + Keep conversations private with encryption + Extend & customise your experience + Get started + + Select a server + Just like email, accounts have one home, although you can talk to anyone + Join millions free on the largest public server + Premium hosting for organisations + Learn more + Other + Custom & advanced settings + + Continue + + Connect to %1$s + Connect to Modular + Connect to a custom server + + Sign in to %1$s + Sign Up + Sign In + Continue with SSO + + Modular Address + Address + Premium hosting for organisations + Enter the address of the Modular Riot or Server you want to use + Enter the address of a server or a Riot you want to connect to + + An error occurred when loading the page: %1$s (%2$d) + The application is not able to signin to this homeserver. The homeserver supports the following signin type(s): %1$s.\n\nDo you want to signin using a web client? + Sorry, this server isn’t accepting new accounts. + The application is not able to create an account on this homeserver.\n\nDo you want to signup using a web client? + + This email is not associated to any account. + + + Reset password on %1$s + A verification email will be sent to your inbox to confirm setting your new password. + Next + Email + New password + + Warning! + Changing your password will reset any end-to-end encryption keys on all of your devices, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another device before resetting your password. + Continue + + This email is not linked to any account + + Check your inbox + + A verification email was sent to %1$s. + Tap on the link to confirm your new password. Once you\'ve followed the link it contains, click below. + I have verified my email address + + Success! + Your password has been reset. + You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device. + Back to Sign In + + Warning + Your password is not yet changed.\n\nStop the password change process? + + Set email address + Set an email to recover your account. Later, you can optionally allow people you know to discover you by your email. + Email + Email (optional) + Next + + Set phone number + Set a phone number to optionally allow people you know to discover you. + Please use the international format. + Phone number + Phone number (optional) + Next + + Confirm phone number + + We just sent a code to %1$s. Enter it below to verify it’s you. + Enter code + Send again + Next + + "International phone numbers must start with '+'" + "Phone number seems invalid. Please check it" + + + Sign up to %1$s + Username or email + Password + Next + That username is taken + Warning + Your account is not created yet.\n\nStop the registration process? + + Select matrix.org + Select modular + Select a custom homeserver + Please perform the captcha challenge + Accept terms to continue + + Please check your email + We just sent an email to %1$s.\nPlease click on the link it contains to continue the account creation. + The entered code is not correct. Please check. + Outdated homeserver + This homeserver is running too old a version to connect to. Ask your homeserver admin to upgrade. + + + Too many requests have been sent. You can retry in %1$d second… + Too many requests have been sent. You can retry in %1$d seconds… + + + Seen by + + You’re signed out + It can be due to various reasons:\n\n• You’ve changed your password on another device.\n\n• You have deleted this device from another device.\n\n• The administrator of your server has invalidated your access for security reason. + Sign in again + + You’re signed out + Sign in + + Your homeserver (%1$s) admin has signed you out of your account %2$s (%3$s). + Sign in to recover encryption keys stored exclusively on this device. You need them to read all of your secure messages on any device. + Sign in + Password + Clear personal data + Warning: Your personal data (including encryption keys) is still stored on this device.\n\nClear it if you’re finished using this device, or want to sign in to another account. + Clear all data + + Clear data + Clear all data currently stored on this device?\nSign in again to access your account data and messages. + You’ll lose access to secure messages unless you sign in to recover your encryption keys. + Clear data + The current session is for user %1$s and you provide credentials for user %2$s. This is not supported by RiotX.\nPlease first clear data, then sign in again on another account. + + Your matrix.to link was malformed + The description is too short + diff --git a/vector/src/main/res/values/strings_riotX.xml b/vector/src/main/res/values/strings_riotX.xml index 1e1eabe602..8ee63bc628 100644 --- a/vector/src/main/res/values/strings_riotX.xml +++ b/vector/src/main/res/values/strings_riotX.xml @@ -2,166 +2,7 @@ - Block user - - "All messages (noisy)" - "All messages" - "Mentions only" - "Mute" - "Settings" - "Leave the room" - "%1$s made no changes" - Sends the given message as a spoiler - Spoiler - Type keywords to find a reaction. - - You are not ignoring any users - - Long click on a room to see more options - - - %1$s made the room public to whoever knows the link. - %1$s made the room invite only. - Unread messages - - Liberate your communication - Chat with people directly or in groups - Keep conversations private with encryption - Extend & customise your experience - Get started - - Select a server - Just like email, accounts have one home, although you can talk to anyone - Join millions free on the largest public server - Premium hosting for organisations - Learn more - Other - Custom & advanced settings - - Continue - - Connect to %1$s - Connect to Modular - Connect to a custom server - - Sign in to %1$s - Sign Up - Sign In - Continue with SSO - - Modular Address - Address - Premium hosting for organisations - Enter the address of the Modular Riot or Server you want to use - Enter the address of a server or a Riot you want to connect to - - An error occurred when loading the page: %1$s (%2$d) - The application is not able to signin to this homeserver. The homeserver supports the following signin type(s): %1$s.\n\nDo you want to signin using a web client? - Sorry, this server isn’t accepting new accounts. - The application is not able to create an account on this homeserver.\n\nDo you want to signup using a web client? - - This email is not associated to any account. - - - Reset password on %1$s - A verification email will be sent to your inbox to confirm setting your new password. - Next - Email - New password - - Warning! - Changing your password will reset any end-to-end encryption keys on all of your devices, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another device before resetting your password. - Continue - - This email is not linked to any account - - Check your inbox - - A verification email was sent to %1$s. - Tap on the link to confirm your new password. Once you\'ve followed the link it contains, click below. - I have verified my email address - - Success! - Your password has been reset. - You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device. - Back to Sign In - - Warning - Your password is not yet changed.\n\nStop the password change process? - - Set email address - Set an email to recover your account. Later, you can optionally allow people you know to discover you by your email. - Email - Email (optional) - Next - - Set phone number - Set a phone number to optionally allow people you know to discover you. - Please use the international format. - Phone number - Phone number (optional) - Next - - Confirm phone number - - We just sent a code to %1$s. Enter it below to verify it’s you. - Enter code - Send again - Next - - "International phone numbers must start with '+'" - "Phone number seems invalid. Please check it" - - - Sign up to %1$s - Username - Password - Next - That username is taken - Warning - Your account is not created yet.\n\nStop the registration process? - - Select matrix.org - Select modular - Select a custom homeserver - Please perform the captcha challenge - Accept terms to continue - - Please check your email - We just sent an email to %1$s.\nPlease click on the link it contains to continue the account creation. - The entered code is not correct. Please check. - Outdated homeserver - This homeserver is running too old a version to connect to. Ask your homeserver admin to upgrade. - - - Too many requests have been sent. You can retry in %1$d second… - Too many requests have been sent. You can retry in %1$d seconds… - - - Seen by - - You’re signed out - It can be due to various reasons:\n\n• You’ve changed your password on another device.\n\n• You have deleted this device from another device.\n\n• The administrator of your server has invalidated your access for security reason. - Sign in again - - You’re signed out - Sign in - - Your homeserver (%1$s) admin has signed you out of your account %2$s (%3$s). - Sign in to recover encryption keys stored exclusively on this device. You need them to read all of your secure messages on any device. - Sign in - Password - Clear personal data - Warning: Your personal data (including encryption keys) is still stored on this device.\n\nClear it if you’re finished using this device, or want to sign in to another account. - Clear all data - - Clear data - Clear all data currently stored on this device?\nSign in again to access your account data and messages. - You’ll lose access to secure messages unless you sign in to recover your encryption keys. - Clear data - The current session is for user %1$s and you provide credentials for user %2$s. This is not supported by RiotX.\nPlease first clear data, then sign in again on another account. - - Your matrix.to link was malformed Initial Sync… +