Merge branch 'release/1.5.8' into main

This commit is contained in:
Benoit Marty 2022-11-17 12:48:58 +01:00
commit 57a2860964
268 changed files with 7549 additions and 1730 deletions

View file

@ -24,8 +24,7 @@ body:
### Do the release
- [ ] Make sure `develop` and `main` are up to date (git pull)
- [ ] Checkout develop and create a release with gitflow, branch name `release/1.2.3`
- [ ] Make sure `develop` and `main` are up to date and create a release with gitflow: `git checkout main; git pull; git checkout develop; git pull; git flow release start '1.2.3'`
- [ ] Check the crashes from the PlayStore
- [ ] Check the rageshake with the current dev version: https://github.com/matrix-org/element-android-rageshakes/labels/1.2.3-dev
- [ ] Run the integration test, and especially `UiAllScreensSanityTest.allScreensTest()`
@ -34,12 +33,12 @@ body:
- [ ] Check the file CHANGES.md consistency. It's possible to reorder items (most important changes first) or change their section if relevant. Also an opportunity to fix some typo, or rewrite things
- [ ] Add file for fastlane under ./fastlane/metadata/android/en-US/changelogs
- [ ] (optional) Push the branch and start a draft PR (will not be merged), to check that the CI is happy with all the changes.
- [ ] Finish release with gitflow, delete the draft PR (if created)
- [ ] Push `main` and the new tag `v1.2.3` to origin
- [ ] Checkout `develop`
- [ ] Finish release with gitflow, delete the draft PR (if created): `git flow release finish '1.2.3'`
- [ ] Push `main` and the new tag `v1.2.3` to origin: `git push origin main; git push origin 'v1.2.3'`
- [ ] Checkout `develop`: `git checkout develop`
- [ ] Increase version (versionPatch + 2) in `./vector/build.gradle`
- [ ] Change the value of SDK_VERSION in the file `./matrix-sdk-android/build.gradle`
- [ ] Commit and push `develop`
- [ ] Commit and push `develop`: `git commit -m 'version++'; git push origin develop`
- [ ] Wait for [Buildkite](https://buildkite.com/matrix-dot-org/element-android/builds?branch=main) to build the `main` branch.
- [ ] Run the script `~/scripts/releaseElement.sh`. It will download the APKs from Buildkite check them and sign them.
- [ ] Install the APK on your phone to check that the upgrade went well (no init sync, etc.)

View file

@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Build docs
run: ./gradlew dokkaHtml

View file

@ -60,8 +60,8 @@ jobs:
headers: '{"GraphQL-Features": "projects_next_graphql"}'
query: |
mutation add_to_project($projectid:ID!, $contentid:ID!) {
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
projectNextItem {
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
item {
id
}
}
@ -129,8 +129,8 @@ jobs:
headers: '{"GraphQL-Features": "projects_next_graphql"}'
query: |
mutation add_to_project($projectid:ID!, $contentid:ID!) {
addProjectNextItem(input:{projectId:$projectid contentId:$contentid}) {
projectNextItem {
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
item {
id
}
}

View file

@ -1,3 +1,43 @@
Changes in Element v1.5.8 (2022-11-17)
======================================
Features ✨
----------
- [Session manager] Multi-session signout ([#7418](https://github.com/vector-im/element-android/issues/7418))
- Rich text editor: add full screen mode. ([#7436](https://github.com/vector-im/element-android/issues/7436))
- [Rich text editor] Add plain text mode ([#7452](https://github.com/vector-im/element-android/issues/7452))
- Move TypingView inside the timeline items. ([#7496](https://github.com/vector-im/element-android/issues/7496))
- Push notifications toggle: align implementation for current session ([#7512](https://github.com/vector-im/element-android/issues/7512))
- Voice messages - Persist the playback position across different screens ([#7582](https://github.com/vector-im/element-android/issues/7582))
Bugfixes 🐛
----------
- [Voice Broadcast] Do not display the recorder view for a live broadcast started from another session ([#7431](https://github.com/vector-im/element-android/issues/7431))
- [Session manager] Hide push notification toggle when there is no server support ([#7457](https://github.com/vector-im/element-android/issues/7457))
- Fix rich text editor textfield not growing to fill parent on full screen. ([#7491](https://github.com/vector-im/element-android/issues/7491))
- Fix duplicated mention pills in some cases ([#7501](https://github.com/vector-im/element-android/issues/7501))
- Voice Broadcast - Fix duplicated voice messages in the internal playlist ([#7502](https://github.com/vector-im/element-android/issues/7502))
- When joining a room, the message composer is displayed once the room is loaded. ([#7509](https://github.com/vector-im/element-android/issues/7509))
- Voice Broadcast - Fix error on voice messages in unencrypted rooms ([#7519](https://github.com/vector-im/element-android/issues/7519))
- Fix description of verified sessions ([#7533](https://github.com/vector-im/element-android/issues/7533))
In development 🚧
----------------
- [Voice Broadcast] Improve timeline items factory and handle bad recording state display ([#7448](https://github.com/vector-im/element-android/issues/7448))
- [Voice Broadcast] Stop recording when opening the room after an app restart ([#7450](https://github.com/vector-im/element-android/issues/7450))
- [Voice Broadcast] Improve playlist fetching and player codebase ([#7478](https://github.com/vector-im/element-android/issues/7478))
- [Voice Broadcast] Display an error dialog if the user fails to start a voice broadcast ([#7485](https://github.com/vector-im/element-android/issues/7485))
- [Voice Broadcast] Add seekbar in listening tile ([#7496](https://github.com/vector-im/element-android/issues/7496))
- [Voice Broadcast] Improve the live indicator icon rendering in the timeline ([#7579](https://github.com/vector-im/element-android/issues/7579))
- Voice Broadcast - Add maximum length ([#7588](https://github.com/vector-im/element-android/issues/7588))
SDK API changes ⚠️
------------------
- [Metrics] Add `SpannableMetricPlugin` to support spans within transactions. ([#7514](https://github.com/vector-im/element-android/issues/7514))
- Fix a bug that caused messages with no formatted text to be quoted as "null". ([#7530](https://github.com/vector-im/element-android/issues/7530))
- If message content has no `formattedBody`, default to `body` when editing. ([#7574](https://github.com/vector-im/element-android/issues/7574))
Changes in Element v1.5.7 (2022-11-07)
======================================

View file

@ -26,7 +26,7 @@ buildscript {
classpath libs.gradle.hiltPlugin
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.0.3'
classpath 'com.google.gms:google-services:4.3.14'
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.4.0.2513'
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.5.0.2730'
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.5'
classpath "com.likethesalad.android:stem-plugin:2.2.3"
classpath 'org.owasp:dependency-check-gradle:7.3.0'
@ -45,7 +45,7 @@ plugins {
// Detekt
id "io.gitlab.arturbosch.detekt" version "1.21.0"
// Ksp
id "com.google.devtools.ksp" version "1.7.20-1.0.7"
id "com.google.devtools.ksp" version "1.7.21-1.0.8"
// Dependency Analysis
id 'com.autonomousapps.dependency-analysis' version "1.13.1"

View file

@ -8,7 +8,7 @@ ext.versions = [
def gradle = "7.3.1"
// Ref: https://kotlinlang.org/releases.html
def kotlin = "1.7.20"
def kotlin = "1.7.21"
def kotlinCoroutines = "1.6.4"
def dagger = "2.44"
def appDistribution = "16.0.0-beta05"
@ -17,7 +17,7 @@ def markwon = "4.6.2"
def moshi = "1.14.0"
def lifecycle = "2.5.1"
def flowBinding = "1.2.0"
def flipper = "0.171.1"
def flipper = "0.174.0"
def epoxy = "5.0.0"
def mavericks = "3.0.1"
def glide = "4.14.2"
@ -26,13 +26,13 @@ def jjwt = "0.11.5"
// Temporary version to unblock #6929. Once 0.16.0 is released we should use it, and revert
// the whole commit which set version 0.16.0-SNAPSHOT
def vanniktechEmoji = "0.16.0-SNAPSHOT"
def sentry = "6.6.0"
def sentry = "6.7.0"
def fragment = "1.5.4"
// Testing
def mockk = "1.12.3" // We need to use 1.12.3 to have mocking in androidTest until a new version is released: https://github.com/mockk/mockk/issues/819
def espresso = "3.4.0"
def androidxTest = "1.4.0"
def androidxOrchestrator = "1.4.1"
def androidxOrchestrator = "1.4.2"
def paparazzi = "1.1.0"
ext.libs = [
@ -83,7 +83,7 @@ ext.libs = [
'appdistributionApi' : "com.google.firebase:firebase-appdistribution-api-ktx:$appDistribution",
'appdistribution' : "com.google.firebase:firebase-appdistribution:$appDistribution",
// Phone number https://github.com/google/libphonenumber
'phonenumber' : "com.googlecode.libphonenumber:libphonenumber:8.12.57"
'phonenumber' : "com.googlecode.libphonenumber:libphonenumber:8.13.0"
],
dagger : [
'dagger' : "com.google.dagger:dagger:$dagger",
@ -98,7 +98,7 @@ ext.libs = [
],
element : [
'opusencoder' : "io.element.android:opusencoder:1.1.0",
'wysiwyg' : "io.element.android:wysiwyg:0.2.1"
'wysiwyg' : "io.element.android:wysiwyg:0.4.0"
],
squareup : [
'moshi' : "com.squareup.moshi:moshi:$moshi",

View file

@ -0,0 +1 @@
Qrup mesajlaşma - şifrəli mesajlaşma, qrup söhbəti və video zənglər

View file

@ -0,0 +1 @@
Element - Təhlükəsiz Mesajlaşma

View file

@ -0,0 +1,2 @@
Hlavní změny v této verzi: nové uživatelské rozhraní pro výběr přílohy.
Úplný seznam změn: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Hlavní změny v této verzi: nové uživatelské rozhraní pro výběr přílohy.
Úplný seznam změn: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Die wichtigste Änderung in dieser Version: Neues Anhangauswahl-UI.
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Die wichtigste Änderung in dieser Version: Neue Anhangauswahl-Oberfläche.
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Main changes in this version: bug fixes and improvements.
Full changelog: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Põhilised muutused selles versioonis: uus liides manuste lisamiseks.
Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Põhilised muutused selles versioonis: uus liides manuste valimiseks.
Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
تغییرات عمده در این نگارش: رابط کاربری جدید برای گزینش پیوست.
گزارش دگرگونی کامل: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
تغییرات عمده در این نگارش: رابط کاربری جدید برای گزینش پیوست.
گزارش دگرگونی کامل: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Principaux changements pour cette version : nouvelle interface de sélection dune pièce jointe.
Intégralité des changements : https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Principaux changements pour cette version : nouvelle interface de sélection dune pièce jointe.
Intégralité des changements : https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Perubahan utama dalam versi ini: Antarmuka baru untuk memilih sebuah lampiran.
Catatan perubahan lanjutan: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Perubahan utama dalam versi ini: Antarmuka baru untuk memilih sebuah lampiran.
Catatan perubahan lanjutan: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Principais mudanças nesta versão: novo UI para selecionar um anexo.
Changelog completo: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Principais mudanças nesta versão: novo UI para selecionar um anexo.
Changelog completo: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Hlavné zmeny v tejto verzii: nové používateľské rozhranie na výber príloh.
Úplný zoznam zmien: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Hlavné zmeny v tejto verzii: nové používateľské rozhranie na výber príloh.
Úplný zoznam zmien: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: U lejon përdoruesve të shfaqen si jo në linjë dhe shton një lojtës audio për bashkëngjitje audio
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: U lejon përdoruesve të shfaqen si jo në linjë dhe shton një lojtës audio për bashkëngjitje audio
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Përmirësim i administrimit të përdoruesve të shpërfillur. Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Administrim më i mirë i mesazheve të fshehtëzuar. Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Përdorim i UnifiedPush dhe lejim i përdoruesve të kenë push pa FCM.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Bërje e mundur hapash të përmirësuar hyrje dhe dalje nga llogaria.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Bërje e mundur hapash të përmirësuar hyrje dhe dalje nga llogaria.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Ndreqje të metash dhe përmirësime të ndryshme qëndrueshmërie.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,3 @@
Skema e re e Aplikacionit mund të aktivizohet që nga rregullimet Labs. Ju lutemi, provojeni!
Ndreqje problemesh me njoftim që mungon dhe njëkohësim i gjatë shtues.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Hedhje poshtë MD e aktivizuar, si parazgjedhje.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Skema e re e aplikacionit e aktivizuar, si parazgjedhje!
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: Veçori të reja nën rregullimet Labs: hartues teksti të pasur, administrim i ri pajisjesh, transmetim zanor. Ende nën zhvillim aktivt!
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë version: ndërfaqe e re UI për përzgjedhjen e një bashkëngjitjeje!
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Ndryshimet kryesore në këtë verson: ndërfaqe UI e re për përzgjedhje të një bashkëngjitjeje.
Regjistër i plotë ndryshimesh: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Основні зміни в цій версії: новий інтерфейс для вибору вкладення.
Перелік усіх змін: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
Основні зміни в цій версії: новий інтерфейс для вибору вкладень.
Перелік усіх змін: https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
此版本中的主要變動:選取附件的新使用者介面。
完整的變更紀錄https://github.com/vector-im/element-android/releases

View file

@ -0,0 +1,2 @@
此版本中的主要變動:選取附件的新使用者介面。
完整的變更紀錄https://github.com/vector-im/element-android/releases

View file

@ -103,14 +103,12 @@ class VideoViewHolder constructor(itemView: View) :
views.videoView.setOnPreparedListener {
stopTimer()
countUpTimer = CountUpTimer(100).also {
it.tickListener = object : CountUpTimer.TickListener {
override fun onTick(milliseconds: Long) {
val duration = views.videoView.duration
val progress = views.videoView.currentPosition
val isPlaying = views.videoView.isPlaying
// Log.v("FOO", "isPlaying $isPlaying $progress/$duration")
eventListener?.get()?.onEvent(AttachmentEvents.VideoEvent(isPlaying, progress, duration))
}
it.tickListener = CountUpTimer.TickListener {
val duration = views.videoView.duration
val progress = views.videoView.currentPosition
val isPlaying = views.videoView.isPlaying
// Log.v("FOO", "isPlaying $isPlaying $progress/$duration")
eventListener?.get()?.onEvent(AttachmentEvents.VideoEvent(isPlaying, progress, duration))
}
it.resume()
}

View file

@ -66,7 +66,7 @@ class CountUpTimer(private val intervalInMs: Long = 1_000) {
coroutineScope.cancel()
}
interface TickListener {
fun interface TickListener {
fun onTick(milliseconds: Long)
}
}

View file

@ -1167,4 +1167,12 @@
<string name="login_reset_password_email_hint">البريد الإلكتروني</string>
<string name="login_reset_password_password_hint">كلمة السر الجديدة</string>
<string name="login_reset_password_submit">التالي</string>
</resources>
<plurals name="x_selected">
<item quantity="zero">صفر</item>
<item quantity="one">واحد</item>
<item quantity="two">اثنان</item>
<item quantity="few">قليلة</item>
<item quantity="many">كثيرة</item>
<item quantity="other">اخرى</item>
</plurals>
</resources>

View file

@ -20,7 +20,7 @@
<string name="notice_placed_voice_call">%s səsli zəng etdi.</string>
<string name="notice_answered_call">%s zəngə cavab verdi.</string>
<string name="notice_ended_call">%s zəng başa çatdı.</string>
<string name="notice_made_future_room_visibility">"%1$s gələcək otaq tarixçəsini %2$s-ə görünən etdi"</string>
<string name="notice_made_future_room_visibility">%1$s gələcək otaq tarixçəsini %2$s-ə görünən etdi</string>
<string name="notice_room_visibility_invited">bütün otaq üzvləri, dəvət olunduğu andan.</string>
<string name="notice_room_visibility_joined">bütün otaq üzvləri, qoşulduğu andan.</string>
<string name="notice_room_visibility_shared">bütün otaq üzvləri.</string>
@ -48,8 +48,9 @@
\nKriptografiyanın idxalı</string>
<string name="initial_sync_start_importing_account_rooms">İlkin sinxronizasiya:
\nOtaqlar idxalı</string>
<string name="initial_sync_start_importing_account_joined_rooms">İlkin sinxronizasiya:
\nOtaqlara daxil olmaq</string>
<string name="initial_sync_start_importing_account_joined_rooms">İlkin sinxronizasiya:
\nSöhbətləriniz yüklənilir
\nƏgər çoxlu otaqlara qoşulmusunuzsa, bu, bir az vaxt apara bilər</string>
<string name="initial_sync_start_importing_account_invited_rooms">İlkin sinxronizasiya:
\nDəvət olunmuş otaqların idxalı</string>
<string name="initial_sync_start_importing_account_left_rooms">İlkin sinxronizasiya:
@ -133,4 +134,6 @@
<string name="notice_room_third_party_invite_by_you">Otağa qoşulmaq üçün %1$s-a dəvət göndərdiniz</string>
<string name="notice_room_server_acl_updated_title">%s, bu otaq üçün server ACL-lərini dəyişdi.</string>
<string name="notice_room_server_acl_set_allowed">• %s ilə uyğunlaşan serverlərə icazə verildi.</string>
<string name="notice_room_third_party_revoked_invite_by_you">Siz %1$s üçün otağa qoşulmaq dəvətin ləğv etdiniz</string>
<string name="notice_direct_room_third_party_invite_by_you">%1$s-ı dəvət etdiniz</string>
</resources>

View file

@ -2836,4 +2836,5 @@
<string name="attachment_type_selector_file">Adjunts</string>
<string name="attachment_type_selector_sticker">Adhesius</string>
<string name="attachment_type_selector_gallery">Galeria</string>
<string name="attachment_type_selector_text_formatting">Format de text</string>
</resources>

View file

@ -2891,4 +2891,12 @@
<item quantity="few">%1$d vybrané</item>
<item quantity="other">%1$d vybraných</item>
</plurals>
<string name="rich_text_editor_full_screen_toggle">Přepnutí režimu celé obrazovky</string>
<string name="attachment_type_selector_text_formatting">Formátování textu</string>
<string name="error_voice_broadcast_already_in_progress_message">Již nahráváte hlasové vysílání. Ukončete prosím aktuální hlasové vysílání a zahajte nové.</string>
<string name="error_voice_broadcast_blocked_by_someone_else_message">Hlasové vysílání už nahrává někdo jiný. Počkejte, až jeho hlasové vysílání skončí, a zahajte nové.</string>
<string name="error_voice_broadcast_permission_denied_message">Nemáte potřebná oprávnění k zahájení hlasového vysílání v této místnosti. Obraťte se na správce místnosti, aby vám zvýšil oprávnění.</string>
<string name="error_voice_broadcast_unauthorized_title">Nelze zahájit nové hlasové vysílání</string>
<string name="a11y_voice_broadcast_fast_backward">Přetočení o 30 sekund zpět</string>
<string name="a11y_voice_broadcast_fast_forward">Přetočení o 30 sekund dopředu</string>
</resources>

View file

@ -2835,4 +2835,12 @@
<item quantity="one">%1$d ausgewählt</item>
<item quantity="other">%1$d ausgewählt</item>
</plurals>
<string name="error_voice_broadcast_permission_denied_message">Du hast nicht die nötigen Berechtigungen, um eine Sprachübertragung in diesem Raum zu starten. Kontaktiere einen Raumadministrator, um deine Berechtigungen anzupassen.</string>
<string name="error_voice_broadcast_unauthorized_title">Sprachübertragung kann nicht gestartet werden</string>
<string name="rich_text_editor_full_screen_toggle">Vollbildmodus umschalten</string>
<string name="attachment_type_selector_text_formatting">Textformatierung</string>
<string name="error_voice_broadcast_already_in_progress_message">Du zeichnest bereits eine Sprachübertragung auf. Bitte beende die laufende Übertragung, um eine neue zu beginnen.</string>
<string name="error_voice_broadcast_blocked_by_someone_else_message">Jemand anderes nimmt bereits eine Sprachübertragung auf. Warte auf das Ende der Übertragung, bevor du eine neue startest.</string>
<string name="a11y_voice_broadcast_fast_forward">30 Sekunden vorspulen</string>
<string name="a11y_voice_broadcast_fast_backward">30 Sekunden zurückspulen</string>
</resources>

View file

@ -2827,4 +2827,12 @@
<item quantity="one">%1$d valitud</item>
<item quantity="other">%1$d valitud</item>
</plurals>
<string name="rich_text_editor_full_screen_toggle">Lülita täisekraanivaade sisse/välja</string>
<string name="attachment_type_selector_text_formatting">Tekstivorming</string>
<string name="error_voice_broadcast_already_in_progress_message">Sa juba salvestad ringhäälingukõnet. Uue alustamiseks palun lõpeta eelmine salvestus.</string>
<string name="error_voice_broadcast_blocked_by_someone_else_message">Keegi juba salvestab ringhäälingukõnet. Uue ringhäälingukõne salvestamiseks palun oota, kuni see teine ringhäälingukõne on lõppenud.</string>
<string name="error_voice_broadcast_permission_denied_message">Sul pole piisavalt õigusi selles jututoas ringhäälingukõne algatamiseks. Õiguste lisamiseks palun võta ühendust jututoa haldajaga.</string>
<string name="error_voice_broadcast_unauthorized_title">Uue ringhäälingukõne alustamine pole võimalik</string>
<string name="a11y_voice_broadcast_fast_backward">Keri tagasi 30 sekundi kaupa</string>
<string name="a11y_voice_broadcast_fast_forward">Keri edasi 30 sekundi kaupa</string>
</resources>

View file

@ -2802,4 +2802,27 @@
<item quantity="one">۱ گزیده</item>
<item quantity="other">%1$d گزیده</item>
</plurals>
<string name="error_voice_broadcast_permission_denied_message">اجازه‌های لازم برای آغاز پخش صوتی در این اتاق را ندارید. برای ارتقای اجازه‌هایتان با یک مدیر اتاق تماس بگیرید.</string>
<string name="error_voice_broadcast_blocked_by_someone_else_message">فرد دیگری در حال ضبط یک پخش صوتی است. برای آغاز یک پخش جدید، منتظر پایان پخشش بمانید.</string>
<string name="qr_code_login_header_connected_description">با بررسی افزاره‌های وارد شده‌تان باید کد زیر را ببینید. تأیید کنید که این کد با آن افزاره مطابق است:</string>
<string name="error_voice_broadcast_already_in_progress_message">دارید یک پخش صوتی ضبط می‌کنید. لطفاً برای آغاز یک پخش جدید، به پخش کنونی پایان دهید.</string>
<string name="some_devices_will_not_be_able_to_decrypt">⚠ افزاره‌های تأییدنشده‌ای در این اتاق وجود دارند. آن‌ها قادر به رمزگشایی پیام‌هایی که فرستاده‌اید نیستند.</string>
<string name="qr_code_login_header_scan_qr_code_description">استفاده از دوربین روی این افزاره برای پویش کد QR نشان داده شده روی افزارهٔ دیگرتان:</string>
<string name="labs_enable_client_info_recording_summary">ضبط نام کارخواه، نگارش و نشانی برای بازشناسی آسان‌تر نشست‌ها در مدیر نشست.</string>
<string name="room_settings_global_block_unverified_info_text">🔒 رمزگذاری به نشست‌های تأیید شده را فقط برای تمامی اتاق‌ها در تنظیمات امنیت به کار انداخته‌اید.</string>
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
<item quantity="one">خارج شدن از نشست‌های قدیمی (۱ روز یا بیش‌تر) که دیگر استفاده نمی‌کنید را در نظر داشته باشید.</item>
<item quantity="other">خارج شدن از نشست‌های قدیمی (%1$d روز یا بیش‌تر) که دیگر استفاده نمی‌کنید را در نظر داشته باشید.</item>
</plurals>
<string name="labs_enable_voice_broadcast_summary">توانایی ضبط و فرستادن پخش صدا در خط زمانی اتاق.</string>
<string name="qr_code_login_header_show_qr_code_link_a_device_description">پویش کد QR زیر با افزاره‌ای که خارج شده.</string>
<string name="qr_code_login_header_show_qr_code_new_device_description">استفاده از افزارهٔ وارد شده‌تان برای پویش کد QR زیر:</string>
<string name="error_check_network">چیزی اشتباه پیش رفت. لطفاً اتّصال شبکه‌تان را بررسی و دوباره تلاش کنید.</string>
<string name="settings_troubleshoot_test_system_settings_permission_failed">${app_name} برای نمایش آگاهی‌ها نیازمند اجازه است.
\nلطفاً اجازه را اعطا کنید.</string>
<string name="error_voice_broadcast_unauthorized_title">نمی‌توان پخش صدایی جدید را آغاز کرد</string>
<string name="rich_text_editor_full_screen_toggle">تغییر حالت تمام‌صفحه</string>
<string name="a11y_voice_broadcast_fast_forward">۳۰ ثانیه پیش‌روی</string>
<string name="a11y_voice_broadcast_fast_backward">۳۰ ثانیه پس‌روی</string>
<string name="attachment_type_selector_text_formatting">قالب‌بندی متن</string>
</resources>

View file

@ -2836,4 +2836,12 @@
<item quantity="one">%1$d sélectionné</item>
<item quantity="other">%1$d sélectionnés</item>
</plurals>
<string name="rich_text_editor_full_screen_toggle">Basculer en mode plein écran</string>
<string name="attachment_type_selector_text_formatting">Formatage de texte</string>
<string name="error_voice_broadcast_already_in_progress_message">Vous êtes déjà en train de réaliser une diffusion audio. Veuillez terminer votre diffusion audio actuelle pour en démarrer une nouvelle.</string>
<string name="error_voice_broadcast_blocked_by_someone_else_message">Une autre personne est déjà en train de réaliser une diffusion audio. Attendez que sa diffusion audio soit terminée pour en démarrer une nouvelle.</string>
<string name="error_voice_broadcast_permission_denied_message">Vous navez pas les permissions requises pour démarrer une nouvelle diffusion audio dans ce salon. Contactez un administrateur du salon pour mettre-à-jour vos permissions.</string>
<string name="error_voice_broadcast_unauthorized_title">Impossible de commencer une nouvelle diffusion audio</string>
<string name="a11y_voice_broadcast_fast_forward">Avance rapide de 30 secondes</string>
<string name="a11y_voice_broadcast_fast_backward">Retour rapide de 30 secondes</string>
</resources>

View file

@ -2783,4 +2783,12 @@ Di masa mendatang proses verifikasi ini akan dimutakhirkan.</string>
<plurals name="x_selected">
<item quantity="other">%1$d dipilih</item>
</plurals>
<string name="rich_text_editor_full_screen_toggle">Ubah mode layar penuh</string>
<string name="attachment_type_selector_text_formatting">Format teks</string>
<string name="error_voice_broadcast_already_in_progress_message">Anda sedang merekam sebuah siaran suara. Mohon akhiri siaran suara Anda saat ini untuk memulai yang baru.</string>
<string name="error_voice_broadcast_blocked_by_someone_else_message">Orang lain sedang merekam sebuah siaran suara. Tunggu untuk siaran suara berakhir untuk memulai yang baru.</string>
<string name="error_voice_broadcast_permission_denied_message">Anda tidak memiliki izin yang dibutuhkan untuk memulai sebuah siaran suara di ruangan ini. Hubungi sebuah administrator ruangan untuk meningkatkan izin Anda.</string>
<string name="error_voice_broadcast_unauthorized_title">Tidak dapat memulai siaran suara baru</string>
<string name="a11y_voice_broadcast_fast_forward">Maju cepat 30 detik</string>
<string name="a11y_voice_broadcast_fast_backward">Mundur cepat 30 detik</string>
</resources>

View file

@ -2459,4 +2459,18 @@
<string name="create_room">ルームを作成</string>
<string name="start_chat">チャットを開始</string>
<string name="all_chats">全ての会話</string>
<string name="home_empty_no_rooms_title">${app_name}にようこそ、
\n%s。</string>
<string name="device_manager_learn_more_sessions_verified_title">認証済のセッション</string>
<string name="device_manager_sessions_sign_in_with_qr_code_title">QRコードでサインイン</string>
<string name="labs_enable_session_manager_title">新しいセッションマネージャーを有効にする</string>
<string name="qr_code_login_header_show_qr_code_title">QRコードでサインイン</string>
<string name="three">3</string>
<string name="two">2</string>
<string name="one">1</string>
<string name="qr_code_login_header_failed_other_description">リクエストが失敗しました。</string>
<string name="qr_code_login_scan_qr_code_button">QRコードをスキャン</string>
<string name="login_scan_qr_code">QRコードをスキャン</string>
<string name="qr_code_login_header_scan_qr_code_title">QRコードをスキャン</string>
<string name="qr_code_login_header_failed_invalid_qr_code_description">QRコードが不正です。</string>
</resources>

View file

@ -2836,4 +2836,12 @@
<item quantity="one">%1$d selecionada(o)</item>
<item quantity="other">%1$d selecionadas(os)</item>
</plurals>
<string name="error_voice_broadcast_blocked_by_someone_else_message">Alguma outra pessoa já está gravando um broadcast de voz. Espere que o broadcast de voz dela termine para começar um novo.</string>
<string name="rich_text_editor_full_screen_toggle">Alternar modo de tela cheia</string>
<string name="attachment_type_selector_text_formatting">Formatação de texto</string>
<string name="error_voice_broadcast_already_in_progress_message">Você já está gravando um broadcast de voz. Por favor termine seu broadcast de voz atual para começar um novo.</string>
<string name="error_voice_broadcast_permission_denied_message">Você não tem as permissões requeridas para começar um broadcast de voz nesta sala. Contacte um/uma administrador(a) para fazer upgrade de suas permissões.</string>
<string name="error_voice_broadcast_unauthorized_title">Não dá pra começar um novo broadcast de voz</string>
<string name="a11y_voice_broadcast_fast_forward">Avançar rápido 30 segundos</string>
<string name="a11y_voice_broadcast_fast_backward">Retroceder 30 segundos</string>
</resources>

View file

@ -2653,7 +2653,7 @@
<string name="device_manager_sessions_other_description">V záujme čo najlepšieho zabezpečenia, overte svoje relácie a odhláste sa z každej relácie, ktorú už nepoznáte alebo nepoužívate.</string>
<string name="device_manager_sessions_other_title">Iné relácie</string>
<string name="settings_sessions_list">Relácie</string>
<string name="a11y_open_spaces">Otvoriť zoznam priestorov</string>
<string name="a11y_open_spaces">Zoznam priestorov</string>
<string name="a11y_create_message">Vytvoriť novú konverzáciu alebo miestnosť</string>
<string name="room_list_filter_people">Ľudia</string>
<string name="room_list_filter_favourites">Obľúbené</string>
@ -2891,4 +2891,12 @@
<item quantity="few">%1$d vybraté</item>
<item quantity="other">%1$d vybraných</item>
</plurals>
<string name="rich_text_editor_full_screen_toggle">Prepnutie režimu na celú obrazovku</string>
<string name="attachment_type_selector_text_formatting">Formátovanie textu</string>
<string name="error_voice_broadcast_already_in_progress_message">Už nahrávate hlasové vysielanie. Ukončite aktuálne hlasové vysielanie a spustite nové.</string>
<string name="error_voice_broadcast_blocked_by_someone_else_message">Niekto iný už nahráva hlasové vysielanie. Počkajte, kým sa skončí jeho hlasové vysielanie, a potom spustite nové.</string>
<string name="error_voice_broadcast_permission_denied_message">Nemáte požadované oprávnenia na spustenie hlasového vysielania v tejto miestnosti. Obráťte sa na správcu miestnosti, aby vám rozšíril oprávnenia.</string>
<string name="error_voice_broadcast_unauthorized_title">Nie je možné spustiť nové hlasové vysielanie</string>
<string name="a11y_voice_broadcast_fast_backward">Rýchle posunutie dozadu o 30 sekúnd</string>
<string name="a11y_voice_broadcast_fast_forward">Rýchle posunutie dopredu o 30 sekúnd</string>
</resources>

View file

@ -601,9 +601,7 @@
<string name="settings_send_markdown_summary">Formatojini mesazhet duke përdorur sintaksën Markdown përpara se të dërgohen. Kjo lejon formatim të thelluar, f.v., përdorimi i yllthit për ta shfaqur tekstin me të pjerrëta.</string>
<string name="settings_show_join_leave_messages_summary">Nuk prek ftesat, heqjet dhe dëbimet.</string>
<string name="settings_opt_in_of_analytics_summary">${app_name}-i grumbullon të dhëna analitike anonime që të na lejojë ta përmirësojmë aplikacionin.</string>
<string name="settings_unignore_user">Të shfaqen krejt mesazhet prej %s\?
\n
\nKini parasysh që ky veprim do të sjellë rinisjen e aplikacionit dhe mund të hajë ca kohë.</string>
<string name="settings_unignore_user">Të shfaqen krejt mesazhet prej %s\?</string>
<string name="settings_labs_native_camera_summary">Nis kamerën e sistemit, në vend se skenën e kamerës vetjake.</string>
<string name="command_description_emote">Shfaq veprimin</string>
<string name="command_description_markdown">On/Off sintakse Markdown</string>
@ -897,10 +895,10 @@
<string name="send_suggestion_failed">Su arrit të dërgohej sugjerimi (%s)</string>
<string name="settings_labs_show_hidden_events_in_timeline">Shfaq te rrjedha kohore akte të fshehura</string>
<string name="settings_integration_manager">Përgjegjës integrimesh</string>
<string name="push_gateway_item_app_id">app_id:</string>
<string name="push_gateway_item_push_key">push_key:</string>
<string name="push_gateway_item_app_display_name">app_display_name:</string>
<string name="push_gateway_item_device_name">emër_sesioni:</string>
<string name="push_gateway_item_app_id">ID Aplikacioni:</string>
<string name="push_gateway_item_push_key"/>
<string name="push_gateway_item_app_display_name">Emër Aplikacioni Në Ekran:</string>
<string name="push_gateway_item_device_name">Emër Sesioni Në Ekran:</string>
<string name="bottom_action_people_x">Mesazhe të Drejtpërdrejtë</string>
<string name="send_file_step_idle">Po pritet…</string>
<string name="send_file_step_encrypting_thumbnail">Po fshehtëzohet miniatura…</string>
@ -949,11 +947,11 @@
<string name="settings_discovery_identity_server_info">Po përdorni %1$s për të zbuluar dhe për të qenë i zbulueshëm nga kontakte ekzistues që njihni.</string>
<string name="settings_discovery_identity_server_info_none">Spo përdorni ndonjë shërbyes identitetesh. Që të zbuloni dhe të jini i zbulueshëm nga kontakte ekzistuese që njihni, formësoni një të tillë më poshtë.</string>
<string name="settings_discovery_emails_title">Adresa email të zbulueshme</string>
<string name="settings_discovery_no_mails">Mundësitë rreth zbulimesh do të shfaqen sapo të keni shtuar një email.</string>
<string name="settings_discovery_no_mails">Mundësitë e zbulimit do të shfaqen sapo të keni shtuar një adresë email.</string>
<string name="settings_discovery_no_msisdn">Mundësi zbulimesh do të shfaqen sapo të keni shtuar një numër telefoni.</string>
<string name="settings_discovery_disconnect_identity_server_info">Shkëputja prej shërbyesit tuaj të identiteteve do të thotë se sdo të jeni i zbulueshëm prej përdoruesish të tjerë dhe sdo të jeni në gjendje të ftoni të tjerë me email ose telefon.</string>
<string name="settings_discovery_msisdn_title">Numra telefoni të zbulueshëm</string>
<string name="settings_discovery_confirm_mail">Ju dërguam një email ripohimi te %s, hapeni dhe klikoni mbi lidhjen e ripohimit</string>
<string name="settings_discovery_confirm_mail">Ju dërguam një email te %s, hapeni dhe klikoni mbi lidhjen e ripohimit</string>
<string name="settings_discovery_enter_identity_server">Jepni një URL shërbyesi identitetesh</string>
<string name="settings_discovery_bad_identity_server">Su lidh dot te shërbyes identitetesh</string>
<string name="settings_discovery_please_enter_server">Ju lutemi, jepni URL-në e shërbyesit të identiteteve</string>
@ -1080,7 +1078,7 @@
<string name="login_registration_not_supported">Aplikacioni sështë në gjendje të krijojë llogari në këtë shërbyes Home.
\n
\nDoni të regjistroheni duke përdorur një klient web\?</string>
<string name="login_login_with_email_error">Ky emai sështë përshoqëruar me ndonjë llogari.</string>
<string name="login_login_with_email_error">Kjo adresë email sështë e përshoqëruar me ndonjë llogari.</string>
<string name="login_reset_password_on">Ricaktoni fjalëkalimin në %1$s</string>
<string name="login_reset_password_notice">Te mesazhet tuaj do të dërgohet një email verifikimi, për të ripohuar caktimin e fjalëkalimit tuaj të ri.</string>
<string name="login_reset_password_submit">Pasuesi</string>
@ -1089,7 +1087,7 @@
<string name="login_reset_password_warning_title">Kujdes!</string>
<string name="login_reset_password_warning_content">Ndryshimi i fjalëkalimit tuaj do të sjellë zerim të çfarëdo kyçesh fshehtëzimi skaj-më-skaj në krejt sesionet tuaj, duke e bërë të palexueshëm historikun e bisedave të fshehtëzuara. Ujdisni një Kopjeruajtje Kyçesh ose eksportoni kyçet e dhomës tuaj prej një tjetër sesioni, përpara se të ricaktoni fjalëkalimin tuaj.</string>
<string name="login_reset_password_warning_submit">Vazhdo</string>
<string name="login_reset_password_error_not_found">Ky email sështë i lidhur me ndonjë llogari</string>
<string name="login_reset_password_error_not_found">Kjo adresë email sështë e lidhur me ndonjë llogari</string>
<string name="login_reset_password_mail_confirmation_title">Kontrolloni te mesazhet tuaj të marrë</string>
<string name="login_reset_password_mail_confirmation_notice">Një email verifikimi u dërgua te %1$s.</string>
<string name="login_reset_password_mail_confirmation_notice_2">Prekni mbi lidhjen që të ripohohet fjalëkalimi juaj i ri. Pasi të keni ndjekur lidhjen që përmban, klikoni më poshtë.</string>
@ -1103,7 +1101,7 @@
\n
\nTë ndalet procesi i ndryshimit të fjalëkalimit\?</string>
<string name="login_set_email_title">Caktoni adresë email</string>
<string name="login_set_email_notice">Caktoni një email për rimarrje të llogarisë tuaj. Më vonë, mundeni të lejoni persona që njihni tju zbulojnë përmes email-it tuaj.</string>
<string name="login_set_email_notice">Caktoni një adresë email për rimarrje të llogarisë tuaj. Më vonë, mundeni të lejoni persona që njihni tju zbulojnë përmes kësaj adrese.</string>
<string name="login_set_email_mandatory_hint">Email</string>
<string name="login_set_email_optional_hint">Email (në daçi)</string>
<string name="login_set_email_submit">Pasuesi</string>
@ -1445,7 +1443,7 @@
<string name="event_redacted">Mesazhi u fshi</string>
<string name="settings_show_redacted">Shfaq mesazhe të hequr</string>
<string name="settings_show_redacted_summary">Shfaq një vendmbajtëse për mesazhe të hequr</string>
<string name="settings_discovery_confirm_mail_not_clicked">Ju dërguam një email ripohimi te %s, ju lutemi, së pari, shihni email-in tuaj dhe klikoni mbi lidhjen e ripohimit</string>
<string name="settings_discovery_confirm_mail_not_clicked">Ju dërguam një email te %s, ju lutemi, së pari, shihni email-in tuaj dhe klikoni mbi lidhjen e ripohimit</string>
<string name="settings_text_message_sent_wrong_code">Kodi i verifikimit sështë i saktë.</string>
<string name="uploads_media_title">MEDIA</string>
<string name="uploads_media_no_result">Ska media në këtë dhomë</string>
@ -1518,9 +1516,7 @@
\n
\nKëtë veprim mund ta zhbëni në çfarëdo kohe, te rregullimet e përgjithshme.</string>
<string name="room_participants_action_unignore_title">Hiqe shpërfilljen e përdoruesit</string>
<string name="room_participants_action_unignore_prompt_msg">Heqja e shpërfilljes së këtij përdoruesi do të shfaqë sërish krejt mesazhet prej tij.
\n
\nKini parasysh se ky veprim do të sjellë rinisjen e aplikacionit dhe do të hajë ca kohë.</string>
<string name="room_participants_action_unignore_prompt_msg">Heqja e shpërfilljes së këtij përdoruesi do të shfaqë sërish krejt mesazhet prej tij.</string>
<string name="room_participants_action_cancel_invite_title">Anuloje ftesën</string>
<string name="room_participants_action_cancel_invite_prompt_msg">Jeni i sigurt se doni të anulohet ftesa për këtë përdorues\?</string>
<string name="room_participants_remove_title">Përzëre përdoruesin</string>
@ -1534,7 +1530,7 @@
<string name="room_participants_unban_prompt_msg">Heqja e dëbimit përdoruesit do ti lejojë të marrë pjesë sërish në dhomë.</string>
<string name="settings_phone_number_empty">Te llogaria juaj sështë shtuar ndonjë numër telefoni</string>
<string name="settings_emails">Adresa email</string>
<string name="settings_emails_empty">Te llogaria juaj sështë shtuar ndonjë email</string>
<string name="settings_emails_empty">Te llogaria juaj sështë shtuar ndonjë adresë email</string>
<string name="settings_phone_numbers">Numra telefoni</string>
<string name="settings_remove_three_pid_confirmation_content">Të hiqet %s\?</string>
<string name="error_threepid_auth_failed">Sigurohuni që keni klikuar te lidhja në email-in që ju kemi dërguar.</string>
@ -1552,7 +1548,7 @@
<string name="disabled_integration_dialog_title">Integrimet janë të çaktivizuara</string>
<string name="disabled_integration_dialog_content">Që të bëhet kjo, aktivizoni “Lejo integrime”, te Rregullimet.</string>
<string name="settings_emails_and_phone_numbers_title">Email-e dhe numra telefonash</string>
<string name="settings_emails_and_phone_numbers_summary">Administroni email-e dhe numra telefonash të lidhur me llogarinë tuaj Matrix</string>
<string name="settings_emails_and_phone_numbers_summary">Administroni adresa email dhe numra telefonash të lidhur me llogarinë tuaj Matrix</string>
<plurals name="room_settings_banned_users_count">
<item quantity="one">%d përdorues i dëbuar</item>
<item quantity="other">%d përdorues të dëbuar</item>
@ -1605,7 +1601,7 @@
<string name="auth_invalid_login_deactivated_account">Kjo llogari është çaktivizuar.</string>
<string name="error_saving_media_file">Su ruajt dot kartelë media</string>
<string name="confirm_your_identity_quad_s">Ripohoni identitetin tuaj duke verifikuar këto kredenciale hyrjeje, duke i akorduar hyrje te mesazhe të fshehtëzuar.</string>
<string name="identity_server_error_bulk_sha256_not_supported">Për privatësinë tuaj, ${app_name}-i mbulon vetëm dërgim email-esh dhe numrash telefoni përdoruesi të koduar.</string>
<string name="identity_server_error_bulk_sha256_not_supported">Për privatësinë tuaj, ${app_name}-i mbulon vetëm dërgim adresash email dhe numrash telefoni përdoruesi të koduar.</string>
<string name="power_level_edit_title">Caktoni rol</string>
<string name="power_level_title">Rol</string>
<string name="a11y_open_chat">Hapni fjalosje</string>
@ -1769,7 +1765,7 @@
<string name="attachment_viewer_item_x_of_y">%1$d nga %2$d</string>
<string name="settings_discovery_consent_action_give_consent">Jepe pranimin</string>
<string name="settings_discovery_consent_action_revoke">Shfuqizoje pranimin tim</string>
<string name="settings_discovery_consent_notice_on">Keni dhënë pranimin tuaj për të dërguar email-e dhe numra telefonash te ky shërbyes identitetesh që të zbulojë përdorues të tjerë prej kontakteve tuaj.</string>
<string name="settings_discovery_consent_notice_on">Keni dhënë pranimin tuaj për të dërguar adresa email-e dhe numra telefonash te ky shërbyes identitetesh që të zbulojë përdorues të tjerë prej kontakteve tuaj.</string>
<string name="settings_discovery_consent_title">Dërgo email-e dhe numra telefonash</string>
<string name="direct_room_user_list_suggestions_title">Sugjerime</string>
<string name="direct_room_user_list_known_title">Përdorues të Ditur</string>
@ -2135,7 +2131,7 @@
<string name="settings_notification_mentions_and_keywords">Përmendje dhe Fjalëkyçe</string>
<string name="settings_notification_default">Njoftime Parazgjedhje</string>
<string name="link_this_email_with_your_account">%s te Rregullimet, që të merrni ftesa drejt e në ${app_name}.</string>
<string name="link_this_email_settings_link">Lidheni këtë email me llogarinë tuaj</string>
<string name="link_this_email_settings_link">Lidheni këtë adresë email me llogarinë tuaj</string>
<string name="this_invite_to_this_space_was_sent">Kjo ftesë për te kjo hapësirë u dërgua te %s që sështë i përshoqëruar me llogarinë tuaj</string>
<string name="this_invite_to_this_room_was_sent">Kjo ftesë për te kjo dhomë qe dërguar për %s që sështë i përshoqëruar me llogarinë tuaj</string>
<string name="all_rooms_youre_in_will_be_shown_in_home">Krejt dhomat ku gjendeni do të shfaqen te Home.</string>
@ -2203,7 +2199,7 @@
<string name="room_settings_space_access_title">Hyrje në hapësirë</string>
<string name="room_settings_access_rules_pref_dialog_title">Kush mund të hyjë\?</string>
<string name="settings_notification_emails_enable_for_email">Aktivizo njoftime me email për %s</string>
<string name="settings_notification_emails_no_emails">Që të merrni email me njoftim, ju lutemi, përshoqërojini llogarisë tuaj Matrix një email</string>
<string name="settings_notification_emails_no_emails">Që të merrni email me njoftim, ju lutemi, përshoqërojini llogarisë tuaj Matrix një adresë email</string>
<string name="settings_notification_emails_category">Njoftim me email</string>
<string name="room_permissions_upgrade_the_space">Të përmirësojë hapësirën</string>
<string name="room_permissions_change_space_name">Të ndryshojë emrin e hapësirës</string>
@ -2249,8 +2245,8 @@
<string name="create_poll_question_title">Pyetje ose temë pyetësori</string>
<string name="create_poll_title">Krijoni Pyetësor</string>
<string name="identity_server_consent_dialog_content_question">A pranoni të dërgohen këto hollësi\?</string>
<string name="identity_server_consent_dialog_content_3">Për të zbuluar kontakte ekzistuese, duhet të dërgoni hollësi kontakti (email-e dhe numra telefonash) te shërbyesi juaj i identiteteve. Para dërgimit, i fshehtëzojmë të dhënat tuaja, për privatësi.</string>
<string name="identity_server_consent_dialog_title_2">Dërgo email-e dhe numra telefonash te %s</string>
<string name="identity_server_consent_dialog_content_3">Për të zbuluar kontakte ekzistuese, duhet të dërgoni hollësi kontakti (adresa email dhe numra telefonash) te shërbyesi juaj i identiteteve. Para dërgimit, i fshehtëzojmë të dhënat tuaja, për privatësi.</string>
<string name="identity_server_consent_dialog_title_2">Dërgo adresa email dhe numra telefonash te %s</string>
<string name="settings_discovery_consent_notice_off_2">Kontaktet tuaja janë private. Për të zbuluar përdorues prej kontakteve tuaja, na duhet leja juaj për të dërguar hollësi kontakti te shërbyesi juaj i identiteteve.</string>
<string name="shortcut_disabled_reason_sign_out">Është bërë dalja nga sesioni!</string>
<string name="shortcut_disabled_reason_room_left">U dol nga dhoma!</string>
@ -2355,7 +2351,7 @@
<string name="ftue_auth_use_case_option_three">Bashkësi</string>
<string name="ftue_auth_use_case_option_two">Ekipe</string>
<string name="ftue_auth_use_case_option_one">Shokë dhe familje</string>
<string name="ftue_auth_use_case_subtitle">Do tju ndihmojmë të lidheni.</string>
<string name="ftue_auth_use_case_subtitle">Do tju ndihmojmë të lidheni</string>
<string name="ftue_auth_use_case_title">Me kë do të bisedoni më shumë\?</string>
<string name="navigate_to_thread_when_already_in_the_thread">Po e shihni tashmë këtë rrjedhë!</string>
<string name="view_in_room">Shiheni në Dhomë</string>
@ -2411,15 +2407,15 @@
<string name="error_forbidden_digits_only_username">Shërbyesi Home spranon emër përdorues vetëm me shifra.</string>
<string name="ftue_personalize_skip_this_step">Anashkalojeni këtë hap</string>
<string name="ftue_personalize_submit">Ruajeni dhe vazhdoni</string>
<string name="ftue_personalize_complete_subtitle">Parapëlqimet tuaja u ruajtën.</string>
<string name="ftue_personalize_complete_subtitle">Kaloni te rregullimet, kur të doni, që të përditësoni profilin tuaj</string>
<string name="ftue_personalize_complete_title">Kaq qe!</string>
<string name="ftue_personalize_lets_go">Shkojmë</string>
<string name="ftue_profile_picture_subtitle">Këtë mund ta ndryshoni kurdo.</string>
<string name="ftue_profile_picture_subtitle">Erdh koha ti jepet surrat emrit</string>
<string name="ftue_profile_picture_title">Shtoni një foto profili</string>
<string name="ftue_display_name_entry_footer">Këtë mund ta ndryshoni më vonë</string>
<string name="ftue_display_name_entry_title">Emër Në Ekran</string>
<string name="ftue_display_name_title">Zgjidhni një emër për në ekran</string>
<string name="ftue_account_created_subtitle">Llogaria juaj %s u krijua.</string>
<string name="ftue_account_created_subtitle">Llogaria juaj %s u krijua</string>
<string name="ftue_account_created_congratulations_title">Përgëzime!</string>
<string name="ftue_account_created_take_me_home">Shpjemëni në shtëpi</string>
<string name="ftue_account_created_personalize">Personalizoni profil</string>
@ -2450,4 +2446,380 @@
<string name="settings_presence">Prani</string>
<string name="action_learn_more">Mësoni më tepër</string>
<string name="action_try_it_out">Provojeni</string>
</resources>
<string name="labs_enable_element_call_permission_shortcuts">Aktivizo shkurtore lejesh për Thirrje Element</string>
<string name="settings_troubleshoot_test_distributors_fdroid">Su gjet metodë tjetër veç njëkohësimit në prapaskenë.</string>
<string name="initial_sync_request_content">${app_name}-it i duhet një fshehtinë e pastër, për të qenë i përditësuar, për arsyen vijuese:
\n%s
\n
\nKini parasysh se ky veprim do të sjellë rinisjen e aplikacionit dhe mund të dojë ca kohë.</string>
<string name="labs_enable_client_info_recording_summary">Regjistro emrin, versionin dhe URL-në e klientit, për të dalluar më kollaj sesionet te përgjegjës sesionesh.</string>
<string name="device_manager_session_last_activity">Veprimtaria e fundit më %1$s</string>
<string name="rich_text_editor_format_underline">Apliko format me të nënvizuara</string>
<string name="rich_text_editor_format_strikethrough">Apliko format me të hequravije</string>
<string name="rich_text_editor_format_italic">Apliko format me të pjerrta</string>
<string name="rich_text_editor_format_bold">Apliko format me të trasha</string>
<string name="qr_code_login_confirm_security_code_description">Ju lutemi, sigurohuni se e dini origjinën e këtij kodi. Duke lidhur pajisje, do ti jepni dikujt hyrje të plotë në llogarinë tuaj.</string>
<string name="qr_code_login_confirm_security_code">Ripohojeni</string>
<string name="qr_code_login_try_again">Riprovoni</string>
<string name="qr_code_login_status_no_match">Pa përputhje\?</string>
<string name="qr_code_login_signing_in">Po bëhet hyrja juaj</string>
<string name="qr_code_login_connecting_to_device">Po lidhet me pajisjen</string>
<string name="qr_code_login_scan_qr_code_button">Skanoni kodin QR</string>
<string name="qr_code_login_signing_in_a_mobile_device">Po bëhet hyrja te një pajisje celulare\?</string>
<string name="qr_code_login_show_qr_code_button">Shfaq kod QR te kjo pajisje</string>
<string name="qr_code_login_link_a_device_show_qr_code_instruction_2">Përzgjidhni “Skanoni kod QR”</string>
<string name="qr_code_login_link_a_device_show_qr_code_instruction_1">Filloja në skenën e hyrjes</string>
<string name="qr_code_login_link_a_device_scan_qr_code_instruction_2">Përzgjidhni “Hyni me kod QR”</string>
<string name="qr_code_login_link_a_device_scan_qr_code_instruction_1">Filloja në skenën e hyrjes</string>
<string name="qr_code_login_new_device_instruction_3">Përzgjidhni “Shfaq kod QR”</string>
<string name="qr_code_login_new_device_instruction_2">Kaloni te Rregullime -&gt; Siguri &amp; Privatësi</string>
<string name="qr_code_login_new_device_instruction_1">Hapeni aplikacionin në pajisjen tuaj tjetër</string>
<string name="qr_code_login_header_failed_user_cancelled_description">Hyrja u anulua në pajisjen tuaj tjetër.</string>
<string name="qr_code_login_header_failed_invalid_qr_code_description">Ai kod QR është i pavlefshëm.</string>
<string name="qr_code_login_header_failed_other_device_not_signed_in_description">Duhet bërë hyrja te pajisja tjetër.</string>
<string name="qr_code_login_header_failed_other_device_already_signed_in_description">Nga pajisja tjetër është bërë tashmë hyrja.</string>
<string name="qr_code_login_header_failed_other_description">Kërkesa dështoi.</string>
<string name="qr_code_login_header_failed_denied_description">Kërkesa u hodh poshtë në pajisjen tjetër.</string>
<string name="qr_code_login_header_failed_device_is_not_supported_description">Lidhja me këtë pajisje nuk mbulohet.</string>
<string name="qr_code_login_header_failed_title">Lidhje e pasuksesshme</string>
<string name="qr_code_login_header_connected_title">U vendos lidhje e siguruar</string>
<string name="qr_code_login_header_show_qr_code_title">Hyni me kod QR</string>
<string name="qr_code_login_header_scan_qr_code_title">Skanoni kodin QR</string>
<string name="three">3</string>
<string name="two">2</string>
<string name="one">1</string>
<string name="onboarding_new_app_layout_button_try">Provojeni</string>
<string name="onboarding_new_app_layout_feedback_message">Prekeni djathtas në krye që të shihni mundësinë për dhënie përshtypjesh.</string>
<string name="onboarding_new_app_layout_feedback_title">Jepni Përshtypje</string>
<string name="onboarding_new_app_layout_spaces_message">Hyni në Hapësirat tuaja (poshtë djathtas) më shpejt dhe më kollaj se kurrë më parë.</string>
<string name="onboarding_new_app_layout_spaces_title">Hyni Në Hapësira</string>
<string name="onboarding_new_app_layout_welcome_message">Që të thjeshtohet ${app_name} juaj, skedat tanimë janë opsionale. Administrojini duke përdorur menunë djathtas në krye.</string>
<string name="onboarding_new_app_layout_welcome_title">Mirë se vini te një pamje e re!</string>
<string name="home_empty_no_unreads_message">Ky është vendi ku do të shfaqen mesazhet tuaj të palexuar, kur të ketë të tillë.</string>
<string name="home_empty_no_unreads_title">Ska gjë për ta raportuar.</string>
<string name="home_empty_no_rooms_message">Aplikacioni “all-in-one” i fjalosjeve të siguruara, për ekipe, shokë dhe ente. Që tia filloni, krijoni një fjalosje, ose hyni në një dhomë ekzistuese.</string>
<string name="home_empty_no_rooms_title">Mirë se vini te ${app_name},
\n%s.</string>
<string name="home_empty_space_no_rooms_message">Hapësirat janë një mënyrë e re për të grupuar dhoma dhe persona. Shtoni një dhomë ekzistuese, ose krijoni një të re, duke përdorur butonin poshtë djathtas.</string>
<string name="home_empty_space_no_rooms_title">%s
\nduket paksa si i zbrazët.</string>
<string name="labs_enable_voice_broadcast_summary">Jini në gjendje të incizoni dhe dërgoni transmetim zanor në rrjedhën kohore të dhomës.</string>
<string name="labs_enable_voice_broadcast_title">Aktivizoni transmetim zanor (nën zhvillim aktiv)</string>
<string name="labs_enable_client_info_recording_title">Aktivizo regjistrim hollësish klienti</string>
<string name="labs_enable_session_manager_summary">Shihini më qartë dhe kontrolloni më mirë krejt sesionet tuaj.</string>
<string name="labs_enable_session_manager_title">Aktivizo përgjegjës të ri sesionesh</string>
<string name="device_manager_learn_more_session_rename">Përdorues të tjerë në mesazhe të drejtpërdrejtë dhe dhoma ku hyni janë në gjendje të shohin një listë të plotë të sesioneve tuaj.
\n
\nKjo u jep atyre besim se po flasin vërtet me ju, por do të thotë gjithashtu që mund shohin emrin e sesionit që jepni këtu.</string>
<string name="device_manager_learn_more_session_rename_title">Riemërtim sesionesh</string>
<string name="device_manager_learn_more_sessions_verified">Sesionet e verifikuar përfaqësojnë sesione ku është bërë hyrja dhe janë verifikuar, ose duke përdorur togfjalëshin tuaj të sigurt, ose me verifikim.
\n
\nKjo do të thotë se zotërojnë kyçe fshehtëzimi për mesazhe tuajt të mëparshëm dhe u ripohojnë përdoruesve të tjerë, me të cilët po komunikoni, se këto sesione ju takojnë juve.</string>
<string name="device_manager_learn_more_sessions_verified_title">Sesione të verifikuar</string>
<string name="device_manager_learn_more_sessions_unverified">Sesionet e paverifikuar janë sesione në të cilët është bërë hyrja me kredencialet tuaja, por pa u bërë verifikim.
\n
\nDuhet të jeni posaçërisht të qartë se i njihni këto sesione, ngaqë mund të përbëjnë përdorim të paautorizuar të llogarisë tuaj.</string>
<string name="device_manager_learn_more_sessions_unverified_title">Sesione të paverifikuar</string>
<string name="device_manager_learn_more_sessions_inactive">Sesioni joaktive janë sesione që keni ca kohë që si përdorni, por që vazhdojnë të marrin kyçe fshehtëzimi.
\n
\nHeqja e sesioneve joaktive përmirëson sigurinë dhe punimin dhe e bën më të lehtë për ju të pikasni nëse një sesion i ri është i dyshimtë.</string>
<string name="device_manager_learn_more_sessions_inactive_title">Sesione joaktive</string>
<string name="device_manager_sessions_sign_in_with_qr_code_description">Mund të përdorni këtë pajisje për të bërë hyrjen në një pajisje celulare apo web me një kod QR. Për ta bërë këtë ka dy mënyra:</string>
<string name="device_manager_sessions_sign_in_with_qr_code_title">Hyni me Kod QR</string>
<string name="device_manager_session_rename_warning">Ju lutemi, kini parasysh se emrat e sesioneve janë të dukshëm edhe për personat me të cilët komunikoni.</string>
<string name="device_manager_session_rename_description">Emra vetjakë sesionesh mund tju ndihmojnë të njihni më kollaj pajisjet tuaja.</string>
<string name="device_manager_session_rename_edit_hint">Emër sesioni</string>
<string name="device_manager_session_rename">Riemërtoni sesionin</string>
<string name="device_manager_session_details_device_ip_address">Adresë IP</string>
<string name="device_manager_session_details_device_operating_system">Sistem operativ</string>
<string name="device_manager_session_details_device_model">Model</string>
<string name="device_manager_session_details_device_browser">Shfletues</string>
<string name="device_manager_session_details_application_url">URL</string>
<string name="device_manager_session_details_application_version">Version</string>
<string name="device_manager_session_details_application_name">Ëmër</string>
<string name="device_manager_session_details_application">Aplikacion</string>
<string name="device_manager_session_details_session_last_activity">Veprimtaria e fundit</string>
<string name="device_manager_session_details_session_name">Emër sesioni</string>
<string name="device_manager_push_notifications_description">Merrni njoftime push për këtë sesion.</string>
<string name="device_manager_push_notifications_title">Njoftime Push</string>
<string name="device_manager_session_details_description">Hollësi aplikacioni, pajisjeje dhe veprimtarie.</string>
<string name="device_manager_session_details_title">Hollësi sesioni</string>
<string name="device_manager_session_overview_signout">Dilni nga ky sesion</string>
<string name="device_manager_other_sessions_select">Përzgjidhni sesione</string>
<string name="device_manager_other_sessions_clear_filter">Spastroje Filtrin</string>
<string name="device_manager_other_sessions_no_inactive_sessions_found">Su gjetën sesione joaktive.</string>
<string name="device_manager_other_sessions_no_unverified_sessions_found">Su gjetën seanca të paverifikuara.</string>
<string name="device_manager_other_sessions_no_verified_sessions_found">Su gjetën sesione të verifikuara.</string>
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
<item quantity="one">Shihni mundësinë e daljes nga sesione të vjetër (%1$d ditë ose më tepër) të cilët si përdorni më.</item>
<item quantity="other">Shihni mundësinë e daljes nga sesione të vjetër (%1$d ditë ose më tepër) të cilët si përdorni më.</item>
</plurals>
<string name="device_manager_other_sessions_recommendation_title_inactive">Joaktive</string>
<string name="device_manager_other_sessions_recommendation_description_unverified">Verifikoni sesionet tuaj, për shkëmbim më të sigurt mesazhesh, ose dilni prej atyre që nuk i njihni, apo përdorni më.</string>
<string name="device_manager_other_sessions_recommendation_title_unverified">Të paverifikuar</string>
<string name="device_manager_other_sessions_recommendation_description_verified">Për sigurinë më të mirë, dilni nga çfarëdo sesioni që nuk e njihni apo përdorni më.</string>
<string name="device_manager_other_sessions_recommendation_title_verified">Të verifikuar</string>
<string name="a11y_device_manager_filter">Filtroji</string>
<plurals name="device_manager_filter_option_inactive_description">
<item quantity="one">Joaktiv për %1$d ditë, ose më gjatë</item>
<item quantity="other">Joaktiv për %1$d ditë, ose më gjatë</item>
</plurals>
<string name="device_manager_filter_option_inactive">Jo aktiv</string>
<string name="device_manager_filter_option_unverified_description">Jo gati për shkëmbim të sigurt mesazhesh</string>
<string name="device_manager_filter_option_unverified">E paverifikuar</string>
<string name="device_manager_filter_option_verified_description">Gati për shkëmbim të sigurt mesazhesh</string>
<string name="device_manager_filter_option_verified">E verifikuar</string>
<string name="device_manager_filter_option_all_sessions">Krejt sesionet</string>
<string name="device_manager_filter_bottom_sheet_title">Filtroji</string>
<string name="device_manager_device_title">Pajisje</string>
<string name="device_manager_session_title">Sesion</string>
<string name="device_manager_current_session_title">Sesioni i Tanishëm</string>
<plurals name="device_manager_inactive_sessions_description">
<item quantity="one">Shihni mundësinë e daljes nga sesione të vjetër (%1$d ditë ose më tepër) të cilët si përdorni më.</item>
<item quantity="other">Shihni mundësinë e daljes nga sesione të vjetër (%1$d ditë ose më tepër) të cilët si përdorni më.</item>
</plurals>
<string name="device_manager_inactive_sessions_title">Sesione joaktive</string>
<string name="device_manager_unverified_sessions_description">Verifikojini, ose dilni nga sesione të paverifikuar.</string>
<string name="device_manager_unverified_sessions_title">Sesione të paverifikuar</string>
<string name="device_manager_header_section_security_recommendations_description">Përmirësoni sigurinë e llogarisë tuaj duke ndjekur këto rekomandime.</string>
<string name="device_manager_header_section_security_recommendations_title">Rekomandime sigurie</string>
<plurals name="device_manager_other_sessions_description_inactive">
<item quantity="one">Joaktiv për %1$d+ ditë (%2$s)</item>
<item quantity="other">Joaktiv për %1$d+ ditë (%2$s)</item>
</plurals>
<string name="device_manager_other_sessions_description_unverified_current_session">I paverifikuar · Sesioni juaj i tanishëm</string>
<string name="device_manager_other_sessions_description_unverified">I paverifikuar · Veprimtari së fundi më %1$s</string>
<string name="device_manager_other_sessions_description_verified">I verifikuar · Veprimtaria e fundit më %1$s</string>
<string name="device_manager_other_sessions_view_all">Shihni Krejt (%1$d)</string>
<string name="device_manager_view_details">Shihni Hollësitë</string>
<string name="device_manager_verify_session">Verifiko Sesion</string>
<string name="device_manager_verification_status_detail_other_session_unknown">Verifikoni sesionin tuaj të tanishëm, që të shfaqni gjendjen e verifikimit të këtij sesioni.</string>
<string name="device_manager_verification_status_detail_other_session_unverified">Për sigurinë dhe besueshmërinë më të mirë, verifikojeni, ose dilni nga ky sesion.</string>
<string name="device_manager_verification_status_detail_current_session_unverified">Verifikoni sesionin tuaj të tanishëm, për shkëmbim më të sigurt të mesazheve.</string>
<string name="device_manager_verification_status_detail_other_session_verified">Ky sesion është gati për shkëmbim të sigurt mesazhesh.</string>
<string name="device_manager_verification_status_detail_current_session_verified">Sesioni juaj i tanishëm është gati për shkëmbim të sigurt mesazhesh.</string>
<string name="device_manager_verification_status_unknown">Gjendje e panjohur verifikimi</string>
<string name="device_manager_verification_status_unverified">Sesion i paverifikuar</string>
<string name="device_manager_verification_status_verified">Sesion i verifikuar</string>
<string name="a11y_device_manager_device_type_unknown">Lloj i panjohur pajisjeje</string>
<string name="a11y_device_manager_device_type_desktop">Desktop</string>
<string name="a11y_device_manager_device_type_web">Web</string>
<string name="a11y_device_manager_device_type_mobile">Celular</string>
<string name="device_manager_sessions_other_description">Për sigurinë më të mirë, verifikoni sesionet tuaja dhe dilni nga çfarëdo sesioni që se njihni, ose se përdorni më.</string>
<string name="device_manager_sessions_other_title">Sesione të tjera</string>
<plurals name="room_removed_messages">
<item quantity="one">U hoq %d mesazh</item>
<item quantity="other">U hoqë %d mesazhe</item>
</plurals>
<string name="live_location_labs_promotion_switch_title">Aktivizoni tregim vendndodhjeje</string>
<string name="live_location_labs_promotion_description">Ju lutemi, kini parasysh: kjo është një veçori në zhvillim, që përdor një sendërtim të përkohshëm. Kjo do të thotë se sdo të jeni në gjendje të fshini historikun e vendndodhjeve tuaja dhe përdoruesit e përparuar do të jenë në gjendje të shohin historikun e vendndodhjeve tuaja, edhe pasi të keni ndalur dhënien “live” për këtë dhomë të vendndodhjes tuaj.</string>
<string name="live_location_labs_promotion_title">Tregim “live” vendndodhjeje</string>
<string name="settings_troubleshoot_test_current_gateway">Kanal i tanishëm: %s</string>
<string name="settings_troubleshoot_test_current_gateway_title">Kanal</string>
<string name="settings_troubleshoot_test_current_endpoint_failed">Sgjendet pikëmbarimi.</string>
<string name="settings_troubleshoot_test_current_endpoint_success">Pikëmbarim i tanishëm: %s</string>
<string name="settings_troubleshoot_test_current_endpoint_title">Pikëmbarim</string>
<string name="settings_troubleshoot_test_current_distributor">Hëpërhë po përdoret %s.</string>
<string name="settings_troubleshoot_test_current_distributor_title">Metodë</string>
<plurals name="settings_troubleshoot_test_distributors_many">
<item quantity="one">U gjet %d metodë.</item>
<item quantity="other">U gjetën %d metoda.</item>
</plurals>
<string name="settings_troubleshoot_test_distributors_gplay">Su gjet metodë tjetër veç Google Play Service.</string>
<string name="settings_troubleshoot_test_distributors_title">Metoda të gatshme</string>
<string name="settings_notification_method">Metodë njoftimi</string>
<string name="unifiedpush_distributor_background_sync">Njëkohësim në prapaskenë</string>
<string name="unifiedpush_distributor_fcm_fallback">Shërbime Google</string>
<string name="unifiedpush_getdistributors_dialog_title">Zgjidhni si të merren njoftime</string>
<string name="screen_sharing_notification_description">Tregimi i ekranit është në punë e sipër</string>
<string name="screen_sharing_notification_title">Tregim Ekrani ${app_name}</string>
<string name="attachment_type_selector_contact">Kontakt</string>
<string name="attachment_type_selector_camera">Kamerë</string>
<string name="attachment_type_selector_location">Vendndodhje</string>
<string name="attachment_type_selector_poll">Pyetësorë</string>
<string name="attachment_type_selector_voice_broadcast">Transmetim zanor</string>
<string name="attachment_type_selector_file">Bashkëngjitje</string>
<string name="attachment_type_selector_sticker">Ngjitës</string>
<string name="attachment_type_selector_gallery">Fototekë</string>
<string name="tooltip_attachment_voice_broadcast">Nisni një transmetim zanor</string>
<string name="live_location_description">Vendndodhje drejtpërsëdrejti</string>
<string name="live_location_share_location_item_share">Jepe vendndodhjen</string>
<string name="live_location_not_enough_permission_dialog_description">Që të mund të ndani drejtpërsëdrejti vendndodhje me të tjerë në këtë dhomë, lypset të keni lejet e duhura.</string>
<string name="live_location_not_enough_permission_dialog_title">Skeni leje të tregoni vendndodhje drejtpërsëdrejti</string>
<string name="live_location_bottom_sheet_last_updated_at">Përditësuar %1$s më parë</string>
<string name="labs_enable_live_location_summary">Sendërtim i përkohshëm: vendndodhjet mbeten në historikun e dhomës</string>
<string name="labs_enable_live_location">Aktivizo Tregim Vendndodhjeje “Live”</string>
<string name="live_location_sharing_notification_title">Vendndodhje Drejtpërsëdrejti ${app_name}</string>
<string name="location_share_live_remaining_time">Edhe %1$s</string>
<string name="location_share_live_until">“Live” deri më %1$s</string>
<string name="location_share_live_view">Shihni vendndodhje “live”</string>
<string name="location_share_live_ended">Tregimi “live” i vendndodhjes përfundoi</string>
<string name="location_share_live_started">Po ngarkohet vendndodhje “live”…</string>
<string name="location_share_loading_map_error">Sarrihet të ngarkohet hartë
\nKy shërbyes Home mund të mos jetë formësuar të shfaqë harta.</string>
<string name="poll_undisclosed_not_ended">Përfundimet do të jenë të dukshme pasi të ketë përfunduar pyetësori</string>
<string name="labs_enable_msc3061_share_history_desc">Kur bëhet ftesë në një dhomë të fshehtëzuar që ka historik ndarjesh me të tjerët, historiku i fshehtëzuar do të jetë i dukshëm.</string>
<string name="a11y_voice_broadcast_buffering">Përdo</string>
<string name="a11y_pause_voice_broadcast">Ndal transmetim zanor</string>
<string name="a11y_play_voice_broadcast">Luani ose vazhdoni luajtje transmetimi zanor</string>
<string name="a11y_stop_voice_broadcast_record">Ndal incizim transmetimi zanor</string>
<string name="a11y_pause_voice_broadcast_record">Ndal incizim transmetimi zanor</string>
<string name="a11y_resume_voice_broadcast_record">Vazhdo incizim transmetimi zanor</string>
<string name="voice_broadcast_live">Drejtpërdrejt</string>
<string name="settings_show_latest_profile">Shfaq hollësitë më të reja të përdoruesit</string>
<string name="space_explore_filter_no_result_description">Disa përfundime mund të jenë të fshehura, ngaqë janë private dhe ju duhet një ftesë për to.</string>
<string name="space_explore_filter_no_result_title">Su gjetën përfundime</string>
<string name="space_leave_radio_button_none">Mos braktis ndonjë</string>
<string name="space_leave_radio_button_all">Braktisi krejt</string>
<string name="space_leave_radio_buttons_title">Gjëra në këtë hapësirë</string>
<string name="a11y_presence_busy">I zënë</string>
<string name="a11y_open_settings">Hap rregullimet</string>
<string name="settings_security_pin_code_use_biometrics_error">Su aktivizua dot mirëfilltësim biometrik.</string>
<string name="auth_biometric_key_invalidated_message">Mirëfilltësimi biometrik qe çaktivizuar ngaqë tani së fundi është shtuar një metodë e re mirëfilltësimi biometrik. Mund ta riaktivizoni që nga Rregullimet.</string>
<string name="key_authenticity_not_guaranteed">Smund të garantohet mirëfilltësia e këtij mesazhi të fshehtëzuar në këtë pajisje.</string>
<string name="settings_security_incognito_keyboard_title">Tastierë inkonjito</string>
<string name="send_your_first_msg_to_invite">Dërgoni mesazhin tuaj të parë për të ftuar në fjalosje %s</string>
<string name="direct_room_encryption_enabled_tile_description_future">Mesazhet në këtë fjalosje do të jenë të fshehtëzuar skaj-më-skaj.</string>
<string name="crosssigning_cannot_verify_this_session_desc">Sdo të jeni në gjendje të shihni historikun e mesazheve të fshehtëzuara. Që tia rifilloni nga e para, ricaktoni kyçet tuaja për Kopjeruajtje të Sigurt Mesazhesh dhe kyçe verifikimi.</string>
<string name="crosssigning_cannot_verify_this_session">Sarrihet të verifikohet kjo pajisje</string>
<string name="settings_sessions_list">Sesione</string>
<string name="sent_live_location">Tregoi vendndodhjen e vet drejtpërsëdrejti</string>
<string name="command_description_table_flip">E paraprin një mesazh tekst i thjeshtë me (╯°□°)╯︵ ┻━┻</string>
<string name="permalink_unsupported_groups">Shapet dot kjo lidhje: bashkësitë janë zëvendësuar nga hapësirat</string>
<string name="login_scan_qr_code">Skanoni kodin QR</string>
<string name="ftue_auth_login_username_entry">Emër përdoruesi / Email / Telefon</string>
<string name="ftue_auth_captcha_title">Jeni qenie njerëzore\?</string>
<string name="ftue_auth_password_reset_email_confirmation_subtitle">Ndiqni udhëzimet e dërguara te %s</string>
<string name="ftue_auth_password_reset_confirmation">Ricaktim fjalëkalimi</string>
<string name="ftue_auth_forgot_password">Harrova fjalëkalimin</string>
<string name="ftue_auth_email_resend_email">Ridërgo email</string>
<string name="ftue_auth_email_verification_footer">Smorët email\?</string>
<string name="ftue_auth_email_verification_subtitle">Ndiqni udhëzimet e dërguara te %s</string>
<string name="ftue_auth_email_verification_title">Verifikoni email-in tuaj</string>
<string name="ftue_auth_phone_confirmation_resend_code">Ridërgomëni kodin</string>
<string name="ftue_auth_phone_confirmation_subtitle">Te %s u dërgua një kod</string>
<string name="ftue_auth_phone_confirmation_title">Ripohoni numrin e telefonit tuaj</string>
<string name="ftue_auth_sign_out_all_devices">Dil nga krejt pajisjet</string>
<string name="ftue_auth_reset_password">Ricaktoni fjalëkalimin</string>
<string name="ftue_auth_new_password_subtitle">Sigurohuni të jetë 8 ose më shumë shenja.</string>
<string name="ftue_auth_new_password_title">Zgjidhni një fjalëkalim të ri</string>
<string name="ftue_auth_new_password_entry_title">Fjalëkalim i Ri</string>
<string name="ftue_auth_reset_password_breaker_title">Kontrolloni email-in tuaj.</string>
<string name="ftue_auth_reset_password_email_subtitle">%s do tju dërgojë një lidhje verifikimi</string>
<string name="ftue_auth_phone_confirmation_entry_title">Kod ripohimi</string>
<string name="ftue_auth_phone_entry_title">Numër Telefoni</string>
<string name="ftue_auth_phone_subtitle">%s lyp verifikimin e llogarisë tuaj</string>
<string name="ftue_auth_phone_title">Jepni numrin e telefonit tuaj</string>
<string name="ftue_auth_email_entry_title">Email</string>
<string name="ftue_auth_email_subtitle">%s lyp verifikimin e llogarisë tuaj</string>
<string name="ftue_auth_email_title">Jepni email-in tuaj</string>
<string name="ftue_auth_terms_subtitle">Ju lutemi, lexoni kushte dhe rregulla të %s</string>
<string name="ftue_auth_terms_title">Rregulla shërbyesi</string>
<string name="ftue_auth_choose_server_ems_cta">Lidhuni</string>
<string name="ftue_auth_choose_server_ems_subtitle">Element Matrix Services (EMS) është një shërbim strehimi i fuqishëm dhe i besueshëm, për komunikim të shpejtë, të sigurt dhe të atypëratyshëm. Shihni më tepër se si, te<a href="${ftue_ems_url}">element.io/ems</a></string>
<string name="ftue_auth_choose_server_ems_title">Doni të strehoni shërbyesin tuaj\?</string>
<string name="ftue_auth_choose_server_entry_hint">URL Shërbyesi</string>
<string name="ftue_auth_choose_server_sign_in_subtitle">Cila është adresa e shërbyesit tuaj\?</string>
<string name="ftue_auth_choose_server_subtitle">Cila është adresa e shërbyesit tuaj\? Kjo është si një shtëpi për krejt të dhënat tuaja</string>
<string name="ftue_auth_choose_server_title">Përzgjidhni shërbyesin tuaj</string>
<string name="ftue_auth_welcome_back_title">Mirë se u kthyet!</string>
<string name="ftue_auth_create_account_edit_server_selection">Përpunojeni</string>
<string name="ftue_auth_create_account_sso_section_header">Ose</string>
<string name="ftue_auth_sign_in_choose_server_header">Ku gjenden bisedat tuaja</string>
<string name="ftue_auth_create_account_choose_server_header">Ku do të gjenden bisedat tuaja</string>
<string name="ftue_auth_create_account_password_entry_footer">Duhet të jetë 8 ose më shumë shenja</string>
<string name="ftue_auth_create_account_username_entry_footer">Të tjerët mund tju zbulojnë %s</string>
<string name="ftue_auth_create_account_title">Krijoni llogarinë tuaj</string>
<string name="attachment_type_voice_broadcast">Transmetim Zanor</string>
<string name="a11y_open_spaces">Hap listë hapësirash</string>
<string name="a11y_create_message">Krijoni një bisedë ose dhomë të re</string>
<string name="settings_troubleshoot_test_endpoint_registration_quick_fix">Ricaktoni metodë njoftimesh</string>
<string name="push_gateway_item_enabled">Të aktivizuara:</string>
<string name="push_gateway_item_profile_tag">Etiketë profili:</string>
<string name="push_gateway_item_device_id">ID sesioni:</string>
<string name="create_room_action_go">Jepi</string>
<string name="updating_your_data">Po përditësohen të dhënat tuaja…</string>
<string name="error_check_network">Diç shkoi ters. Ju lutemi, kontrolloni lidhjen tuaj në rrjet dhe riprovoni.</string>
<string name="room_list_filter_people">Persona</string>
<string name="room_list_filter_favourites">Të parapëlqyera</string>
<string name="room_list_filter_unreads">Të palexuara</string>
<string name="room_list_filter_all">Krejt</string>
<string name="keys_backup_settings_signature_from_this_user">Kopjeruajtja ka një nënshkrim të vlefshëm prej këtij përdoruesi.</string>
<string name="command_description_devtools">Hap skenën e mjeteve të zhvilluesit</string>
<string name="timeline_error_room_not_found">Na ndjeni, kjo dhomë su gjet.
\nJu lutemi, riprovoni më vonë.%s</string>
<string name="font_size_use_system">Përdor parazgjedhje sistemi</string>
<string name="font_size_section_manually">Zgjidheni dorazi</string>
<string name="font_size_section_auto">Caktoje vetvetiu</string>
<string name="font_size_title">Zgjidhni madhësi shkronjash</string>
<string name="some_devices_will_not_be_able_to_decrypt">⚠ Në këtë dhomë ka pajisje të paverifikuara, ato sdo të jenë në gjendje të shfshehtëzojnë mesazhet që dërgoni.</string>
<string name="encryption_never_send_to_unverified_devices_in_room">Mos dërgo kurrë prej këtij sesioni mesazhe të fshehtëzuar te sesione të paverifikuar në këtë dhomë.</string>
<string name="settings_autoplay_animated_images_title">Figurat e animuara vetëluaji</string>
<string name="settings_troubleshoot_test_endpoint_registration_failed">Su arrit të regjistrohej token pikëmbarimi te shërbyesi Home:
\n%1$s</string>
<string name="settings_troubleshoot_test_endpoint_registration_success">Pikëmbarim i regjistruar me sukses te shërbyesi Home.</string>
<string name="settings_troubleshoot_test_endpoint_registration_title">Regjistrim Pikëmbarimi</string>
<string name="grant_permission">Akordojini Leje</string>
<string name="settings_troubleshoot_test_system_settings_permission_failed">${app_name} lyp lejen për shfaqje njoftimesh.
\nJu lutemi, akordoni lejen.</string>
<plurals name="search_space_multiple_parents">
<item quantity="one">%1$s dhe %2$d tjetër</item>
<item quantity="other">%1$s dhe %2$d të tjerë</item>
</plurals>
<string name="search_space_two_parents">%1$s dhe %2$s</string>
<string name="permissions_rationale_msg_notification">${app_name} lyp leje të shfaqë njoftime. Njoftimet mund të shfaqin mesazhet tuaja, ftesa tuajat, etj.
\n
\nJu lutemi, lejoni përdorimin e tyre te flluska pasuese, që të jeni në gjendje të shihni njoftime.</string>
<string name="auth_reset_password_error_unverified">Email jo i verifikuar, kontrolloni te Të marrët tuaj</string>
<string name="call_stop_screen_sharing">Reshtni tregimin e ekranit tuaj</string>
<string name="call_start_screen_sharing">Tregojuani ekranin të tjerëve</string>
<string name="invites_empty_message">Ky është vendi ku do të gjenden kërkesat dhe ftesat tuaja të reja.</string>
<string name="invites_empty_title">Ska gjë të re.</string>
<string name="invites_title">Ftesa</string>
<string name="space_list_empty_message">Hapësirat janë një mënyrë e re për të grupuar dhoma dhe njerëz. Që tia filloni, krijoni një hapësirë.</string>
<string name="space_list_empty_title">Ende pa hapësira.</string>
<string name="labs_enable_rich_text_editor_summary">Provoni përpunuesin e teksteve të pasur (për tekst të thjeshtë vjen së shpejti)</string>
<string name="labs_enable_rich_text_editor_title">Aktivizo përpunues teksti të pasur</string>
<string name="labs_enable_deferred_dm_summary">Krijo MD vetëm për mesazhin e parë</string>
<string name="labs_enable_new_app_layout_summary">Një Element i thjeshtuar, me skeda opsionale</string>
<string name="labs_enable_new_app_layout_title">Aktivizo skemë të re</string>
<string name="home_layout_preferences_sort_name">A - Z</string>
<string name="home_layout_preferences_sort_activity">Veprimtari</string>
<string name="home_layout_preferences_sort_by">Renditi sipas</string>
<string name="home_layout_preferences_recents">Shfaq të freskëta</string>
<string name="home_layout_preferences_filters">Shfaq filtra</string>
<string name="home_layout_preferences">Parapëlqime skeme grafike</string>
<string name="action_deselect_all">Shpërzgjidhi krejt</string>
<string name="action_select_all">Përzgjidhi krejt</string>
<string name="action_got_it">E mora</string>
<string name="action_next">Më pas</string>
<string name="action_reset">Rifillo</string>
<string name="time_unit_second_short">sek</string>
<string name="time_unit_minute_short">min</string>
<string name="time_unit_hour_short">h</string>
<string name="initial_sync_request_reason_unignored_users">- Për disa përdorues u hoq shpërfillja</string>
<string name="initial_sync_request_title">Kërkesë njëkohësimi fillestar</string>
<string name="explore_rooms">Eksploroni Dhoma</string>
<string name="change_space">Ndërroni Hapësire</string>
<string name="create_room">Krijo Dhomë</string>
<string name="start_chat">Filloni Fjalosje</string>
<string name="all_chats">Krejt Fjalosjet</string>
<plurals name="x_selected">
<item quantity="one">%1$d i përzgjedhura</item>
<item quantity="other">%1$d të përzgjedhura</item>
</plurals>
<string name="qr_code_login_header_failed_homeserver_is_not_supported_description">Shërbyesi Home nuk mbulon hyrje me kod QR.</string>
<string name="qr_code_login_header_failed_e2ee_security_issue_description">U has një problem sigurie, kur ujdisej shkëmbim i siguruar mesazhesh. Mund të jetë komprometuar një nga sa vijon: shërbyesi juaj Home; lidhja(et) tuaja internet; pajisja(et) tuaja;</string>
<string name="qr_code_login_header_failed_timeout_description">Lidhja su plotësua në kohën e duhur.</string>
<string name="qr_code_login_header_connected_description">Kontrolloni pajisjen ku jeni i futur, duhet të shfaqet kodi më poshtë. Sigurohuni se kodi më poshtë përputhet me atë pajisje:</string>
<string name="qr_code_login_header_show_qr_code_link_a_device_description">Skanoni kodin QR më poshtë me pajisjen tuaj prej nga është dalë nga llogaria.</string>
<string name="qr_code_login_header_show_qr_code_new_device_description">Përdorni pajisjen tuaj ku jeni brenda llogarisë që të skanoni kodin QR më poshtë:</string>
<string name="qr_code_login_header_scan_qr_code_description">Përdorni kamerën në këtë pajisje që të skanoni kodin QR të shfaqur në pajisjen tuaj tjetër:</string>
<string name="labs_enable_element_call_permission_shortcuts_summary">Mirato vetvetiu widget-e Thirrjesh Element Call dhe akordo përdorim kamere / mikfrofoni</string>
<string name="labs_enable_msc3061_share_history">MSC3061: Po jepen kyçe dhome për mesazhe të dikurshëm</string>
<string name="settings_show_latest_profile_description">Shfaq hollësitë më të reja të profileve (avatar dhe emër në ekran) për krejt mesazhet.</string>
<string name="settings_security_incognito_keyboard_summary">Kërko doemos që tastiera të mos përditësojë ndonjë të dhënë të personalizuar, bie fjala, historik shtypjeje në të dhe fjalor bazuar në çkeni shtypur në biseda. Kini parasysh se disa tastiera mund të mos e respektojnë këtë rregullim.</string>
<string name="verify_invalid_qr_notice">Ky kod QR duket i formuar keq. Ju lutemi, provoni ta verifikoni me tjetër metodë.</string>
<string name="room_settings_global_block_unverified_info_text">🔒 Keni aktivizuar fshehtëzim për sesionie të verifikuar vetëm për krejt dhomat, që nga Rregullime Sigurie.</string>
<string name="settings_autoplay_animated_images_summary">Luaj figura të animuara te rrjedha kohora sapo zënë të duken</string>
</resources>

View file

@ -2946,4 +2946,12 @@
<item quantity="other">Вибрано %1$d</item>
</plurals>
<string name="action_select_all">Вибрати все</string>
<string name="rich_text_editor_full_screen_toggle">Перемкнути повноекранний режим</string>
<string name="attachment_type_selector_text_formatting">Форматування тексту</string>
<string name="error_voice_broadcast_already_in_progress_message">Ви вже записуєте голосове повідомлення. Завершіть поточну трансляцію, щоб розпочати нову.</string>
<string name="error_voice_broadcast_blocked_by_someone_else_message">Хтось інший вже записує голосове повідомлення. Зачекайте, поки закінчиться трансляція, щоб розпочати нову.</string>
<string name="error_voice_broadcast_permission_denied_message">Ви не маєте необхідних дозволів для початку передавання голосового повідомлення в цю кімнату. Зверніться до адміністратора кімнати, щоб оновити ваші дозволи.</string>
<string name="error_voice_broadcast_unauthorized_title">Не вдалося розпочати передавання нового голосового повідомлення</string>
<string name="a11y_voice_broadcast_fast_forward">Перемотати вперед на 30 секунд</string>
<string name="a11y_voice_broadcast_fast_backward">Перемотати назад на 30 секунд</string>
</resources>

View file

@ -30,7 +30,7 @@
<string name="notice_crypto_error_unknown_inbound_session_id">发送者的设备没有向我们发送此消息的密钥。</string>
<string name="unable_to_send_message">无法发送消息</string>
<string name="matrix_error">Matrix 错误</string>
<string name="medium_email">电子邮地址</string>
<string name="medium_email">电子邮地址</string>
<string name="medium_phone_number">手机号码</string>
<string name="notice_room_withdraw">%1$s 撤回了对 %2$s 的邀请</string>
<string name="notice_made_future_room_visibility">%1$s 让未来的房间历史记录对 %2$s 可见</string>
@ -214,8 +214,8 @@
<string name="auth_login">登录</string>
<string name="auth_submit">提交</string>
<string name="auth_invalid_login_param">错误的用户名和/或密码</string>
<string name="auth_invalid_email">此电子邮地址似乎无效</string>
<string name="auth_email_already_defined">此电子邮地址已被使用。</string>
<string name="auth_invalid_email">此电子邮地址似乎无效</string>
<string name="auth_email_already_defined">此电子邮地址已被使用。</string>
<string name="auth_forgot_password">忘记密码?</string>
<string name="login_error_invalid_home_server">请输入有效的 URL</string>
<string name="login_error_not_json">没有包含有效的 JSON</string>
@ -228,7 +228,7 @@
<string name="search_hint">搜索</string>
<string name="search_members_hint">过滤房间成员</string>
<string name="search_no_results">没有结果</string>
<string name="settings_add_email_address">添加电子邮地址</string>
<string name="settings_add_email_address">添加电子邮地址</string>
<string name="settings_add_phone_number">添加手机号码</string>
<string name="settings_version">版本</string>
<string name="settings_olm_version">olm 版本</string>
@ -257,7 +257,7 @@
<string name="start_video_call">开始视频通话</string>
<string name="option_take_photo_video">拍摄照片或视频</string>
<string name="auth_recaptcha_message">此主服务器想确认你不是机器人</string>
<string name="auth_reset_password_error_unauthorized">电子邮地址验证失败:请确保你已点击邮件中的链接</string>
<string name="auth_reset_password_error_unauthorized">电子邮地址验证失败:请确保你已点击邮件中的链接</string>
<string name="compression_opt_list_original">原始</string>
<string name="call_connecting">通话正在连接……</string>
<string name="permissions_rationale_msg_record_audio">${app_name} 需要权限以访问你的麦克风来进行语音通话。</string>
@ -348,11 +348,11 @@
<string name="settings_app_info_link_summary">显示系统设置中的应用程序信息。</string>
<string name="settings_call_invitations">通话请求</string>
<string name="settings_app_term_conditions">使用条款</string>
<string name="settings_other"></string>
<string name="settings_other"></string>
<string name="settings_notifications_targets">通知目标</string>
<string name="settings_logged_in">登录为</string>
<string name="account_email_validation_message">请检查你的电子邮并点击里面包含的链接。完成时请点击继续。</string>
<string name="account_email_already_used_error">此电子邮地址已被使用。</string>
<string name="account_email_validation_message">请检查你的电子邮并点击里面包含的链接。完成时请点击继续。</string>
<string name="account_email_already_used_error">此电子邮地址已被使用。</string>
<string name="account_phone_number_already_used_error">此手机号码已被使用。</string>
<string name="room_settings_set_main_address">设置为主要地址</string>
<string name="room_settings_unset_main_address">取消设置为主要地址</string>
@ -434,7 +434,7 @@
<string name="you_added_a_new_device">你添加了一个新会话“%s”它正在请求加密密钥。</string>
<string name="your_unverified_device_requesting">你的未验证会话“%s”正在请求加密密钥。</string>
<string name="start_verification">开始验证</string>
<string name="title_activity_bug_report">bug报告</string>
<string name="title_activity_bug_report">错误报告</string>
<string name="option_take_photo">拍摄照片</string>
<string name="option_take_video">拍摄视频</string>
<string name="settings_labs_native_camera">使用原生相机</string>
@ -828,7 +828,7 @@
<string name="action_revoke">撤消</string>
<string name="action_disconnect">断开连接</string>
<string name="action_decline">拒绝</string>
<string name="login_error_no_homeserver_found">这不是有效的Matrix服务器地址</string>
<string name="login_error_no_homeserver_found">这不是有效的 Matrix 服务器地址</string>
<string name="login_error_homeserver_not_found">无法在此 URL 找到主服务器,请检查</string>
<string name="action_play">播放</string>
<string name="action_dismiss">忽略</string>
@ -990,13 +990,13 @@
<string name="change_identity_server">更改身份服务器</string>
<string name="settings_discovery_identity_server_info">你正在使用 %1$s 与你知道的现有联系人相互发现。</string>
<string name="settings_discovery_identity_server_info_none">你当前未使用身份服务器。若要与你知道的现有联系人相互发现,请在下方配置。</string>
<string name="settings_discovery_emails_title">可发现电子邮件地址</string>
<string name="settings_discovery_emails_title">可发现电子邮件地址</string>
<string name="settings_discovery_no_mails">发现选项将在你添加电子邮件地址后出现。</string>
<string name="settings_discovery_no_msisdn">发现选项将在你添加电话号码后出现。</string>
<string name="settings_discovery_disconnect_identity_server_info">你的身份服务器断开意味着你将无法被其它用户发现并且无法通过电子邮件和电话邀请他人。</string>
<string name="settings_discovery_disconnect_identity_server_info">您的身份服务器断开连接意味着您将不会被其他用户发现,并且您将无法通过电子邮件或电话邀请其他人。</string>
<string name="settings_discovery_msisdn_title">可发现电话号码</string>
<string name="settings_discovery_confirm_mail">我们向%s发送了一封电子邮件请检查你的电子邮件并点击确认链接</string>
<string name="settings_discovery_confirm_mail_not_clicked">我们向%s发送了电子邮件请先检查你的电子邮件并点击确认链接</string>
<string name="settings_discovery_confirm_mail_not_clicked">我们向 %s 发送了一封电子邮件,请先检查您的电子邮件并点击确认链接</string>
<string name="settings_discovery_enter_identity_server">输入身份服务器 URL</string>
<string name="settings_discovery_bad_identity_server">无法连接到身份服务器</string>
<string name="settings_discovery_please_enter_server">请输入身份服务器 url</string>
@ -1143,14 +1143,14 @@
<string name="login_msisdn_confirm_hint">输入验证码</string>
<string name="login_msisdn_confirm_send_again">重新发送</string>
<string name="login_msisdn_confirm_submit">下一个</string>
<string name="login_msisdn_error_not_international">国际电话号码必须以 + 开头</string>
<string name="login_msisdn_error_not_international">国际电话号码必须以“+”开头</string>
<string name="login_msisdn_error_other">电话号码似乎无效。请检查</string>
<string name="login_signup_to">在 %1$s 上注册</string>
<string name="login_signin_username_hint">用户名或电子邮件</string>
<string name="login_signup_username_hint">用户名</string>
<string name="login_signup_password_hint">密码</string>
<string name="login_signup_submit">下一个</string>
<string name="login_signup_error_user_in_use">用户名已占</string>
<string name="login_signup_error_user_in_use">该用户名已被使</string>
<string name="login_signup_cancel_confirmation_title">警告</string>
<string name="login_signup_cancel_confirmation_content">你的账户尚未创建。是否中止注册过程?</string>
<string name="login_a11y_choose_matrix_org">选择 matrix.org</string>
@ -1171,7 +1171,7 @@
<string name="login_signin_matrix_id_notice">如果你在主服务器上设置了账户,在下方使用你的 Matrix ID例 @user:domain.com和密码。</string>
<string name="login_signin_matrix_id_hint">Matrix ID</string>
<string name="login_signin_matrix_id_password_notice">如果你不知道你的密码,返回并重置。</string>
<string name="login_signin_matrix_id_error_invalid_matrix_id">这不是一个有效的用户标识符。期望的格式:\'@user:homeserver.org\'</string>
<string name="login_signin_matrix_id_error_invalid_matrix_id">这不是有效的用户标识符。期格式:\'@user:homeserver.org\'</string>
<string name="autodiscover_well_known_error">无法找到有效的主服务器。请检查你的标识符</string>
<string name="signed_out_title">你已登出</string>
<string name="signed_out_notice">这可能由于多种原因:
@ -1199,7 +1199,7 @@
<string name="soft_logout_clear_data_dialog_e2e_warning_content">除非你登录以恢复加密密钥,否则你将无法访问安全消息。</string>
<string name="soft_logout_sso_not_same_user_error">当前会话用于用户 %1$s 而你提供了用户 %2$s 的凭证。${app_name} 不支持此功能。
\n请先清除数据然后重新登录另一个账户。</string>
<string name="permalink_malformed">你的 matrix.to 链接更是不正确</string>
<string name="permalink_malformed">您的 matrix.to 链接格式错误</string>
<string name="bug_report_error_too_short">描述太短</string>
<string name="notification_initial_sync">初始同步…</string>
<string name="settings_advanced_settings">高级设置</string>
@ -1531,7 +1531,7 @@
<string name="crypto_error_withheld_generic">你无法访问此消息因为发送者有意不发送密钥</string>
<string name="notice_crypto_unable_to_decrypt_merged">正在等待加密历史</string>
<string name="disclaimer_title">Riot 现已成为 Element</string>
<string name="disclaimer_content">我们很高兴地宣布我们改名了!你的应用已经更新到最新版本,并且你已登录你的账户。</string>
<string name="disclaimer_content">我们很高兴地宣布我们已经更名了!您的应用程序是最新的,并且您已登录到您的帐户。</string>
<string name="disclaimer_negative_button">明白了</string>
<string name="disclaimer_positive_button">了解更多</string>
<string name="save_recovery_key_chooser_hint">将恢复密钥保存到</string>
@ -1588,9 +1588,9 @@
<string name="settings_remove_three_pid_confirmation_content">移除 %s</string>
<string name="error_threepid_auth_failed">请确认你已点击我们向你发送的电子邮件中的链接。</string>
<string name="settings_emails_and_phone_numbers_title">电子邮件和电话号码</string>
<string name="settings_emails_and_phone_numbers_summary">管理链接到你的Matrix账户的电子邮件地址和电话号码</string>
<string name="settings_emails_and_phone_numbers_summary">管理与您的 Matrix 帐户链接的电子邮件地址和电话号码</string>
<string name="settings_text_message_sent_hint">代码</string>
<string name="login_msisdn_notice">请使用国际格式(电话号码必须以“+”开</string>
<string name="login_msisdn_notice">请使用国际格式(电话号码必须以“+”开</string>
<string name="confirm_your_identity_quad_s">验证此登录来确认你的身份,授权其访问加密消息。</string>
<string name="error_opening_banned_room">无法打开你被封禁的房间。</string>
<string name="room_error_not_found">无法找到此房间。请确认它存在。</string>
@ -1714,7 +1714,7 @@
<string name="direct_room_user_list_suggestions_title">建议</string>
<string name="direct_room_user_list_known_title">已知用户</string>
<string name="qr_code">二维码</string>
<string name="add_by_qr_code">通过QR码添加</string>
<string name="add_by_qr_code">通过二维码添加</string>
<string name="create_room_settings_section">房间设置</string>
<string name="create_room_topic_hint">话题</string>
<string name="create_room_topic_section">房间话题(可选)</string>
@ -1804,7 +1804,7 @@
<plurals name="entries">
<item quantity="other">%d 个条目</item>
</plurals>
<string name="not_a_valid_qr_code">不是有效的 Matrix 二维码</string>
<string name="not_a_valid_qr_code">不是有效的 Matrix 二维码</string>
<string name="user_code_scan">扫描二维码</string>
<string name="add_people">添加人员</string>
<string name="invite_friends">邀请朋友</string>
@ -2099,15 +2099,15 @@
<string name="settings_messages_containing_username">我的用户名</string>
<string name="settings_messages_containing_display_name">我的显示名称</string>
<string name="settings_notification_notify_me_for">通知事项</string>
<string name="settings_notification_other"></string>
<string name="settings_notification_other"></string>
<string name="settings_notification_mentions_and_keywords">提及和关键词</string>
<string name="settings_notification_default">默认通知</string>
<string name="call_tile_video_active">可用视频通话</string>
<string name="call_tile_voice_active">可用语音通话</string>
<string name="link_this_email_with_your_account">在 ${app_name} 中直接接收邀请的设置 %s。</string>
<string name="link_this_email_settings_link">将此电子邮件地址与您的帐户相关联</string>
<string name="this_invite_to_this_space_was_sent">加入这个空间的邀请被发送至 %s此邮箱未与您的账户相关联</string>
<string name="this_invite_to_this_room_was_sent">加入这个房间的邀请被发送至 %s此邮箱未与您的账户相关联</string>
<string name="link_this_email_settings_link">将此电子邮件地址与您的帐户链接</string>
<string name="this_invite_to_this_space_was_sent">此空间的邀请已发送至与您的帐户无关的 %s</string>
<string name="this_invite_to_this_room_was_sent">此房间的邀请已发送至与您的帐户无关的 %s</string>
<string name="all_rooms_youre_in_will_be_shown_in_home">你所在的全部房间将显示在主页上。</string>
<string name="preference_show_all_rooms_in_home">在主页上显示所有房间</string>
<string name="call_slide_to_end_conference">滑动结束通话</string>
@ -2171,7 +2171,7 @@
<string name="room_settings_space_access_title">空间访问</string>
<string name="room_settings_access_rules_pref_dialog_title">谁可以访问?</string>
<string name="settings_notification_emails_enable_for_email">为 %s 启用电子邮件通知</string>
<string name="settings_notification_emails_no_emails">要接收通知邮件请将一个电子邮件地址关联到你的Matrix账</string>
<string name="settings_notification_emails_no_emails">要接收带有通知的电子邮件,请将电子邮件地址链接到您的 Matrix 帐</string>
<string name="settings_notification_emails_category">电子邮件通知</string>
<string name="room_permissions_upgrade_the_space">升级空间</string>
<string name="room_permissions_change_space_name">更改空间名称</string>
@ -2303,7 +2303,7 @@
<string name="beta">BETA</string>
<string name="location_share_live_select_duration_title">共享你的实时位置</string>
<string name="a11y_location_share_locate_button">缩放到当前位置</string>
<string name="a11y_location_share_pin_on_map">地图上选定位置的图钉</string>
<string name="a11y_location_share_pin_on_map">地图上选定位置的固定标记</string>
<string name="poll_no_votes_cast">无投票</string>
<string name="ftue_auth_email_verification_title">验证你的电子邮件</string>
<plurals name="room_removed_messages">
@ -2336,12 +2336,12 @@
<string name="live_location_share_location_item_share">共享位置</string>
<string name="live_location_not_enough_permission_dialog_description">您需要拥有正确的权限才能在此房间中共享实时位置。</string>
<string name="live_location_not_enough_permission_dialog_title">你没有权限共享实时位置</string>
<string name="live_location_bottom_sheet_last_updated_at">%1$s前已更新</string>
<string name="live_location_bottom_sheet_last_updated_at">%1$s 前已更新</string>
<string name="labs_enable_live_location_summary">临时执行:地点在房间历史中持续存在</string>
<string name="labs_enable_live_location">启用实时位置共享</string>
<string name="live_location_sharing_notification_description">位置共享正在进行中</string>
<string name="live_location_sharing_notification_title">${app_name}实时位置</string>
<string name="location_share_live_remaining_time">剩余%1$s</string>
<string name="live_location_sharing_notification_title">${app_name} 实时位置</string>
<string name="location_share_live_remaining_time">剩余 %1$s</string>
<string name="location_share_live_stop">停止</string>
<string name="location_share_live_until">实时共享直到 %1$s</string>
<string name="location_share_live_view">查看实时位置</string>
@ -2350,14 +2350,14 @@
<string name="location_share_live_enabled">启用实时位置</string>
<string name="location_timeline_failed_to_load_map">加载地图失败</string>
<string name="location_share_external">打开,用</string>
<string name="location_not_available_dialog_content">${app_name}无法访问你的位置。请稍后再试。</string>
<string name="location_not_available_dialog_title">${app_name}无法访问你的位置</string>
<string name="location_not_available_dialog_content">${app_name} 无法访问你的位置。请稍后再试。</string>
<string name="location_not_available_dialog_title">${app_name} 无法访问你的位置</string>
<string name="view_in_room">在房间中查看</string>
<string name="labs_enable_msc3061_share_history">MSC3061为过去的消息共享房间密钥</string>
<string name="labs_enable_msc3061_share_history_desc">在共享历史的加密房间中邀请时,加密历史将可见。</string>
<string name="location_share_live_select_duration_option_3">8小时</string>
<string name="location_share_live_select_duration_option_2">1小时</string>
<string name="location_share_live_select_duration_option_1">15分钟</string>
<string name="location_share_live_select_duration_option_3">8 小时</string>
<string name="location_share_live_select_duration_option_2">1 小时</string>
<string name="location_share_live_select_duration_option_1">15 分钟</string>
<string name="a11y_location_share_option_pinned_icon">共享此位置</string>
<string name="location_share_option_pinned">共享此位置</string>
<string name="a11y_location_share_option_user_live_icon">共享实时位置</string>
@ -2409,7 +2409,7 @@
<string name="tooltip_attachment_gallery">发送图片和视频</string>
<string name="tooltip_attachment_photo">打开相机</string>
<string name="ftue_auth_terms_title">服务器政策</string>
<string name="ftue_auth_choose_server_ems_subtitle">Element Matrix ServicesEMS是一个健壮且可靠的主机托管服务可实现快速、安全和实时的通信。在&lt;a href=\"${ftue_ems_url}\"&gt;element.io/ems&lt;/a&gt;上了解如何使用</string>
<string name="ftue_auth_choose_server_ems_subtitle">Element Matrix Services (EMS) 是一种强大且可靠的托管服务,可实现快速、安全和实时的通信。 了解如何在 &lt;a href=\"${ftue_ems_url}\"&gt;element.io/ems&lt;/a&gt;</string>
<string name="ftue_auth_choose_server_ems_title">想架设自己的服务器?</string>
<string name="ftue_auth_choose_server_entry_hint">服务器URL</string>
<string name="ftue_auth_choose_server_title">选择你的服务器</string>
@ -2539,13 +2539,13 @@
<string name="labs_enable_element_call_permission_shortcuts_summary">自动允许 Element 通话小部件并授予相机/麦克风访问权限</string>
<string name="labs_enable_element_call_permission_shortcuts">启用 Element 通话权限快捷方式</string>
<string name="live_location_description">实时位置</string>
<string name="verify_invalid_qr_notice">这个QR码看起来不正常。请尝试用另一个方法验证。</string>
<string name="verify_invalid_qr_notice">此二维码看起来格式不正确。请尝试使用其它方法进行验证。</string>
<string name="crosssigning_cannot_verify_this_session_desc">你无法访问加密消息历史。重置你的安全消息备份和验证密钥以重新开始。</string>
<string name="crosssigning_cannot_verify_this_session">无法验证此设备</string>
<string name="ftue_auth_choose_server_sign_in_subtitle">你的服务器地址是什么?</string>
<string name="ftue_auth_sign_in_choose_server_header">你的对话发生的地方</string>
<string name="search_space_two_parents">%1$s 和 %2$s</string>
<string name="auth_reset_password_error_unverified">电子邮件未确认,检查你的收件箱</string>
<string name="auth_reset_password_error_unverified">电子邮件未验证,请检查您的收件箱</string>
<string name="location_share_loading_map_error">无法加载地图
\n此主服务器可能没有设置好显示地图。</string>
<string name="a11y_open_settings">打开设置</string>
@ -2562,7 +2562,7 @@
<string name="home_layout_preferences_sort_name">A—Z</string>
<string name="home_layout_preferences_sort_activity">活动</string>
<string name="home_layout_preferences_sort_by">排序方式</string>
<string name="home_layout_preferences_recents">显示最近</string>
<string name="home_layout_preferences_recents">显示最近</string>
<string name="home_layout_preferences_filters">显示过滤条件</string>
<string name="home_layout_preferences">布局偏好</string>
<string name="explore_rooms">探索房间</string>
@ -2622,7 +2622,7 @@
<string name="device_manager_verification_status_detail_current_session_verified">你当前的会话已准备好安全地收发消息。</string>
<string name="labs_enable_deferred_dm_summary">仅在首条消息创建私聊消息</string>
<string name="labs_enable_deferred_dm_title">启用延迟的私聊消息</string>
<string name="labs_enable_new_app_layout_summary">简化的Element带有可选的标签</string>
<string name="labs_enable_new_app_layout_summary">简化的 Element带有可选的标签</string>
<string name="settings_security_incognito_keyboard_title">无痕键盘</string>
<string name="settings_security_incognito_keyboard_summary">请求键盘不要根据您在对话中输入的内容更新任何个性化数据,例如输入历史记录和字典。 请注意,某些键盘可能不遵守此设置。</string>
<string name="permissions_rationale_msg_notification">${app_name}需要权限来显示通知。通知可以显示消息、邀请等。
@ -2762,9 +2762,31 @@
<string name="a11y_stop_voice_broadcast_record">停止语音广播录制</string>
<string name="a11y_pause_voice_broadcast_record">暂停语音广播录制</string>
<string name="a11y_resume_voice_broadcast_record">继续语音广播录制</string>
<string name="login_scan_qr_code">扫描QR</string>
<string name="login_scan_qr_code">扫描二维</string>
<string name="attachment_type_voice_broadcast">语音广播</string>
<string name="push_gateway_item_enabled">已启用:</string>
<string name="push_gateway_item_device_id">会话ID</string>
<string name="error_check_network">出了点差错。请检查您的网络连接并重试。</string>
<string name="attachment_type_selector_contact">联系人</string>
<string name="rich_text_editor_full_screen_toggle">切换全屏模式</string>
<string name="device_manager_other_sessions_select">选择会话</string>
<string name="attachment_type_selector_text_formatting">文本格式</string>
<string name="attachment_type_selector_camera">相机</string>
<string name="attachment_type_selector_location">位置</string>
<string name="attachment_type_selector_poll">投票</string>
<string name="attachment_type_selector_voice_broadcast">语音广播</string>
<string name="attachment_type_selector_file">附件</string>
<string name="attachment_type_selector_sticker">贴纸</string>
<string name="attachment_type_selector_gallery">照片库</string>
<string name="error_voice_broadcast_permission_denied_message">您没有在此房间内开始语音广播所需的权限。联系房间管理员升级您的权限。</string>
<string name="error_voice_broadcast_blocked_by_someone_else_message">其他人已经在录制语音广播。等待他们的语音广播结束以开始新的广播。</string>
<string name="error_voice_broadcast_already_in_progress_message">您已经在录制语音广播。请结束您当前的语音广播以开始新的语音广播。</string>
<string name="error_voice_broadcast_unauthorized_title">无法开始新的语音广播</string>
<string name="a11y_voice_broadcast_fast_forward">快进 30 秒</string>
<string name="a11y_voice_broadcast_fast_backward">快退 30 秒</string>
<string name="action_deselect_all">取消全选</string>
<string name="action_select_all">全选</string>
<plurals name="x_selected">
<item quantity="other">已选择 %1$d</item>
</plurals>
</resources>

View file

@ -2781,4 +2781,12 @@
<plurals name="x_selected">
<item quantity="other">已選取 %1$d</item>
</plurals>
<string name="rich_text_editor_full_screen_toggle">切換全螢幕模式</string>
<string name="attachment_type_selector_text_formatting">文字格式化</string>
<string name="error_voice_broadcast_already_in_progress_message">您已在錄製語音廣播。請結束您目前的語音廣播以開始新的。</string>
<string name="error_voice_broadcast_blocked_by_someone_else_message">其他人已在錄製語音廣播。等待他們的語音廣播結束以開始新的。</string>
<string name="error_voice_broadcast_permission_denied_message">您沒有在此聊天室中開始語音廣播的必要權限。請聯絡聊天室管理員以升級您的權限。</string>
<string name="error_voice_broadcast_unauthorized_title">無法開始新的語音廣播</string>
<string name="a11y_voice_broadcast_fast_forward">快轉30秒</string>
<string name="a11y_voice_broadcast_fast_backward">快退30秒</string>
</resources>

View file

@ -2,6 +2,7 @@
<resources>
<string name="ellipsis" translatable="false"></string>
<string name="no_value_placeholder" translatable="false"></string>
<!-- Temporary string -->
<string name="not_implemented" translatable="false">Not implemented yet in ${app_name}</string>

View file

@ -1679,7 +1679,8 @@
<string name="create_new_room">Create New Room</string>
<string name="create_new_space">Create New Space</string>
<string name="error_no_network">No network. Please check your Internet connection.</string>
<string name="error_check_network">Something went wrong. Please check your network connection and try again.</string>
<!-- TODO delete -->
<string name="error_check_network" tools:ignore="UnusedResources">Something went wrong. Please check your network connection and try again.</string>
<string name="change_room_directory_network">"Change network"</string>
<string name="please_wait">"Please wait…"</string>
<string name="updating_your_data">Updating your data…</string>
@ -3094,6 +3095,14 @@
<string name="a11y_play_voice_broadcast">Play or resume voice broadcast</string>
<string name="a11y_pause_voice_broadcast">Pause voice broadcast</string>
<string name="a11y_voice_broadcast_buffering">Buffering</string>
<string name="a11y_voice_broadcast_fast_backward">Fast backward 30 seconds</string>
<string name="a11y_voice_broadcast_fast_forward">Fast forward 30 seconds</string>
<string name="error_voice_broadcast_unauthorized_title">Cant start a new voice broadcast</string>
<string name="error_voice_broadcast_permission_denied_message">You dont have the required permissions to start a voice broadcast in this room. Contact a room administrator to upgrade your permissions.</string>
<string name="error_voice_broadcast_blocked_by_someone_else_message">Someone else is already recording a voice broadcast. Wait for their voice broadcast to end to start a new one.</string>
<string name="error_voice_broadcast_already_in_progress_message">You are already recording a voice broadcast. Please end your current voice broadcast to start a new one.</string>
<!-- Examples of usage: 6h 15min 30sec left / 15min 30sec left / 30sec left -->
<string name="voice_broadcast_recording_time_left">%1$s left</string>
<string name="upgrade_room_for_restricted">Anyone in %s will be able to find and join this room - no need to manually invite everyone. Youll be able to change this in room settings anytime.</string>
<string name="upgrade_room_for_restricted_no_param">Anyone in a parent space will be able to find and join this room - no need to manually invite everyone. Youll be able to change this in room settings anytime.</string>
@ -3222,6 +3231,7 @@
<string name="attachment_type_selector_location">Location</string>
<string name="attachment_type_selector_camera">Camera</string>
<string name="attachment_type_selector_contact">Contact</string>
<string name="attachment_type_selector_text_formatting">Text formatting</string>
<string name="message_reaction_show_less">Show less</string>
<plurals name="message_reaction_show_more">
@ -3338,6 +3348,11 @@
<string name="device_manager_other_sessions_no_inactive_sessions_found">No inactive sessions found.</string>
<string name="device_manager_other_sessions_clear_filter">Clear Filter</string>
<string name="device_manager_other_sessions_select">Select sessions</string>
<string name="device_manager_other_sessions_multi_signout_selection">Sign out</string>
<plurals name="device_manager_other_sessions_multi_signout_all">
<item quantity="one">Sign out of %1$d session</item>
<item quantity="other">Sign out of %1$d sessions</item>
</plurals>
<string name="device_manager_session_overview_signout">Sign out of this session</string>
<string name="device_manager_session_details_title">Session details</string>
<string name="device_manager_session_details_description">Application, device, and activity information.</string>
@ -3366,7 +3381,9 @@
<string name="device_manager_learn_more_sessions_unverified_title">Unverified sessions</string>
<string name="device_manager_learn_more_sessions_unverified">Unverified sessions are sessions that have logged in with your credentials but not been cross-verified.\n\nYou should make especially certain that you recognise these sessions as they could represent an unauthorised use of your account.</string>
<string name="device_manager_learn_more_sessions_verified_title">Verified sessions</string>
<string name="device_manager_learn_more_sessions_verified">Verified sessions have logged in with your credentials and then been verified, either using your secure passphrase or by cross-verifying.\n\nThis means they hold encryption keys for your previous messages, and confirm to other users you are communicating with that these sessions are really you.</string>
<!-- TODO TO BE REMOVED -->
<string name="device_manager_learn_more_sessions_verified" tools:ignore="UnusedResources">Verified sessions have logged in with your credentials and then been verified, either using your secure passphrase or by cross-verifying.\n\nThis means they hold encryption keys for your previous messages, and confirm to other users you are communicating with that these sessions are really you.</string>
<string name="device_manager_learn_more_sessions_verified_description">Verified sessions are anywhere you are using this account after entering your passphrase or confirming your identity with another verified session.\n\nThis means that you have all the keys needed to unlock your encrypted messages and confirm to other users that you trust this session.</string>
<string name="device_manager_learn_more_session_rename_title">Renaming sessions</string>
<string name="device_manager_learn_more_session_rename">Other users in direct messages and rooms that you join are able to view a full list of your sessions.\n\nThis provides them with confidence that they are really speaking to you, but it also means they can see the session name you enter here.</string>
<string name="labs_enable_session_manager_title">Enable new session manager</string>
@ -3442,5 +3459,6 @@
<string name="rich_text_editor_format_italic">Apply italic format</string>
<string name="rich_text_editor_format_strikethrough">Apply strikethrough format</string>
<string name="rich_text_editor_format_underline">Apply underline format</string>
<string name="rich_text_editor_full_screen_toggle">Toggle full screen mode</string>
</resources>

View file

@ -74,7 +74,8 @@
<dimen name="location_sharing_live_duration_choice_margin_vertical">22dp</dimen>
<!-- Voice Broadcast -->
<dimen name="voice_broadcast_controller_button_size">48dp</dimen>
<dimen name="voice_broadcast_recorder_button_size">48dp</dimen>
<dimen name="voice_broadcast_player_button_size">36dp</dimen>
<!-- Material 3 -->
<dimen name="collapsing_toolbar_layout_medium_size">112dp</dimen>

View file

@ -5,6 +5,7 @@
<attr name="sessionsListHeaderTitle" format="string" />
<attr name="sessionsListHeaderDescription" format="string" />
<attr name="sessionsListHeaderHasLearnMoreLink" format="boolean" />
<attr name="sessionsListHeaderMenu" format="reference" />
</declare-styleable>
</resources>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="VoiceBroadcastMetadataView">
<attr name="metadataIcon" format="reference" />
<attr name="metadataValue" format="string" />
</declare-styleable>
</resources>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="VoiceBroadcastLiveIndicator" parent="Widget.AppCompat.TextView">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">20dp</item>
<item name="android:backgroundTint">?colorError</item>
<item name="android:drawablePadding">4dp</item>
<item name="android:ellipsize">end</item>
<item name="android:gravity">center_vertical</item>
<item name="android:maxWidth">100dp</item>
<item name="android:paddingEnd">4dp</item>
<item name="android:paddingStart">4dp</item>
<item name="android:singleLine">true</item>
<item name="android:textColor">?colorOnError</item>
<item name="drawableTint">?colorOnError</item>
</style>
</resources>

View file

@ -62,7 +62,7 @@ android {
// that the app's state is completely cleared between tests.
testInstrumentationRunnerArguments clearPackageData: 'true'
buildConfigField "String", "SDK_VERSION", "\"1.5.7\""
buildConfigField "String", "SDK_VERSION", "\"1.5.8\""
buildConfigField "String", "GIT_SDK_REVISION", "\"${gitRevision()}\""
buildConfigField "String", "GIT_SDK_REVISION_UNIX_DATE", "\"${gitRevisionUnixDate()}\""

View file

@ -16,6 +16,7 @@
package org.matrix.android.sdk.session.search
import org.amshove.kluent.shouldBeEqualTo
import org.junit.Assert.assertTrue
import org.junit.FixMethodOrder
import org.junit.Test
@ -43,7 +44,7 @@ class SearchMessagesTest : InstrumentedTest {
cryptoTestData.firstSession
.searchService()
.search(
searchTerm = "lore",
searchTerm = "lorem",
limit = 10,
includeProfile = true,
afterLimit = 0,
@ -61,7 +62,7 @@ class SearchMessagesTest : InstrumentedTest {
cryptoTestData.firstSession
.searchService()
.search(
searchTerm = "lore",
searchTerm = "lorem",
roomId = cryptoTestData.roomId,
limit = 10,
includeProfile = true,
@ -73,7 +74,28 @@ class SearchMessagesTest : InstrumentedTest {
}
}
private fun doTest(block: suspend (CryptoTestData) -> SearchResult) = runCryptoTest(context()) { cryptoTestHelper, commonTestHelper ->
@Test
fun sendTextMessageAndSearchPartOfItIncompleteWord() {
doTest(expectedNumberOfResult = 0) { cryptoTestData ->
cryptoTestData.firstSession
.searchService()
.search(
searchTerm = "lore", /* incomplete word */
roomId = cryptoTestData.roomId,
limit = 10,
includeProfile = true,
afterLimit = 0,
beforeLimit = 10,
orderByRecent = true,
nextBatch = null
)
}
}
private fun doTest(
expectedNumberOfResult: Int = 2,
block: suspend (CryptoTestData) -> SearchResult,
) = runCryptoTest(context()) { cryptoTestHelper, commonTestHelper ->
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceInARoom(false)
val aliceSession = cryptoTestData.firstSession
val aliceRoomId = cryptoTestData.roomId
@ -87,7 +109,7 @@ class SearchMessagesTest : InstrumentedTest {
val data = block.invoke(cryptoTestData)
assertTrue(data.results?.size == 2)
data.results?.size shouldBeEqualTo expectedNumberOfResult
assertTrue(
data.results
?.all {

View file

@ -17,25 +17,51 @@
package org.matrix.android.sdk.api.extensions
import org.matrix.android.sdk.api.metrics.MetricPlugin
import org.matrix.android.sdk.api.metrics.SpannableMetricPlugin
import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.InvocationKind
import kotlin.contracts.contract
/**
* Executes the given [block] while measuring the transaction.
*
* @param block Action/Task to be executed within this span.
*/
@OptIn(ExperimentalContracts::class)
inline fun measureMetric(metricMeasurementPlugins: List<MetricPlugin>, block: () -> Unit) {
inline fun List<MetricPlugin>.measureMetric(block: () -> Unit) {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
try {
metricMeasurementPlugins.forEach { plugin -> plugin.startTransaction() } // Start the transaction.
this.forEach { plugin -> plugin.startTransaction() } // Start the transaction.
block()
} catch (throwable: Throwable) {
metricMeasurementPlugins.forEach { plugin -> plugin.onError(throwable) } // Capture if there is any exception thrown.
this.forEach { plugin -> plugin.onError(throwable) } // Capture if there is any exception thrown.
throw throwable
} finally {
metricMeasurementPlugins.forEach { plugin -> plugin.finishTransaction() } // Finally, finish this transaction.
this.forEach { plugin -> plugin.finishTransaction() } // Finally, finish this transaction.
}
}
/**
* Executes the given [block] while measuring a span.
*
* @param operation Name of the new span.
* @param description Description of the new span.
* @param block Action/Task to be executed within this span.
*/
@OptIn(ExperimentalContracts::class)
inline fun List<SpannableMetricPlugin>.measureSpan(operation: String, description: String, block: () -> Unit) {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
try {
this.forEach { plugin -> plugin.startSpan(operation, description) } // Start the transaction.
block()
} catch (throwable: Throwable) {
this.forEach { plugin -> plugin.onError(throwable) } // Capture if there is any exception thrown.
throw throwable
} finally {
this.forEach { plugin -> plugin.finishSpan() } // Finally, finish this transaction.
}
}

View file

@ -0,0 +1,36 @@
/*
* Copyright (c) 2022 The Matrix.org Foundation C.I.C.
*
* 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 org.matrix.android.sdk.api.metrics
/**
* A plugin that tracks span along with transactions.
*/
interface SpannableMetricPlugin : MetricPlugin {
/**
* Starts the span for a sub-task.
*
* @param operation Name of the new span.
* @param description Description of the new span.
*/
fun startSpan(operation: String, description: String)
/**
* Finish the span when sub-task is completed.
*/
fun finishSpan()
}

View file

@ -0,0 +1,32 @@
/*
* Copyright 2022 The Matrix.org Foundation C.I.C.
*
* 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 org.matrix.android.sdk.api.metrics
import org.matrix.android.sdk.api.logger.LoggerTag
import timber.log.Timber
private val loggerTag = LoggerTag("SyncDurationMetricPlugin", LoggerTag.CRYPTO)
/**
* An spannable metric plugin for sync response handling task.
*/
interface SyncDurationMetricPlugin : SpannableMetricPlugin {
override fun logTransaction(message: String?) {
Timber.tag(loggerTag.value).v("## syncResponseHandler() : $message")
}
}

View file

@ -17,6 +17,7 @@
package org.matrix.android.sdk.api.session.crypto
import android.content.Context
import androidx.annotation.Size
import androidx.lifecycle.LiveData
import androidx.paging.PagedList
import org.matrix.android.sdk.api.MatrixCallback
@ -55,6 +56,8 @@ interface CryptoService {
fun deleteDevice(deviceId: String, userInteractiveAuthInterceptor: UserInteractiveAuthInterceptor, callback: MatrixCallback<Unit>)
fun deleteDevices(@Size(min = 1) deviceIds: List<String>, userInteractiveAuthInterceptor: UserInteractiveAuthInterceptor, callback: MatrixCallback<Unit>)
fun getCryptoVersion(context: Context, longFormat: Boolean): String
fun isCryptoEnabled(): Boolean

View file

@ -53,7 +53,7 @@ inline fun <reified T> Content?.toModel(catchError: Boolean = true): T? {
val moshiAdapter = moshi.adapter(T::class.java)
return try {
moshiAdapter.fromJsonValue(this)
} catch (e: Exception) {
} catch (e: Throwable) {
if (catchError) {
Timber.e(e, "To model failed : $e")
null

View file

@ -70,6 +70,11 @@ data class HomeServerCapabilities(
* True if the home server supports threaded read receipts and unread notifications.
*/
val canUseThreadReadReceiptsAndNotifications: Boolean = false,
/**
* True if the home server supports remote toggle of Pusher for a given device.
*/
val canRemotelyTogglePushNotificationsOfDevices: Boolean = false,
) {
enum class RoomCapabilitySupport {

View file

@ -16,6 +16,9 @@
package org.matrix.android.sdk.api.session.homeserver
import androidx.lifecycle.LiveData
import org.matrix.android.sdk.api.util.Optional
/**
* This interface defines a method to retrieve the homeserver capabilities.
*/
@ -30,4 +33,9 @@ interface HomeServerCapabilitiesService {
* Get the HomeServer capabilities.
*/
fun getHomeServerCapabilities(): HomeServerCapabilities
/**
* Get a LiveData on the HomeServer capabilities.
*/
fun getHomeServerCapabilitiesLive(): LiveData<Optional<HomeServerCapabilities>>
}

View file

@ -180,11 +180,13 @@ fun TimelineEvent.isRootThread(): Boolean {
/**
* Get the latest message body, after a possible edition, stripping the reply prefix if necessary.
* @param formatted Indicates whether the formatted HTML body of the message should be retrieved of the plain text one.
* @return If [formatted] is `true`, the HTML body of the message will be retrieved if available. Otherwise, the plain text/markdown version will be returned.
*/
fun TimelineEvent.getTextEditableContent(formatted: Boolean): String {
val lastMessageContent = getLastMessageContent()
val lastContentBody = if (formatted && lastMessageContent is MessageContentWithFormattedBody) {
lastMessageContent.formattedBody
lastMessageContent.formattedBody ?: lastMessageContent.body
} else {
lastMessageContent?.body
} ?: return ""

View file

@ -18,6 +18,7 @@ package org.matrix.android.sdk.internal.auth.version
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
import org.matrix.android.sdk.api.extensions.orFalse
/**
* Model for https://matrix.org/docs/spec/client_server/latest#get-matrix-client-versions.
@ -56,6 +57,7 @@ private const val FEATURE_THREADS_MSC3440_STABLE = "org.matrix.msc3440.stable"
private const val FEATURE_QR_CODE_LOGIN = "org.matrix.msc3882"
private const val FEATURE_THREADS_MSC3771 = "org.matrix.msc3771"
private const val FEATURE_THREADS_MSC3773 = "org.matrix.msc3773"
private const val FEATURE_REMOTE_TOGGLE_PUSH_NOTIFICATIONS_MSC3881 = "org.matrix.msc3881"
/**
* Return true if the SDK supports this homeserver version.
@ -142,3 +144,12 @@ private fun Versions.getMaxVersion(): HomeServerVersion {
?.maxOrNull()
?: HomeServerVersion.r0_0_0
}
/**
* Indicate if the server supports MSC3881: https://github.com/matrix-org/matrix-spec-proposals/pull/3881.
*
* @return true if remote toggle of push notifications is supported
*/
internal fun Versions.doesServerSupportRemoteToggleOfPushNotifications(): Boolean {
return unstableFeatures?.get(FEATURE_REMOTE_TOGGLE_PUSH_NOTIFICATIONS_MSC3881).orFalse()
}

View file

@ -242,8 +242,12 @@ internal class DefaultCryptoService @Inject constructor(
}
override fun deleteDevice(deviceId: String, userInteractiveAuthInterceptor: UserInteractiveAuthInterceptor, callback: MatrixCallback<Unit>) {
deleteDevices(listOf(deviceId), userInteractiveAuthInterceptor, callback)
}
override fun deleteDevices(deviceIds: List<String>, userInteractiveAuthInterceptor: UserInteractiveAuthInterceptor, callback: MatrixCallback<Unit>) {
deleteDeviceTask
.configureWith(DeleteDeviceTask.Params(deviceId, userInteractiveAuthInterceptor, null)) {
.configureWith(DeleteDeviceTask.Params(deviceIds, userInteractiveAuthInterceptor, null)) {
this.executionThread = TaskThread.CRYPTO
this.callback = callback
}

View file

@ -355,7 +355,7 @@ internal class DeviceListManager @Inject constructor(
val relevantPlugins = metricPlugins.filterIsInstance<DownloadDeviceKeysMetricsPlugin>()
val response: KeysQueryResponse
measureMetric(relevantPlugins) {
relevantPlugins.measureMetric {
response = try {
downloadKeysForUsersTask.execute(params)
} catch (throwable: Throwable) {

View file

@ -18,6 +18,7 @@ package org.matrix.android.sdk.internal.crypto.api
import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo
import org.matrix.android.sdk.api.session.crypto.model.DevicesListResponse
import org.matrix.android.sdk.internal.crypto.model.rest.DeleteDeviceParams
import org.matrix.android.sdk.internal.crypto.model.rest.DeleteDevicesParams
import org.matrix.android.sdk.internal.crypto.model.rest.KeyChangesResponse
import org.matrix.android.sdk.internal.crypto.model.rest.KeysClaimBody
import org.matrix.android.sdk.internal.crypto.model.rest.KeysClaimResponse
@ -136,6 +137,17 @@ internal interface CryptoApi {
@Body params: DeleteDeviceParams
)
/**
* Deletes the given devices, and invalidates any access token associated with them.
* Doc: https://spec.matrix.org/v1.4/client-server-api/#post_matrixclientv3delete_devices
*
* @param params the deletion parameters
*/
@POST(NetworkConstants.URI_API_PREFIX_PATH_V3 + "delete_devices")
suspend fun deleteDevices(
@Body params: DeleteDevicesParams
)
/**
* Update the device information.
* Doc: https://matrix.org/docs/spec/client_server/r0.4.0.html#put-matrix-client-r0-devices-deviceid

View file

@ -23,6 +23,9 @@ import com.squareup.moshi.JsonClass
*/
@JsonClass(generateAdapter = true)
internal data class DeleteDeviceParams(
/**
* Additional authentication information for the user-interactive authentication API.
*/
@Json(name = "auth")
val auth: Map<String, *>? = null
val auth: Map<String, *>? = null,
)

View file

@ -0,0 +1,37 @@
/*
* Copyright 2022 The Matrix.org Foundation C.I.C.
*
* 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 org.matrix.android.sdk.internal.crypto.model.rest
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
/**
* This class provides the parameter to delete several devices.
*/
@JsonClass(generateAdapter = true)
internal data class DeleteDevicesParams(
/**
* Additional authentication information for the user-interactive authentication API.
*/
@Json(name = "auth")
val auth: Map<String, *>? = null,
/**
* Required: The list of device IDs to delete.
*/
@Json(name = "devices")
val deviceIds: List<String>,
)

View file

@ -16,12 +16,14 @@
package org.matrix.android.sdk.internal.crypto.tasks
import androidx.annotation.Size
import org.matrix.android.sdk.api.auth.UIABaseAuth
import org.matrix.android.sdk.api.auth.UserInteractiveAuthInterceptor
import org.matrix.android.sdk.api.session.uia.UiaResult
import org.matrix.android.sdk.internal.auth.registration.handleUIA
import org.matrix.android.sdk.internal.crypto.api.CryptoApi
import org.matrix.android.sdk.internal.crypto.model.rest.DeleteDeviceParams
import org.matrix.android.sdk.internal.crypto.model.rest.DeleteDevicesParams
import org.matrix.android.sdk.internal.network.GlobalErrorReceiver
import org.matrix.android.sdk.internal.network.executeRequest
import org.matrix.android.sdk.internal.task.Task
@ -30,7 +32,7 @@ import javax.inject.Inject
internal interface DeleteDeviceTask : Task<DeleteDeviceTask.Params, Unit> {
data class Params(
val deviceId: String,
@Size(min = 1) val deviceIds: List<String>,
val userInteractiveAuthInterceptor: UserInteractiveAuthInterceptor?,
val userAuthParam: UIABaseAuth?
)
@ -42,9 +44,24 @@ internal class DefaultDeleteDeviceTask @Inject constructor(
) : DeleteDeviceTask {
override suspend fun execute(params: DeleteDeviceTask.Params) {
require(params.deviceIds.isNotEmpty())
try {
executeRequest(globalErrorReceiver) {
cryptoApi.deleteDevice(params.deviceId, DeleteDeviceParams(params.userAuthParam?.asMap()))
val userAuthParam = params.userAuthParam?.asMap()
if (params.deviceIds.size == 1) {
cryptoApi.deleteDevice(
deviceId = params.deviceIds.first(),
DeleteDeviceParams(auth = userAuthParam)
)
} else {
cryptoApi.deleteDevices(
DeleteDevicesParams(
auth = userAuthParam,
deviceIds = params.deviceIds
)
)
}
}
} catch (throwable: Throwable) {
if (params.userInteractiveAuthInterceptor == null ||

View file

@ -58,6 +58,7 @@ import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo038
import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo039
import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo040
import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo041
import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo042
import org.matrix.android.sdk.internal.util.Normalizer
import org.matrix.android.sdk.internal.util.database.MatrixRealmMigration
import javax.inject.Inject
@ -66,7 +67,7 @@ internal class RealmSessionStoreMigration @Inject constructor(
private val normalizer: Normalizer
) : MatrixRealmMigration(
dbName = "Session",
schemaVersion = 41L,
schemaVersion = 42L,
) {
/**
* Forces all RealmSessionStoreMigration instances to be equal.
@ -117,5 +118,6 @@ internal class RealmSessionStoreMigration @Inject constructor(
if (oldVersion < 39) MigrateSessionTo039(realm).perform()
if (oldVersion < 40) MigrateSessionTo040(realm).perform()
if (oldVersion < 41) MigrateSessionTo041(realm).perform()
if (oldVersion < 42) MigrateSessionTo042(realm).perform()
}
}

View file

@ -45,7 +45,8 @@ internal object HomeServerCapabilitiesMapper {
canUseThreading = entity.canUseThreading,
canControlLogoutDevices = entity.canControlLogoutDevices,
canLoginWithQrCode = entity.canLoginWithQrCode,
canUseThreadReadReceiptsAndNotifications = entity.canUseThreadReadReceiptsAndNotifications
canUseThreadReadReceiptsAndNotifications = entity.canUseThreadReadReceiptsAndNotifications,
canRemotelyTogglePushNotificationsOfDevices = entity.canRemotelyTogglePushNotificationsOfDevices,
)
}

View file

@ -0,0 +1,31 @@
/*
* Copyright (c) 2022 The Matrix.org Foundation C.I.C.
*
* 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 org.matrix.android.sdk.internal.database.migration
import io.realm.DynamicRealm
import org.matrix.android.sdk.internal.database.model.HomeServerCapabilitiesEntityFields
import org.matrix.android.sdk.internal.extensions.forceRefreshOfHomeServerCapabilities
import org.matrix.android.sdk.internal.util.database.RealmMigrator
internal class MigrateSessionTo042(realm: DynamicRealm) : RealmMigrator(realm, 42) {
override fun doMigrate(realm: DynamicRealm) {
realm.schema.get("HomeServerCapabilitiesEntity")
?.addField(HomeServerCapabilitiesEntityFields.CAN_REMOTELY_TOGGLE_PUSH_NOTIFICATIONS_OF_DEVICES, Boolean::class.java)
?.forceRefreshOfHomeServerCapabilities()
}
}

View file

@ -33,6 +33,7 @@ internal open class HomeServerCapabilitiesEntity(
var canControlLogoutDevices: Boolean = false,
var canLoginWithQrCode: Boolean = false,
var canUseThreadReadReceiptsAndNotifications: Boolean = false,
var canRemotelyTogglePushNotificationsOfDevices: Boolean = false,
) : RealmObject() {
companion object

View file

@ -22,6 +22,7 @@ internal object NetworkConstants {
const val URI_API_PREFIX_PATH_ = "$URI_API_PREFIX_PATH/"
const val URI_API_PREFIX_PATH_R0 = "$URI_API_PREFIX_PATH/r0/"
const val URI_API_PREFIX_PATH_V1 = "$URI_API_PREFIX_PATH/v1/"
const val URI_API_PREFIX_PATH_V3 = "$URI_API_PREFIX_PATH/v3/"
const val URI_API_PREFIX_PATH_UNSTABLE = "$URI_API_PREFIX_PATH/unstable/"
// Media

View file

@ -408,7 +408,7 @@ internal class UploadContentWorker(val context: Context, params: WorkerParameter
newAttachmentAttributes: NewAttachmentAttributes
) {
localEchoRepository.updateEcho(eventId) { _, event ->
val content: Content? = event.asDomain().content
val content: Content? = event.asDomain(castJsonNumbers = true).content
val messageContent: MessageContent? = content.toModel()
// Retrieve potential additional content from the original event
val additionalContent = content.orEmpty() - messageContent?.toContent().orEmpty().keys

Some files were not shown because too many files have changed in this diff Show more