mirror of
https://github.com/element-hq/element-android
synced 2024-12-21 00:42:04 +03:00
Merge branch 'release/1.5.2' into main
This commit is contained in:
commit
f6411d673f
177 changed files with 4504 additions and 525 deletions
2
.github/workflows/danger.yml
vendored
2
.github/workflows/danger.yml
vendored
|
@ -11,7 +11,7 @@ jobs:
|
|||
- run: |
|
||||
npm install --save-dev @babel/plugin-transform-flow-strip-types
|
||||
- name: Danger
|
||||
uses: danger/danger-js@11.1.2
|
||||
uses: danger/danger-js@11.1.3
|
||||
with:
|
||||
args: "--dangerfile tools/danger/dangerfile.js"
|
||||
env:
|
||||
|
|
2
.github/workflows/quality.yml
vendored
2
.github/workflows/quality.yml
vendored
|
@ -66,7 +66,7 @@ jobs:
|
|||
yarn add danger-plugin-lint-report --dev
|
||||
- name: Danger lint
|
||||
if: always()
|
||||
uses: danger/danger-js@11.1.2
|
||||
uses: danger/danger-js@11.1.3
|
||||
with:
|
||||
args: "--dangerfile tools/danger/dangerfile-lint.js"
|
||||
env:
|
||||
|
|
56
CHANGES.md
56
CHANGES.md
|
@ -1,3 +1,59 @@
|
|||
Changes in Element v1.5.2 (2022-10-05)
|
||||
======================================
|
||||
|
||||
Features ✨
|
||||
----------
|
||||
- New App Layout is now enabled by default! Go to the Settings > Labs to toggle this ([#7166](https://github.com/vector-im/element-android/issues/7166))
|
||||
- Render inline images in the timeline ([#351](https://github.com/vector-im/element-android/issues/351))
|
||||
- Add privacy setting to disable personalized learning by the keyboard ([#6633](https://github.com/vector-im/element-android/issues/6633))
|
||||
|
||||
Bugfixes 🐛
|
||||
----------
|
||||
- Disable emoji keyboard not applies in reply ([#5029](https://github.com/vector-im/element-android/issues/5029))
|
||||
- Fix animated images not autoplaying sometimes if only a thumbnail was fetched from the server ([#6215](https://github.com/vector-im/element-android/issues/6215))
|
||||
- Add Warning shield when a user previously verified rotated their cross signing keys ([#6702](https://github.com/vector-im/element-android/issues/6702))
|
||||
- Can't verify user when option to send keys to verified devices only is selected ([#6723](https://github.com/vector-im/element-android/issues/6723))
|
||||
- Add option to only send to verified devices per room (web parity) ([#6725](https://github.com/vector-im/element-android/issues/6725))
|
||||
- Delete pin code key and the key used for biometrics authentication on logout ([#6906](https://github.com/vector-im/element-android/issues/6906))
|
||||
- Fix crash on previewing images to upload on Android Pie. ([#7184](https://github.com/vector-im/element-android/issues/7184))
|
||||
- Fix app restarts in loop on Android 13 on the first run of the app. ([#7224](https://github.com/vector-im/element-android/issues/7224))
|
||||
|
||||
In development 🚧
|
||||
----------------
|
||||
- [Device Management] Learn more bottom sheets ([#7100](https://github.com/vector-im/element-android/issues/7100))
|
||||
- [Device management] Verify current session ([#7114](https://github.com/vector-im/element-android/issues/7114))
|
||||
- [Device management] Verify another session ([#7143](https://github.com/vector-im/element-android/issues/7143))
|
||||
- [Device management] Rename a session ([#7158](https://github.com/vector-im/element-android/issues/7158))
|
||||
- [Device Manager] Unverified and inactive sessions list ([#7170](https://github.com/vector-im/element-android/issues/7170))
|
||||
- [Device management] Sign out a session ([#7190](https://github.com/vector-im/element-android/issues/7190))
|
||||
- [Device Manager] Parse user agents ([#7247](https://github.com/vector-im/element-android/issues/7247))
|
||||
- [Voice Broadcast] Add a feature flag with the composer action ([#7258](https://github.com/vector-im/element-android/issues/7258))
|
||||
|
||||
Improved Documentation 📚
|
||||
------------------------
|
||||
- Draft onboarding documentation of the project at `./docs/_developer_onboarding.md` ([#7126](https://github.com/vector-im/element-android/issues/7126))
|
||||
|
||||
SDK API changes ⚠️
|
||||
------------------
|
||||
- Allow the sync timeout to be configured (mainly useful for testing) ([#7198](https://github.com/vector-im/element-android/issues/7198))
|
||||
- Ports SDK instrumentation tests to use suspending functions instead of countdown latches ([#7207](https://github.com/vector-im/element-android/issues/7207))
|
||||
- [Device Manager] Extend user agent to include device information ([#7209](https://github.com/vector-im/element-android/issues/7209))
|
||||
|
||||
Other changes
|
||||
-------------
|
||||
- Add support for `/tableflip` command ([#12](https://github.com/vector-im/element-android/issues/12))
|
||||
- Decreases the size of rounded corners and increases the maximum width of message bubbles to help avoid unnecessary unused space on screen ([#5712](https://github.com/vector-im/element-android/issues/5712))
|
||||
- Adds screenshot testing tooling ([#5798](https://github.com/vector-im/element-android/issues/5798))
|
||||
- [AppLayout]: added tracking of new analytics events ([#6508](https://github.com/vector-im/element-android/issues/6508))
|
||||
- Target API 12 and compile with Android SDK 32. ([#6929](https://github.com/vector-im/element-android/issues/6929))
|
||||
- Add basic integration of Sentry to capture errors and crashes if user has given consent. ([#7076](https://github.com/vector-im/element-android/issues/7076))
|
||||
- Add support to `/devtools` command. ([#7126](https://github.com/vector-im/element-android/issues/7126))
|
||||
- Fix lint warning, and cleanup the code ([#7159](https://github.com/vector-im/element-android/issues/7159))
|
||||
- Mutualize the pending auth handling ([#7193](https://github.com/vector-im/element-android/issues/7193))
|
||||
- CI: Prevent modification of translations by developer. ([#7211](https://github.com/vector-im/element-android/issues/7211))
|
||||
- Fix typo in strings.xml and make sure this is American English. ([#7287](https://github.com/vector-im/element-android/issues/7287))
|
||||
|
||||
|
||||
Changes in Element v1.5.1 (2022-09-28)
|
||||
======================================
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ buildscript {
|
|||
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.4.0.2513'
|
||||
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.5'
|
||||
classpath "com.likethesalad.android:stem-plugin:2.2.2"
|
||||
classpath 'org.owasp:dependency-check-gradle:7.2.0'
|
||||
classpath 'org.owasp:dependency-check-gradle:7.2.1'
|
||||
classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.7.10"
|
||||
classpath "org.jetbrains.kotlinx:kotlinx-knit:0.4.0"
|
||||
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3'
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
Add support for `/tableflip` command
|
|
@ -1 +0,0 @@
|
|||
Adds screenshot testing tooling
|
|
@ -1 +0,0 @@
|
|||
Target API 12 and compile with Android SDK 32.
|
|
@ -1 +0,0 @@
|
|||
[Device management] Verify current session
|
|
@ -1 +0,0 @@
|
|||
Draft onboarding documentation of the project at `./docs/_developer_onboarding.md`
|
|
@ -1 +0,0 @@
|
|||
Add support to `/devtools` command.
|
|
@ -1 +0,0 @@
|
|||
[Device management] Verify another session
|
|
@ -1 +0,0 @@
|
|||
[Device management] Rename a session
|
|
@ -1 +0,0 @@
|
|||
Fix lint warning, and cleanup the code
|
|
@ -1 +0,0 @@
|
|||
New App Layout is now enabled by default! Go to the Settings > Labs to toggle this
|
|
@ -1 +0,0 @@
|
|||
[Device Manager] Unverified and inactive sessions list
|
|
@ -1 +0,0 @@
|
|||
[Device management] Sign out a session
|
|
@ -1 +0,0 @@
|
|||
Mutualize the pending auth handling
|
|
@ -1 +0,0 @@
|
|||
Allow the sync timeout to be configured (mainly useful for testing)
|
|
@ -1 +0,0 @@
|
|||
Ports SDK instrumentation tests to use suspending functions instead of countdown latches
|
|
@ -1 +0,0 @@
|
|||
[Device Manager] Extend user agent to include device information
|
|
@ -1 +0,0 @@
|
|||
CI: Prevent modification of translations by developer.
|
|
@ -9,9 +9,9 @@ ext.versions = [
|
|||
|
||||
def gradle = "7.2.2"
|
||||
// Ref: https://kotlinlang.org/releases.html
|
||||
def kotlin = "1.7.10"
|
||||
def kotlin = "1.7.20"
|
||||
def kotlinCoroutines = "1.6.4"
|
||||
def dagger = "2.43.2"
|
||||
def dagger = "2.44"
|
||||
def appDistribution = "16.0.0-beta04"
|
||||
def retrofit = "2.9.0"
|
||||
def arrow = "0.8.2"
|
||||
|
@ -22,13 +22,15 @@ def flowBinding = "1.2.0"
|
|||
def flipper = "0.164.0"
|
||||
def epoxy = "4.6.2"
|
||||
def mavericks = "2.7.0"
|
||||
def glide = "4.13.2"
|
||||
def glide = "4.14.1"
|
||||
def bigImageViewer = "1.8.1"
|
||||
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.4.1"
|
||||
|
||||
def fragment = "1.5.3"
|
||||
|
||||
// Testing
|
||||
|
@ -119,6 +121,7 @@ ext.libs = [
|
|||
markwon : [
|
||||
'core' : "io.noties.markwon:core:$markwon",
|
||||
'extLatex' : "io.noties.markwon:ext-latex:$markwon",
|
||||
'imageGlide' : "io.noties.markwon:image-glide:$markwon",
|
||||
'inlineParser' : "io.noties.markwon:inline-parser:$markwon",
|
||||
'html' : "io.noties.markwon:html:$markwon"
|
||||
],
|
||||
|
@ -164,10 +167,13 @@ ext.libs = [
|
|||
apache : [
|
||||
'commonsImaging' : "org.apache.sanselan:sanselan:0.97-incubator"
|
||||
],
|
||||
sentry: [
|
||||
'sentryAndroid' : "io.sentry:sentry-android:$sentry"
|
||||
],
|
||||
tests : [
|
||||
'kluent' : "org.amshove.kluent:kluent-android:1.68",
|
||||
'timberJunitRule' : "net.lachlanmckee:timber-junit-rule:1.0.1",
|
||||
'junit' : "junit:junit:4.13.2"
|
||||
'junit' : "junit:junit:4.13.2",
|
||||
]
|
||||
]
|
||||
|
||||
|
|
|
@ -148,6 +148,7 @@ ext.groups = [
|
|||
'io.opencensus',
|
||||
'io.reactivex.rxjava2',
|
||||
'io.realm',
|
||||
'io.sentry',
|
||||
'it.unimi.dsi',
|
||||
'jakarta.activation',
|
||||
'jakarta.xml.bind',
|
||||
|
@ -210,7 +211,6 @@ ext.groups = [
|
|||
'org.ow2.asm',
|
||||
'org.ow2.asm',
|
||||
'org.reactivestreams',
|
||||
'org.robolectric',
|
||||
'org.slf4j',
|
||||
'org.sonatype.oss',
|
||||
'org.testng',
|
||||
|
|
3
fastlane/metadata/android/cs-CZ/changelogs/40104360.txt
Normal file
3
fastlane/metadata/android/cs-CZ/changelogs/40104360.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
Nový vzhled aplikace lze povolit v Experimentálních funkcích. Prosíme, vyzkoušejte ho!
|
||||
Oprava problémů s chybějícími oznámeními a dlouhou přírůstkovou synchronizací.
|
||||
Úplný seznam změn: https://github.com/vector-im/element-android/releases
|
3
fastlane/metadata/android/de-DE/changelogs/40104360.txt
Normal file
3
fastlane/metadata/android/de-DE/changelogs/40104360.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
Das neue App-Layout kann in den experimentellen Einstellungen aktiviert werden. Probier es gerne aus!
|
||||
Fehler bzgl. ausbleibender Benachrichtigungen und langwierigem inkrementellem Synchronisieren behoben.
|
||||
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases
|
|
@ -1 +1 @@
|
|||
Gruppen-Messenger - verschlüsselte Kommunikation, Gruppenchat und Videoanrufe
|
||||
Gruppen-Messenger – verschlüsselte Kommunikation, Gruppen und Videoanrufe
|
||||
|
|
|
@ -1 +1 @@
|
|||
Element - Sicherer Messenger
|
||||
Element – Sicher kommunizieren
|
||||
|
|
2
fastlane/metadata/android/en-US/changelogs/40105020.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40105020.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
Main changes in this version: New app layout enabled by default!
|
||||
Full changelog: https://github.com/vector-im/element-android/releases
|
3
fastlane/metadata/android/et/changelogs/40104360.txt
Normal file
3
fastlane/metadata/android/et/changelogs/40104360.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
Testide alt saad sisse lülitada uue kujunduse - palun proovi seda!
|
||||
Parandasime teavitustega seotud vigu ning andmete sünkroniseerimist pika viitega.
|
||||
Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases
|
3
fastlane/metadata/android/fa/changelogs/40104360.txt
Normal file
3
fastlane/metadata/android/fa/changelogs/40104360.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
چینش کارهٔ جدید میتواند در تنظیمات آزمایشگاهها به کار بیفتند. لطفاً بیازماییدش!
|
||||
رفع مشکلات مربوط به آگاهی غایب و همگامسازی تجمعّی طولانی.
|
||||
گزارش دگرگونی کامل: https://github.com/vector-im/element-android/releases
|
3
fastlane/metadata/android/fr-FR/changelogs/40104360.txt
Normal file
3
fastlane/metadata/android/fr-FR/changelogs/40104360.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
La nouvelle présentation de l’application est disponibles dans les paramètres expérimentaux. Essayez-là !
|
||||
Correction de problèmes sur les notifications manquantes, et la synchronisation incrémentale lente.
|
||||
Intégralité des changements : https://github.com/vector-im/element-android/releases
|
3
fastlane/metadata/android/hu-HU/changelogs/40104360.txt
Normal file
3
fastlane/metadata/android/hu-HU/changelogs/40104360.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
Az új alkalmazás megjelenés a Laborokban bekapcsolható. Próbáld ki!
|
||||
Hiányzó értesítések és hosszú inkrementális szinkronizáció javítása.
|
||||
Teljes változásnapló: https://github.com/vector-im/element-android/releases
|
3
fastlane/metadata/android/id/changelogs/40104360.txt
Normal file
3
fastlane/metadata/android/id/changelogs/40104360.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
Tata Letak Aplikasi Baru dapat diaktifkan di pengaturan Uji Coba. Cobalah!
|
||||
Perbariki masalah tentang notifikasi hilang, dan penyinkronan inkremental panjang.
|
||||
Catatan perubahan lanjutan: https://github.com/vector-im/element-android/releases
|
3
fastlane/metadata/android/it-IT/changelogs/40104360.txt
Normal file
3
fastlane/metadata/android/it-IT/changelogs/40104360.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
Nuova disposizione dell'app attivabile nelle impostazioni Laboratori. Provala!
|
||||
Corretti problemi su notifiche mancanti e sincronizzazioni incrementali lunghe.
|
||||
Cronologia completa: https://github.com/vector-im/element-android/releases
|
3
fastlane/metadata/android/pt-BR/changelogs/40104360.txt
Normal file
3
fastlane/metadata/android/pt-BR/changelogs/40104360.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
Novo Layout de App poder ser habilitado nas configurações de Labs. Por favor dê uma chance!
|
||||
Consertar problemas sobre notificação faltando, e sinc incremental longo.
|
||||
Changelog completo: https://github.com/vector-im/element-android/releases
|
3
fastlane/metadata/android/sk/changelogs/40104360.txt
Normal file
3
fastlane/metadata/android/sk/changelogs/40104360.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
Nové usporiadanie aplikácie môžete povoliť v nastaveniach laboratórií. Vyskúšajte to!
|
||||
Oprava problémov týkajúcich sa chýbajúcich oznámení a dlhej inkrementálnej synchronizácie.
|
||||
Úplný zoznam zmien: https://github.com/vector-im/element-android/releases
|
3
fastlane/metadata/android/uk/changelogs/40104360.txt
Normal file
3
fastlane/metadata/android/uk/changelogs/40104360.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
Новий макет програми можна увімкнути в налаштуваннях лабораторії. Спробуйте!
|
||||
Виправлено проблеми з відсутністю сповіщень та тривалою інкрементною синхронізацією.
|
||||
Список усіх змін: https://github.com/vector-im/element-android/releases
|
|
@ -5,7 +5,7 @@ Element — це і безпечний месенджер, і застосуно
|
|||
- Повністю зашифровані повідомлення для надання можливості безпечнішого корпоративного спілкування, навіть для віддалених працівників
|
||||
- Децентралізований чат на основі відкритого коду Matrix
|
||||
- Безпечний обмін файлами із зашифрованими даними для керування проєктами
|
||||
- Відеочати з передачею голосу через IP та показом екрану іншим
|
||||
- Відеочати з передачею голосу через IP та показом екрана іншим
|
||||
- Проста інтеграція з вашими улюбленими інструментами для онлайн-співпраці, інструментами керування проєктами, послугами VoIP та іншими застосунками обміну повідомленнями для команд
|
||||
|
||||
Element цілковито відрізняється від інших застосунків обміну повідомленнями та спільної роботи. Він працює на Matrix, відкритій мережі для безпечного обміну повідомленнями та децентралізованого зв'язку. Це дозволяє самостійне розгортання, щоб надати користувачам якнайбільше володіння та контролю над їх даними та повідомленнями.
|
||||
|
|
|
@ -30,7 +30,7 @@ Element 透过不同的方式让你掌控一切:
|
|||
你可以与 Matrix 网络上的任何人聊天,不论他们是使用 Element、其他 Matrix 应用或其他通讯应用。
|
||||
|
||||
<b>超级安全</b>
|
||||
真正的端到端加密(仅有那些在对话中的可以解密讯息)以及交叉签章装置验证。
|
||||
真正的端到端加密(仅有那些在对话中的人可以解密讯息)以及交叉签章装置验证。
|
||||
|
||||
<b>完整的通讯与整合</b>
|
||||
信息传递、语音与视频通话、文件分享、画面分享与超多的整合、机器人与挂件。建构房间、社群、保持联络并完成工作。
|
||||
|
|
|
@ -1 +1 @@
|
|||
群组消息应用-加密的消息传递、群组聊天和视频通话
|
||||
群组消息应用——加密的消息传递、群组聊天和视频通话
|
||||
|
|
3
fastlane/metadata/android/zh-TW/changelogs/40104360.txt
Normal file
3
fastlane/metadata/android/zh-TW/changelogs/40104360.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
新的應用程式佈局可在「實驗室」設定中啟用。請試試看!
|
||||
修復關於遺失通知的問題,以及增量同步需要長時間的問題。
|
||||
完整的變更紀錄:https://github.com/vector-im/element-android/releases
|
|
@ -15,7 +15,8 @@ org.gradle.vfs.watch=true
|
|||
org.gradle.caching=true
|
||||
|
||||
# Android Settings
|
||||
android.enableJetifier=false
|
||||
android.enableJetifier=true
|
||||
android.jetifier.ignorelist=android-base-common,common
|
||||
android.useAndroidX=true
|
||||
|
||||
#Project Settings
|
||||
|
|
|
@ -30,7 +30,15 @@ object ImageUtils {
|
|||
fun getBitmap(context: Context, uri: Uri): Bitmap? {
|
||||
return try {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
ImageDecoder.decodeBitmap(ImageDecoder.createSource(context.contentResolver, uri))
|
||||
val source = ImageDecoder.createSource(context.contentResolver, uri)
|
||||
val listener = ImageDecoder.OnHeaderDecodedListener { decoder, _, _ ->
|
||||
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.P) {
|
||||
// Allocating hardware bitmap may cause a crash on framework versions prior to Android Q
|
||||
decoder.allocator = ImageDecoder.ALLOCATOR_SOFTWARE
|
||||
}
|
||||
}
|
||||
|
||||
ImageDecoder.decodeBitmap(source, listener)
|
||||
} else {
|
||||
context.contentResolver.openInputStream(uri)?.use { inputStream ->
|
||||
BitmapFactory.decodeStream(inputStream)
|
||||
|
|
|
@ -2674,4 +2674,40 @@
|
|||
<string name="device_manager_verification_status_detail_other_session_verified">Aquesta sessió està llesta per a missatges segurs.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_verified">La teva sessió actual està llesta per a missatges segurs.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">Verifica la teva sessió actual obtenir missatges segurs millorats.</string>
|
||||
<string name="labs_enable_deferred_dm_summary">Crea missatge directe només al primer missatge</string>
|
||||
<string name="labs_enable_deferred_dm_title">Activa missatges directes programats</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">Verifica o tanca aquesta sessió per estar més segur.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">Per estar més segur, tanca qualsevol sessió que no reconeguis o ja no utilitzis.</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">No s\'han trobat sessions inactives.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">No s\'han trobat sessions no verificades.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">No s\'han trobat sessions verificades.</string>
|
||||
<string name="device_manager_session_details_title">Detalls de sessió</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Esborra filtre</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Última activitat</string>
|
||||
<string name="device_manager_session_details_session_name">Nom de la sessió</string>
|
||||
<string name="device_manager_session_details_description">Informació d\'aplicació, dispositiu i activitat.</string>
|
||||
<string name="device_manager_session_details_device_ip_address">Adreça IP</string>
|
||||
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
|
||||
<item quantity="one">Pensa en tancar sessió de les sessions antigues (%1$d dia o més) que ja no utilitzis.</item>
|
||||
<item quantity="other">Pensa en tancar sessió de les sessions antigues (%1$d dies o més) que ja no utilitzis.</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">Inactiu</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">No verificat</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">Verificat</string>
|
||||
<string name="a11y_device_manager_filter">Filtra</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="one">Inactiu durant %1$d dia o més</item>
|
||||
<item quantity="other">Inactiu durant %1$d dies o més</item>
|
||||
</plurals>
|
||||
<string name="device_manager_filter_option_inactive">Inactiu</string>
|
||||
<string name="device_manager_filter_option_unverified">No verificat</string>
|
||||
<string name="device_manager_filter_option_verified">Verificat</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Totes les sessions</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Filtre</string>
|
||||
<string name="device_manager_session_last_activity">Última activitat %1$s</string>
|
||||
<string name="device_manager_device_title">Dispositiu</string>
|
||||
<string name="device_manager_session_title">Sessió</string>
|
||||
<string name="device_manager_current_session_title">Sessió actual</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Element simplificat amb pestanyes opcionals</string>
|
||||
<string name="labs_enable_new_app_layout_title">Activa la nova visualització</string>
|
||||
</resources>
|
|
@ -2720,4 +2720,48 @@
|
|||
<string name="a11y_collapse_space_children">Sbalit podprostory %s</string>
|
||||
<string name="a11y_expand_space_children">Rozbalit podprostory %s</string>
|
||||
<string name="change_space">Změnit prostor</string>
|
||||
</resources>
|
||||
<string name="device_manager_session_details_device_ip_address">IP adresa</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Poslední aktivita</string>
|
||||
<string name="device_manager_session_details_session_name">Název relace</string>
|
||||
<string name="device_manager_session_details_description">Informace o aplikacích, zařízeních a aktivitách.</string>
|
||||
<string name="device_manager_session_details_title">Podrobnosti o relaci</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Vyčistit filtr</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">Nebyly nalezeny žádné neaktivní relace.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">Nebyly nalezeny žádné neověřené relace.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">Nebyly nalezeny žádné ověřené relace.</string>
|
||||
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
|
||||
<item quantity="one">Zvažte odhlášení ze starých relací (%1$d den nebo více), které již nepoužíváte.</item>
|
||||
<item quantity="few">Zvažte odhlášení ze starých relací (%1$d dny nebo více), které již nepoužíváte.</item>
|
||||
<item quantity="other">Zvažte odhlášení ze starých relací (%1$d dnů nebo více), které již nepoužíváte.</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">Neaktivní</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">Ověřte své relace pro vylepšené bezpečné zasílání zpráv nebo se odhlaste z těch, které již nepoznáváte nebo nepoužíváte.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">Neověřeno</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">Pro nejlepší zabezpečení se odhlaste z každé relace, kterou již nepoznáváte nebo nepoužíváte.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">Ověřeno</string>
|
||||
<string name="a11y_device_manager_filter">Filtr</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="one">Neaktivní po dobu %1$d dne nebo déle</item>
|
||||
<item quantity="few">Neaktivní po dobu %1$d dnů nebo déle</item>
|
||||
<item quantity="other">Neaktivní po dobu %1$d dnů nebo déle</item>
|
||||
</plurals>
|
||||
<string name="device_manager_filter_option_inactive">Neaktivní</string>
|
||||
<string name="device_manager_filter_option_unverified_description">Není připraveno na bezpečné zasílání zpráv</string>
|
||||
<string name="device_manager_filter_option_unverified">Neověřeno</string>
|
||||
<string name="device_manager_filter_option_verified_description">Připraveno na bezpečné zasílání zpráv</string>
|
||||
<string name="device_manager_filter_option_verified">Ověřeno</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Všechny relace</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Filtr</string>
|
||||
<string name="device_manager_session_last_activity">Poslední aktivita %1$s</string>
|
||||
<string name="device_manager_device_title">Zařízení</string>
|
||||
<string name="device_manager_session_title">Relace</string>
|
||||
<string name="device_manager_current_session_title">Aktuální relace</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">Pro nejlepší zabezpečení a spolehlivost tuto relaci ověřte nebo se z ní odhlaste.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">Ověřte svou aktuální relaci pro vylepšené bezpečené zasílání zpráv.</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">Tato relace je připravena pro bezpečné zasílání zpráv.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_verified">Vaše aktuální relace je připravena pro bezpečné zasílání zpráv.</string>
|
||||
<string name="labs_enable_deferred_dm_summary">Vytvořit přímou zprávu pouze při první zprávě</string>
|
||||
<string name="labs_enable_deferred_dm_title">Povolit odložené přímé zprávy</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Zjednodušený Element s volitelnými kartami</string>
|
||||
<string name="labs_enable_new_app_layout_title">Povolit nový vzhled</string>
|
||||
</resources>
|
|
@ -103,7 +103,7 @@
|
|||
<string name="notice_room_avatar_changed_by_you">Du hast das Bild des Raumes geändert</string>
|
||||
<string name="notice_room_name_changed_by_you">Du hast den Raumnamen zu %1$s geändert</string>
|
||||
<string name="notice_placed_video_call_by_you">Du hast einen Videoanruf gestartet.</string>
|
||||
<string name="notice_placed_voice_call_by_you">Du hast einen Audioanruf gestartet.</string>
|
||||
<string name="notice_placed_voice_call_by_you">Du hast einen Sprachanruf gestartet.</string>
|
||||
<string name="notice_answered_call_by_you">Du hast den Anruf angenommen.</string>
|
||||
<string name="notice_ended_call_by_you">Du hast den Anruf beendet.</string>
|
||||
<string name="notice_made_future_room_visibility_by_you">Du hast den zukünftigen Nachrichtenverlauf für %1$s sichtbar gemacht</string>
|
||||
|
@ -269,7 +269,7 @@
|
|||
<string name="send_bug_report">Problem melden</string>
|
||||
<string name="send_bug_report_description">Bitte beschreibe das Problem. Was hast du genau gemacht\? Was sollte passieren\? Was ist tatsächlich passiert\?</string>
|
||||
<string name="send_bug_report_placeholder">Problembeschreibung</string>
|
||||
<string name="send_bug_report_logs_description">Um Probleme diagnostizieren zu können, werden Protokolle des Clients zusammen mit dem Fehlerbericht übermittelt. Dieser Fehlerbericht wird, wie die Protokolle und das Bildschirmfoto, nicht öffentlich sichtbar sein. Wenn du nur den oben eingegebenen Text senden möchtest, die nachfolgenden Haken entsprechend entfernen:</string>
|
||||
<string name="send_bug_report_logs_description">Um Probleme diagnostizieren zu können, werden Protokolle der Anwendung zusammen mit dem Fehlerbericht übermittelt. Dieser Fehlerbericht wird, wie die Protokolle und das Bildschirmfoto, nicht öffentlich sichtbar sein. Wenn du nur den oben eingegebenen Text senden möchtest, die nachfolgenden Haken entsprechend entfernen:</string>
|
||||
<string name="send_bug_report_alert_message">Du scheinst dein Telefon frustriert zu schütteln. Möchtest du das Fenster zum Senden eines Fehlerberichts öffnen\?</string>
|
||||
<string name="send_bug_report_sent">Dein Fehlerbericht wurde erfolgreich übermittelt</string>
|
||||
<string name="send_bug_report_failed">Der Fehlerbericht konnte nicht übermittelt werden (%s)</string>
|
||||
|
@ -278,7 +278,7 @@
|
|||
<string name="join_room">Raum betreten</string>
|
||||
<string name="username">Benutzername</string>
|
||||
<string name="logout">Abmelden</string>
|
||||
<string name="hs_url">Heimserver-Adresse</string>
|
||||
<string name="hs_url">Heim-Server-Adresse</string>
|
||||
<string name="search">Suchen</string>
|
||||
<string name="start_voice_call">Sprachanruf starten</string>
|
||||
<string name="start_video_call">Videoanruf starten</string>
|
||||
|
@ -308,7 +308,7 @@
|
|||
<string name="call_error_user_not_responding">Die Gegenseite hat den Anruf nicht angenommen.</string>
|
||||
<string name="permissions_rationale_popup_title">Information</string>
|
||||
<string name="permissions_rationale_msg_record_audio">${app_name} benötigt die Berechtigung, auf dein Mikrofon zugreifen zu können, um (Sprach-)Anrufe tätigen zu können.</string>
|
||||
<string name="permissions_rationale_msg_camera_and_audio">${app_name} benötigt die Berechtigung, auf Kamera und Mikrofon zu zugreifen, um Video-Anrufe durchzuführen.
|
||||
<string name="permissions_rationale_msg_camera_and_audio">${app_name} benötigt die Berechtigung, auf Kamera und Mikrofon zuzugreifen, um Videoanrufe durchzuführen.
|
||||
\n
|
||||
\nBitte erlaube den Zugriff im nächsten Dialog, um den Anruf durchzuführen.</string>
|
||||
<string name="yes">Ja</string>
|
||||
|
@ -351,12 +351,12 @@
|
|||
<string name="settings_display_name">Anzeigename</string>
|
||||
<string name="settings_add_email_address">E-Mail-Adresse hinzufügen</string>
|
||||
<string name="settings_add_phone_number">Telefonnummer hinzufügen</string>
|
||||
<string name="settings_app_info_link_summary">Appinfo in den Systemeinstellungen öffnen.</string>
|
||||
<string name="settings_app_info_link_title">App-Info</string>
|
||||
<string name="settings_app_info_link_summary">Anwendungsinformationen in den Systemeinstellungen anzeigen.</string>
|
||||
<string name="settings_app_info_link_title">Anwendungsinformationen</string>
|
||||
<string name="settings_enable_all_notif">Benachrichtigungen für diesen Account</string>
|
||||
<string name="settings_enable_this_device">Benachrichtigungen für diese Sitzung</string>
|
||||
<string name="settings_messages_in_one_to_one">Direktnachrichten</string>
|
||||
<string name="settings_messages_in_group_chat">Gruppenchats</string>
|
||||
<string name="settings_messages_in_group_chat">Gruppenunterhaltungen</string>
|
||||
<string name="settings_invited_to_room">Einladungen</string>
|
||||
<string name="settings_call_invitations">Anrufe</string>
|
||||
<string name="settings_messages_sent_by_bot">Nachrichten von Bots</string>
|
||||
|
@ -366,7 +366,7 @@
|
|||
<string name="settings_version">Version</string>
|
||||
<string name="settings_olm_version">OLM-Version</string>
|
||||
<string name="settings_app_term_conditions">Nutzungsbedingungen</string>
|
||||
<string name="settings_third_party_notices">Nutzungshinweise von Drittanbietern</string>
|
||||
<string name="settings_third_party_notices">Drittanbieter-Lizenzen</string>
|
||||
<string name="settings_copyright">Urheberrechtserklärung</string>
|
||||
<string name="settings_privacy_policy">Datenschutzerklärung</string>
|
||||
<string name="settings_clear_cache">Cache leeren</string>
|
||||
|
@ -390,8 +390,8 @@
|
|||
<string name="devices_details_last_seen_format">%1$s @ %2$s</string>
|
||||
<string name="devices_delete_dialog_title">Authentifizierung</string>
|
||||
<string name="settings_logged_in">Angemeldet als</string>
|
||||
<string name="settings_home_server">Heimserver</string>
|
||||
<string name="settings_identity_server">Identitätsserver</string>
|
||||
<string name="settings_home_server">Heim-Server</string>
|
||||
<string name="settings_identity_server">Identitäts-Server</string>
|
||||
<string name="account_email_validation_message">Bitte prüfe deinen E-Mail-Posteingang und klicke auf den in der E-Mail enthaltenen Link. Klicke anschließend auf Fortsetzen.</string>
|
||||
<string name="account_email_already_used_error">Diese E-Mail-Adresse wird bereits verwendet.</string>
|
||||
<string name="account_phone_number_already_used_error">Diese Telefonnummer wird bereits verwendet.</string>
|
||||
|
@ -403,8 +403,8 @@
|
|||
<string name="settings_unignore_user">Alle Nachrichten von %s anzeigen\?</string>
|
||||
<string name="settings_select_country">Wähle ein Land</string>
|
||||
<string name="room_settings_topic">Thema</string>
|
||||
<string name="room_settings_room_read_history_rules_pref_title">Lesbarkeit des Chatverlaufs</string>
|
||||
<string name="room_settings_room_read_history_rules_pref_dialog_title">Wer kann den Chatverlauf lesen?</string>
|
||||
<string name="room_settings_room_read_history_rules_pref_title">Lesbarkeit des Verlaufs</string>
|
||||
<string name="room_settings_room_read_history_rules_pref_dialog_title">Wer kann den Verlauf lesen\?</string>
|
||||
<string name="room_settings_read_history_entry_anyone">Alle</string>
|
||||
<string name="room_settings_read_history_entry_members_only_option_time_shared">Nur Mitglieder</string>
|
||||
<string name="room_settings_read_history_entry_members_only_invited">Nur Mitglieder (ab Einladung)</string>
|
||||
|
@ -412,8 +412,8 @@
|
|||
<string name="room_settings_banned_users_title">Verbannte Benutzer</string>
|
||||
<string name="room_settings_category_advanced_title">Erweitert</string>
|
||||
<string name="room_settings_room_internal_id">Interne ID dieses Raumes</string>
|
||||
<string name="room_settings_labs_pref_title">Experimentelle Einstellungen</string>
|
||||
<string name="room_settings_labs_warning_message">Dies sind experimentelle Funktionen, die in unerwarteter Weise Fehler verursachen können. Mit Vorsicht zu verwenden.</string>
|
||||
<string name="room_settings_labs_pref_title">Labor</string>
|
||||
<string name="room_settings_labs_warning_message">Dies sind experimentelle Funktionen, die in unerwarteter Weise Fehler verursachen können. Verwende sie mit Vorsicht.</string>
|
||||
<string name="room_settings_set_main_address">Als Hauptadresse setzen</string>
|
||||
<string name="room_settings_unset_main_address">Als Hauptadresse aufheben</string>
|
||||
<string name="encryption_information_decryption_error">Entschlüsselungsfehler</string>
|
||||
|
@ -447,7 +447,7 @@
|
|||
<string name="settings_start_on_boot">Starte beim Systemstart</string>
|
||||
<string name="settings_clear_media_cache">Medien-Cache leeren</string>
|
||||
<string name="settings_keep_media">Medien behalten</string>
|
||||
<string name="settings_always_show_timestamps">Für alle Nachrichten Zeitstempel anzeigen</string>
|
||||
<string name="settings_always_show_timestamps">Zeitstempel für alle Nachrichten</string>
|
||||
<string name="media_saving_period_3_days">3 Tage</string>
|
||||
<string name="media_saving_period_1_week">1 Woche</string>
|
||||
<string name="media_saving_period_1_month">1 Monat</string>
|
||||
|
@ -500,7 +500,7 @@
|
|||
<string name="start_video_call_prompt_msg">Sicher, dass du einen Videoanruf starten möchtest\?</string>
|
||||
<string name="room_participants_ban_prompt_msg">Die Verbannung einer Person entfernt sie aus diesem Raum und hindert sie am erneuten Beitritt.</string>
|
||||
<string name="room_settings_all_messages">Alle Nachrichten</string>
|
||||
<string name="settings_inline_url_preview">URL-Vorschau im Chat</string>
|
||||
<string name="settings_inline_url_preview">URL-Vorschau</string>
|
||||
<string name="settings_vibrate_on_mention">Vibriere beim Erwähnen eines Nutzers</string>
|
||||
<string name="create">Erstellen</string>
|
||||
<string name="group_details_home">Startseite</string>
|
||||
|
@ -551,9 +551,9 @@
|
|||
<string name="dialog_user_consent_content">Um %1$s weiter zu verwenden, musst die Geschäftsbedingungen begutachten und ihnen zustimmen.</string>
|
||||
<string name="dialog_user_consent_submit">Jetzt prüfen</string>
|
||||
<string name="deactivate_account_title">Konto deaktivieren</string>
|
||||
<string name="deactivate_account_content">Dies wird dein Konto permanent unbenutzbar machen. Du wirst dich nicht anmelden können und keiner wird denselben Nutzernamen erneut registrieren können. Du verlässt automatisch alle Räume, in denen du bist, und deine Kontoangaben werden vom Identitätsserver gelöscht. <b>Diese Aktion ist unumkehrbar</b>.
|
||||
<string name="deactivate_account_content">Dies wird dein Konto permanent unbenutzbar machen. Du wirst dich nicht anmelden können und keiner wird denselben Nutzernamen erneut registrieren können. Du verlässt automatisch alle Räume, in denen du bist, und deine Kontoangaben werden vom Identitäts-Server gelöscht. <b>Diese Aktion ist unumkehrbar</b>.
|
||||
\n
|
||||
\nDie Deaktivierung deines Konto wird standardmäßig <b>keine deiner gesendeten Nachrichten löschen</b>. Wenn du möchtest, dass auch deine Nachrichten gelöscht werden, wähle zusätzlich die Option unten.
|
||||
\nDie Deaktivierung deines Kontos wird standardmäßig <b>keine deiner gesendeten Nachrichten löschen</b>. Wenn du möchtest, dass auch deine Nachrichten gelöscht werden, wähle zusätzlich die Option unten.
|
||||
\n
|
||||
\nDie Sichtbarkeit deiner Nachrichten ist ähnlich wie bei E-Mails: Wenn deine Nachrichten gelöscht werden, bedeutet dies, dass von dir verschickte Nachrichten nicht mit neuen oder unregistrierten Nutzer geteilt werden. Aber registrierte Nutzer, die bereits Zugang zu diesen Nachrichten haben, behalten weiterhin Zugriff auf ihre Kopie.</string>
|
||||
<string name="deactivate_account_delete_checkbox">Bitte alle Nachrichten, die ich gesendet habe, löschen, wenn mein Konto deaktiviert wird (Warnung: Unterhaltungen werden für zukünftige Nutzer unvollständig erscheinen)</string>
|
||||
|
@ -605,7 +605,7 @@
|
|||
<string name="generic_label_and_value">%1$s: %2$s</string>
|
||||
<string name="x_plus">+%d</string>
|
||||
<string name="room_participants_action_remove">Aus Unterhaltung entfernen</string>
|
||||
<string name="settings_inline_url_preview_summary">Linkvorschau im Chat aktivieren, falls dein Homeserver diese Funktion unterstützt.</string>
|
||||
<string name="settings_inline_url_preview_summary">Link-Vorschau im Chat aktivieren, falls dein Heim-Server diese Funktion unterstützt.</string>
|
||||
<string name="settings_send_typing_notifs">Schreibbenachrichtigungen senden</string>
|
||||
<string name="settings_send_typing_notifs_summary">Lasse andere Benutzer wissen, dass du tippst.</string>
|
||||
<string name="settings_send_markdown">Markdown-Formatierung</string>
|
||||
|
@ -614,7 +614,7 @@
|
|||
<string name="settings_show_read_receipts_summary">Klicke auf die Lesebestätigungen für eine detailliertere Liste.</string>
|
||||
<string name="settings_show_join_leave_messages_summary">Einladungen, Entfernungen und Verbannungen bleiben sichtbar.</string>
|
||||
<string name="settings_password">Passwort</string>
|
||||
<string name="settings_labs_native_camera_summary">Starte die System-Kamera anstelle der angepassten Kamera.</string>
|
||||
<string name="settings_labs_native_camera_summary">Starte die Kamera des Systems anstelle der selbstdefinierten.</string>
|
||||
<string name="command_problem_with_parameters">Das Kommando \"%s\" braucht mehr Parameter oder einige Parameter sind inkorrekt.</string>
|
||||
<string name="markdown_has_been_enabled">Markdown wurde aktiviert.</string>
|
||||
<string name="markdown_has_been_disabled">Markdown wurde deaktiviert.</string>
|
||||
|
@ -729,10 +729,10 @@
|
|||
<string name="keys_backup_setup_step3_generating_key_status">Wiederherstellungsschlüssel aus Passphrase generieren. Dies kann mehrere Sekunden brauchen.</string>
|
||||
<string name="keys_backup_setup_skip_msg">Du verlierst möglicherweise den Zugang zu deinen Nachrichten, wenn du dich abmeldest oder das Gerät verlierst.</string>
|
||||
<string name="keys_backup_restore_is_getting_backup_version">Rufe Backup-Version ab…</string>
|
||||
<string name="keys_backup_restore_with_passphrase">Nutze deine Wiederherstellungspassphrase, um deinen verschlüsselten Chatverlauf lesen zu können</string>
|
||||
<string name="keys_backup_restore_with_passphrase">Nutze deine Wiederherstellungs-Passphrase, um deinen verschlüsselten Nachrichtenverlauf lesen zu können</string>
|
||||
<string name="keys_backup_restore_use_recovery_key">nutze deinen Wiederherstellungsschlüssel</string>
|
||||
<string name="keys_backup_restore_with_passphrase_helper_with_link">Wenn du deine Wiederherstellungspassphrase nicht weist, kannst du %s.</string>
|
||||
<string name="keys_backup_restore_with_recovery_key">Nutze deinen Wiederherstellungsschlüssel, um deinen verschlüsselten Chatverlauf lesen zu können</string>
|
||||
<string name="keys_backup_restore_with_recovery_key">Nutze deinen Wiederherstellungsschlüssel, um deinen verschlüsselten Nachrichtenverlauf lesen zu können</string>
|
||||
<string name="keys_backup_restore_with_key_helper">Hast du deinen Wiederherstellungsschlüssel verloren\? Du kannst einen neuen in den Einstellungen einrichten.</string>
|
||||
<string name="keys_backup_passphrase_error_decrypt">Sicherung konnte mit dieser Passphrase nicht entschlüsselt werden. Bitte stelle sicher, dass du die korrekte Wiederherstellungspassphrase eingegeben hast.</string>
|
||||
<string name="keys_backup_recovery_code_empty_error_message">Gib deinen Wiederherstellungsschlüssel ein</string>
|
||||
|
@ -757,7 +757,7 @@
|
|||
<string name="keys_backup_settings_invalid_signature_from_verified_device">Die Sicherung hat eine ungültige Signatur von der verifizierten Sitzung %s</string>
|
||||
<string name="keys_backup_settings_invalid_signature_from_unverified_device">Die Sicherung hat eine ungültige Signatur von der nicht verifizierten Sitzung %s</string>
|
||||
<string name="keys_backup_settings_untrusted_backup">Um die Schlüsselsicherung für diese Sitzung zu verwenden, stelle sie jetzt mit deiner Passphrase oder deinem Wiederherstellungsschlüssel wieder her.</string>
|
||||
<string name="keys_backup_settings_delete_confirm_message">Deine gesicherten Schlüssel vom Server löschen\? Du wirst deinen Wiederherstellungsschlüssel nicht mehr nutzen können, um deinen verschlüsselten Chatverlauf zu lesen.</string>
|
||||
<string name="keys_backup_settings_delete_confirm_message">Deine gesicherten Schlüssel vom Server löschen\? Du wirst deinen Wiederherstellungsschlüssel nicht mehr nutzen können, um deinen verschlüsselten Nachrichtenverlauf zu lesen.</string>
|
||||
<string name="sign_out_bottom_sheet_warning_no_backup">Beim Abmelden gehen deine verschlüsselten Nachrichten verloren</string>
|
||||
<string name="sign_out_bottom_sheet_warning_backing_up">Schlüssel-Sicherung wird durchgeführt. Wenn du dich jetzt abmeldest, gehen deine verschlüsselten Nachrichten verloren.</string>
|
||||
<string name="sign_out_bottom_sheet_warning_backup_not_active">Schlüsselsicherung sollte bei allen Sitzungen aktiviert sein, um den Verlust verschlüsselter Nachrichten zu verhindern.</string>
|
||||
|
@ -889,7 +889,7 @@
|
|||
<string name="settings_other_third_party_notices">Sonstige Hinweise Dritter</string>
|
||||
<string name="navigate_to_room_when_already_in_the_room">Du siehst diesen Raum bereits!</string>
|
||||
<string name="settings_general_title">Allgemein</string>
|
||||
<string name="settings_preferences">Einstellungen</string>
|
||||
<string name="settings_preferences">Optionen</string>
|
||||
<string name="settings_security_and_privacy">Sicherheit und Privatsphäre</string>
|
||||
<string name="settings_push_rules">Push-Regeln</string>
|
||||
<string name="settings_push_rules_no_rules">Keine Push-Regeln definiert</string>
|
||||
|
@ -934,7 +934,7 @@
|
|||
<string name="settings_background_fdroid_sync_mode_disabled">Keine Hintergrundsynchronisation</string>
|
||||
<string name="settings_discovery_category">Auffindbarkeit</string>
|
||||
<string name="widget_integration_review_terms">Um fortzufahren, musst du die Nutzungsbedingungen akzeptieren.</string>
|
||||
<string name="identity_server_not_defined">Du verwendest keinen Identitätsserver</string>
|
||||
<string name="identity_server_not_defined">Du verwendest keinen Identitäts-Server</string>
|
||||
<string name="error_user_already_logged_in">Du versuchst anscheinend, eine Verbindung zu einem anderen Homeserver herzustellen. Möchtest du dich abmelden\?</string>
|
||||
<string name="push_gateway_item_push_key">Push-Key:</string>
|
||||
<string name="push_gateway_item_app_display_name">App-Anzeigename:</string>
|
||||
|
@ -942,13 +942,13 @@
|
|||
<string name="terms_of_service">Nutzungsbedingungen</string>
|
||||
<string name="terms_description_for_identity_server">Für andere auffindbar sein</string>
|
||||
<string name="terms_description_for_integration_manager">Verwende Bots, Bridges, Widgets und Sticker-Pakete</string>
|
||||
<string name="identity_server">Identitätsserver</string>
|
||||
<string name="disconnect_identity_server">Verbindung zum Identitätsserver trennen</string>
|
||||
<string name="add_identity_server">Identitätsserver konfigurieren</string>
|
||||
<string name="change_identity_server">Identitätsserver ändern</string>
|
||||
<string name="identity_server">Identitäts-Server</string>
|
||||
<string name="disconnect_identity_server">Verbindung zum Identitäts-Server trennen</string>
|
||||
<string name="add_identity_server">Identitäts-Server konfigurieren</string>
|
||||
<string name="change_identity_server">Identitäts-Server ändern</string>
|
||||
<string name="settings_discovery_emails_title">Auffindbare E-Mail-Adressen</string>
|
||||
<string name="settings_discovery_no_mails">Erkennungsoptionen werden angezeigt, sobald du eine E-Mail hinzugefügt hast.</string>
|
||||
<string name="settings_discovery_enter_identity_server">Gib einen neuen Identitätsserver ein</string>
|
||||
<string name="settings_discovery_enter_identity_server">Gib eine Identitäts-Server-Adresse ein</string>
|
||||
<string name="settings_discovery_bad_identity_server">Konnte keine Verbindung zum Homeserver herstellen</string>
|
||||
<string name="login_error_no_homeserver_found">Dies ist keine Adresse eines Matrixservers</string>
|
||||
<string name="login_error_homeserver_not_found">Kann Homeserver nicht unter dieser URL erreichen. Bitte überprüfen</string>
|
||||
|
@ -986,15 +986,15 @@
|
|||
<string name="push_gateway_item_device_name">Sitzungsname:</string>
|
||||
<string name="push_gateway_item_format">Format:</string>
|
||||
<string name="settings_discovery_identity_server_info">Du nutzt aktuell %1$s um vorhandene Kontakte zu finden und um von dir bekannten Kontakten gefunden zu werden.</string>
|
||||
<string name="settings_discovery_identity_server_info_none">Du benutzt aktuell keinen Identitätsserver. Um zu entdecken und um von dir bekannten Kontakten entdeckt zu werden, richte unten einen ein.</string>
|
||||
<string name="settings_discovery_identity_server_info_none">Aktuell nutzt du keinen Identitäts-Server. Richte einen ein, um andere zu finden und selbst auffindbar zu sein.</string>
|
||||
<string name="settings_discovery_msisdn_title">Auffindbare Telefonnummern</string>
|
||||
<string name="settings_discovery_please_enter_server">Bitte gib die Adresse des Identitätsservers ein</string>
|
||||
<string name="settings_discovery_no_terms_title">Identitätsserver hat keine Nutzungsbedingungen</string>
|
||||
<string name="settings_discovery_no_terms">Der Identitätsserver den du ausgewählt hast, hat keine Nutzungsbedingungen. Fahre nur fort, wenn du dem Besitzer des Dienstes vertraust</string>
|
||||
<string name="settings_discovery_please_enter_server">Bitte gib die Adresse des Identitäts-Servers ein</string>
|
||||
<string name="settings_discovery_no_terms_title">Identitäts-Server hat keine Nutzungsbedingungen</string>
|
||||
<string name="settings_discovery_no_terms">Der Identitäts-Server, den du ausgewählt hast, hat keine Nutzungsbedingungen. Fahre nur fort, wenn du den Betreibenden des Dienstes vertraust</string>
|
||||
<string name="settings_text_message_sent">Eine Textnachricht wurde an %s gesendet. Bitte gib den Verifizierungscode ein, den sie enthält.</string>
|
||||
<string name="labs_allow_extended_logging">Aktiviere ausführliche Logs.</string>
|
||||
<string name="labs_allow_extended_logging_summary">Ausführliche Logs werden der Entwicklung der App dadurch helfen, dass mehr Informationen übertragen werden, wenn du einen Fehlerbericht sendest. Auch wenn dies aktiviert ist, werden keine Nachrichteninhalte oder andere privaten Daten aufgezeichnet.</string>
|
||||
<string name="error_terms_not_accepted">Bitte erneut versuchen, nachdem du die Nutzungsbedingungen deines Heimservers akzeptiert hast.</string>
|
||||
<string name="labs_allow_extended_logging_summary">Ausführliche Protokolle werden bei der Entwicklung der App helfen. Auch wenn dies aktiviert ist, werden keine Nachrichteninhalte oder andere privaten Daten aufgezeichnet.</string>
|
||||
<string name="error_terms_not_accepted">Bitte erneut versuchen, nachdem du die Nutzungsbedingungen deines Heim-Servers akzeptiert hast.</string>
|
||||
<string name="room_widget_permission_webview_shared_info_title">Bei Benutzung könnten Cookies gesetzt werden und es könnten Daten mit %s geteilt werden:</string>
|
||||
<string name="room_widget_permission_shared_info_title">Bei Benutzung könnten Daten mit %s geteilt werden:</string>
|
||||
<string name="settings_discovery_no_msisdn">Optionen zum Finden werden erscheinen, sobald du eine Telefonnummer hinzugefügt hast.</string>
|
||||
|
@ -1004,7 +1004,7 @@
|
|||
<string name="a11y_open_drawer">Navigationsmenü öffnen</string>
|
||||
<string name="a11y_create_menu_open">Raumerstellungsmenü öffnen</string>
|
||||
<string name="a11y_create_menu_close">Schließe das Raumerstellungsmenü…</string>
|
||||
<string name="a11y_create_direct_message">Starte einen neuen Privatchat</string>
|
||||
<string name="a11y_create_direct_message">Erstelle eine neue Direktnachricht</string>
|
||||
<string name="a11y_create_room">Erstelle einen neuen Raum</string>
|
||||
<string name="a11y_close_keys_backup_banner">Schließe Key-Backup-Einblendung</string>
|
||||
<string name="a11y_jump_to_bottom">Zum Ende springen</string>
|
||||
|
@ -1052,7 +1052,7 @@
|
|||
<string name="help_long_click_on_room_for_more_options">Halte auf einem Raum um mehr Optionen anzuzeigen</string>
|
||||
<string name="room_join_rules_public">%1$s hat den Raum für jeden, der den Link hat, öffentlich gemacht.</string>
|
||||
<string name="timeline_unread_messages">Ungelesene Nachrichten</string>
|
||||
<string name="login_splash_text1">Privat oder in Gruppen mit Leuten chatten</string>
|
||||
<string name="login_splash_text1">Schreibe privat oder in Gruppen</string>
|
||||
<string name="login_splash_text2">Halte Gespräche mittels Verschlüsselung privat</string>
|
||||
<string name="login_splash_submit">Los geht\'s</string>
|
||||
<string name="login_server_title">Wähle einen Server</string>
|
||||
|
@ -1063,9 +1063,9 @@
|
|||
<string name="login_server_other_title">Andere</string>
|
||||
<string name="login_server_other_text">Benutzerdefinierte und erweiterte Einstellungen</string>
|
||||
<string name="login_continue">Fortfahren</string>
|
||||
<string name="settings_discovery_disconnect_identity_server_info">Eine Trennung von deinem Identitätsserver würde bedeuten, dass du weder von anderen Nutzern gefunden werden, noch diese per E-Mail oder Telefonnummer einladen kannst.</string>
|
||||
<string name="settings_discovery_disconnect_with_bound_pid">Du teilst deine E-Mail-Adressen oder Telefonnummern momentan auf dem Identitätsserver %1$s. Du wirst dich erneut mit %2$s verbinden müssen, um mit dem Teilen aufzuhören.</string>
|
||||
<string name="settings_agree_to_terms">Stimme den Nutzungsbedingungen des Identitätsservers (%s) zu, um zu erlauben per E-Mail oder Telefonnummer gefunden zu werden.</string>
|
||||
<string name="settings_discovery_disconnect_identity_server_info">Eine Trennung von deinem Identitäts-Server würde bedeuten, dass du weder von anderen gefunden werden, noch diese per E-Mail oder Telefonnummer einladen kannst.</string>
|
||||
<string name="settings_discovery_disconnect_with_bound_pid">Du teilst deine E-Mail-Adressen oder Telefonnummern momentan auf dem Identitäts-Server %1$s. Du wirst dich erneut mit %2$s verbinden müssen, um mit dem Teilen aufzuhören.</string>
|
||||
<string name="settings_agree_to_terms">Stimme den Nutzungsbedingungen des Identitäts-Servers (%s) zu, um per E-Mail-Adresse oder Telefonnummer auffindbar zu sein zu können.</string>
|
||||
<string name="error_handling_incoming_share">Zu teilende Daten nicht verarbeitbar</string>
|
||||
<string name="login_splash_text3">Erweitere und individualisiere dein Benutzererlebnis</string>
|
||||
<string name="login_connect_to">Mit %1$s verbinden</string>
|
||||
|
@ -1081,13 +1081,13 @@
|
|||
<string name="login_registration_disabled">Es tut uns leid. Dieser Server akzeptiert keine neuen Benutzerkonten.</string>
|
||||
<string name="login_registration_not_supported">Die Anwendung kann kein neues Benutzerkonto auf diesem Server erstellen.
|
||||
\n
|
||||
\nMöchtest du dich über eine Web-Anwendung anmelden\?</string>
|
||||
\nMöchtest du dich mit einer Web-Anwendung anmelden\?</string>
|
||||
<string name="login_login_with_email_error">Diese E-Mail-Adresse ist mit keinem Benutzerkonto verknüpft.</string>
|
||||
<string name="login_reset_password_on">Passwort auf %1$s zurücksetzen</string>
|
||||
<string name="login_reset_password_email_hint">E-Mail</string>
|
||||
<string name="login_reset_password_password_hint">Neues Passwort</string>
|
||||
<string name="login_reset_password_warning_title">Achtung!</string>
|
||||
<string name="login_reset_password_warning_content">Eine Änderung deines Passworts wird alle Ende-zu-Ende-Schlüssel zurücksetzen. Dein verschlüsselter Chatverlauf wird dadurch unlesbar. Richte die Schlüsselsicherung ein oder exportiere deine Raumschlüssel aus einer anderen Sitzung, bevor du dein Passwort zurücksetzt.</string>
|
||||
<string name="login_reset_password_warning_content">Eine Änderung deines Passworts wird alle Ende-zu-Ende-Schlüssel zurücksetzen. Dein verschlüsselter Verlauf wird dadurch unlesbar. Richte die Schlüsselsicherung ein oder exportiere deine Raumschlüssel aus einer anderen Sitzung, bevor du dein Passwort zurücksetzt.</string>
|
||||
<string name="login_reset_password_warning_submit">Fortfahren</string>
|
||||
<string name="login_reset_password_error_not_found">Diese E-Mail-Adresse ist mit keinem Benutzerkonto verknüpft</string>
|
||||
<string name="login_reset_password_mail_confirmation_title">Prüfe deinen Posteingang</string>
|
||||
|
@ -1126,9 +1126,9 @@
|
|||
<string name="login_splash_title">Es ist deine Konversation. Mache sie dir zu eigen.</string>
|
||||
<string name="login_server_url_form_modular_text">Premium-Hosting für Organisationen</string>
|
||||
<string name="login_server_url_form_modular_notice">Gib die Adresse des Modular Element oder Servers ein, den du verwenden möchtest</string>
|
||||
<string name="login_mode_not_supported">Die Anwendung kann sich nicht bei diesem Homeserver anmelden. Der Homeserver unterstützt die folgenden Anmeldemöglichkeiten: %1$s.
|
||||
<string name="login_mode_not_supported">Die Anwendung kann sich nicht bei diesem Heim-Server anmelden. Der Heim-Server unterstützt die folgenden Anmeldemöglichkeiten: %1$s.
|
||||
\n
|
||||
\nMöchtest du dich mit einem Webclient anmelden\?</string>
|
||||
\nMöchtest du dich mit einer Web-Anwendung anmelden\?</string>
|
||||
<string name="login_reset_password_notice">Dir wird eine Bestätigungsmail gesendet, um dein neues Passwort zu bestätigen.</string>
|
||||
<string name="login_reset_password_submit">Weiter</string>
|
||||
<string name="login_reset_password_success_notice_2">Du wurdest von allen Sitzungen abgemeldet und erhältst keine Push-Benachrichtigungen mehr. Um Benachrichtigungen wieder zu aktivieren, melde dich auf jedem Gerät erneut an.</string>
|
||||
|
@ -1272,21 +1272,21 @@
|
|||
<string name="verification_code_notice">Vergleiche den Code mit dem Code auf dem Bildschirm deines Gegenübers.</string>
|
||||
<string name="verification_conclusion_ok_notice">Nachrichten mit diesem Gegenüber sind Ende-zu-Ende-verschlüsselt und können nicht von Dritten gelesen werden.</string>
|
||||
<string name="verification_conclusion_ok_self_notice">Deine neue Sitzung ist jetzt verifiziert. Sie hat Zugriff auf deine verschlüsselten Nachrichten, und andere Benutzer sehen sie als vertrauenswürdig an.</string>
|
||||
<string name="encryption_information_cross_signing_state">Cross-Signing</string>
|
||||
<string name="encryption_information_dg_xsigning_complete">Cross-Signing ist aktiviert
|
||||
\nPrivate Schlüssel auf dem Gerät.</string>
|
||||
<string name="encryption_information_dg_xsigning_trusted">Cross-Signing ist aktiviert
|
||||
<string name="encryption_information_cross_signing_state">Quersignierung</string>
|
||||
<string name="encryption_information_dg_xsigning_complete">Quersignierung ist aktiviert,
|
||||
\nprivate Schlüssel auf dem Gerät.</string>
|
||||
<string name="encryption_information_dg_xsigning_trusted">Quersignierung ist aktiviert,
|
||||
\nSchlüssel sind vertrauenswürdig.
|
||||
\nPrivate Schlüssel sind nicht bekannt</string>
|
||||
<string name="encryption_information_dg_xsigning_not_trusted">Cross-Signing ist aktiviert
|
||||
<string name="encryption_information_dg_xsigning_not_trusted">Quersignierung ist aktiviert,
|
||||
\nSchlüssel sind nicht vertrauenswürdig</string>
|
||||
<string name="encryption_information_dg_xsigning_disabled">Cross-Signing ist nicht aktiviert</string>
|
||||
<string name="encryption_information_dg_xsigning_disabled">Quersignierung ist nicht aktiviert</string>
|
||||
<string name="settings_active_sessions_list">Aktive Sitzungen</string>
|
||||
<string name="settings_active_sessions_show_all">Alle Sitzungen anzeigen</string>
|
||||
<string name="settings_active_sessions_manage">Sitzungen verwalten</string>
|
||||
<string name="settings_active_sessions_signout_device">Diese Sitzung abmelden</string>
|
||||
<string name="settings_failed_to_get_crypto_device_info">Keine kryptografischen Informationen verfügbar</string>
|
||||
<string name="settings_active_sessions_verified_device_desc">Diese Sitzung ist für sichere Nachrichtenübertragung vertrauenswürdig, da du sie überprüft hast:</string>
|
||||
<string name="settings_active_sessions_verified_device_desc">Diese Sitzung ist für sichere Kommunikation vertrauenswürdig, da du sie überprüft hast:</string>
|
||||
<string name="settings_active_sessions_unverified_device_desc">Verifiziere diese Sitzung, um sie als vertrauenswürdig zu markieren, und gewähren ihr Zugriff auf verschlüsselte Nachrichten. Wenn du dich nicht bei dieser Sitzung angemeldet hast, ist dein Konto möglicherweise gefährdet:</string>
|
||||
<plurals name="settings_active_sessions_count">
|
||||
<item quantity="one">Eine aktive Sitzung</item>
|
||||
|
@ -1301,10 +1301,10 @@
|
|||
<string name="room_member_profile_sessions_section_title">Sitzungen</string>
|
||||
<string name="trusted">Vertraut</string>
|
||||
<string name="not_trusted">Nicht vertraut</string>
|
||||
<string name="verification_profile_device_verified_because">Diese Sitzung ist für sichere Nachrichtenübertragung vertrauenswürdig, weil %1$s (%2$s) sie verifiziert hat:</string>
|
||||
<string name="verification_profile_device_verified_because">Diese Sitzung ist für sichere Kommunikation vertrauenswürdig, weil %1$s (%2$s) sie verifiziert hat:</string>
|
||||
<string name="verification_profile_device_new_signing">%1$s (%2$s) hat sich in einer neuen Sitzung angemeldet:</string>
|
||||
<string name="verification_profile_device_untrust_info">Bis dieser Benutzer dieser Sitzung vertraut, werden an und von ihm gesendete Nachrichten mit Warnungen gekennzeichnet. Alternativ kannst du dies manuell überprüfen.</string>
|
||||
<string name="initialize_cross_signing">Initialisiere Cross-Signing</string>
|
||||
<string name="initialize_cross_signing">Quersignierung initialisieren</string>
|
||||
<string name="reset_cross_signing">Schlüssel zurücksetzen</string>
|
||||
<string name="a11y_qr_code_for_verification">QR-Code</string>
|
||||
<string name="qr_code_scanned_by_other_notice">Fast geschafft! Zeigt %s ein Häkchen\?</string>
|
||||
|
@ -1373,7 +1373,7 @@
|
|||
<string name="error_failed_to_import_keys">Import der Schlüssel fehlgeschlagen</string>
|
||||
<string name="settings_notification_configuration">Benachrichtigungskonfiguration</string>
|
||||
<string name="settings_messages_at_room">Nachrichten mit \"@room\"</string>
|
||||
<string name="settings_messages_in_e2e_group_chat">Verschlüsselte Gruppenchats</string>
|
||||
<string name="settings_messages_in_e2e_group_chat">Verschlüsselte Gruppenunterhaltungen</string>
|
||||
<string name="command_description_plain">Sendet eine Nachricht als einfachen Text, ohne sie als Markdown zu interpretieren</string>
|
||||
<string name="auth_invalid_login_param_space_in_password">Inkorrekter Benutzername und/oder Passwort. Das eingegebene Passwort beginnt oder endet mit Leerzeichen, bitte kontrolliere es.</string>
|
||||
<string name="message_key">Nachrichtenschlüssel</string>
|
||||
|
@ -1381,7 +1381,7 @@
|
|||
<string name="bootstrap_crosssigning_print_it">Druck es aus und speichere es an einem sicheren Ort</string>
|
||||
<string name="bootstrap_crosssigning_save_cloud">Kopier es in deinen persönlichen Cloud-Speicher</string>
|
||||
<string name="encryption_not_enabled">Verschlüsselung ist nicht aktiviert</string>
|
||||
<string name="settings_when_rooms_are_upgraded">Raumupgrades</string>
|
||||
<string name="settings_when_rooms_are_upgraded">Raumaktualisierung</string>
|
||||
<string name="encryption_enabled">Verschlüsselung aktiviert</string>
|
||||
<string name="encryption_enabled_tile_description">Nachrichten in diesem Raum sind Ende-zu-Ende-verschlüsselt. Erfahre mehr und verifiziere Benutzer in deren Profil.</string>
|
||||
<string name="encryption_unknown_algorithm_tile_description">Die Verschlüsselung in diesem Raum wird nicht unterstützt</string>
|
||||
|
@ -1392,7 +1392,7 @@
|
|||
<string name="qr_code_scanned_verif_waiting_notice">Fast geschafft! Warte auf Bestätigung…</string>
|
||||
<string name="settings_messages_in_e2e_one_to_one">Verschlüsselte Direktnachrichten</string>
|
||||
<string name="room_message_placeholder">Nachricht…</string>
|
||||
<string name="security_prompt_text">Verifiziere dich und andere, um eure Chats zu schützen</string>
|
||||
<string name="security_prompt_text">Verifiziere dich und andere, um eure Unterhaltungen zu schützen</string>
|
||||
<string name="bootstrap_enter_recovery">Gib zum Fortfahren deinen %s ein</string>
|
||||
<string name="use_file">Datei benutzen</string>
|
||||
<string name="bootstrap_invalid_recovery_key">Dies ist kein gültiger Wiederherstellungsschlüssel</string>
|
||||
|
@ -1412,12 +1412,12 @@
|
|||
<string name="settings_security_prevent_screenshots_title">Bildschirmfotos der Anwendung verhindern</string>
|
||||
<string name="settings_security_prevent_screenshots_summary">Das Aktivieren dieser Einstellung setzt FLAG_SECURE in allen Aktivitäten. Starte die Anwendung neu, damit die Änderung wirksam wird.</string>
|
||||
<string name="change_password_summary">Neues Benutzerpasswort festlegen…</string>
|
||||
<string name="use_other_session_content_description">Nutze die neueste Version von ${app_name} auf deinen anderen Geräten, ${app_name} Web, ${app_name} Desktop, ${app_name} iOS, ${app_name} für Android oder einen anderen cross-signing-fähigen Matrix-Client</string>
|
||||
<string name="use_other_session_content_description">Nutze die neueste Version von ${app_name} auf deinen anderen Geräten, ${app_name} Web, ${app_name} Desktop, ${app_name} iOS, ${app_name} für Android oder eine andere Matrix-Anwendung, die Quersignierung unterstützt</string>
|
||||
<string name="app_desktop_web">${app_name} Web
|
||||
\n${app_name} Desktop</string>
|
||||
<string name="app_ios_android">${app_name} iOS
|
||||
\n${app_name} Android</string>
|
||||
<string name="or_other_mx_capable_client">oder einen anderen cross-signing-fähigen Matrix Client</string>
|
||||
<string name="or_other_mx_capable_client">oder eine andere Matrix-Anwendung, die Quersignierung unterstützt</string>
|
||||
<string name="use_latest_app">Nutze die neueste Version von ${app_name} auf deinen anderen Geräten:</string>
|
||||
<string name="command_description_discard_session">Erzwingt das Verwerfen der aktuell ausgehende Gruppensitzung in einem verschlüsseltem Raum</string>
|
||||
<string name="command_description_discard_session_not_handled">Wird nur in verschlüsselten Räumen unterstützt</string>
|
||||
|
@ -1461,7 +1461,7 @@
|
|||
<string name="action_dismiss">Ablehnen</string>
|
||||
<string name="dialog_title_success">Erfolg</string>
|
||||
<string name="call_failed_no_connection_description">Echtzeitverbindung konnte nicht hergestellt werden.
|
||||
\nBitte den Administrator deines Heimservers, einen TURN-Server zu konfigurieren, damit Anrufe zuverlässig funktionieren.</string>
|
||||
\nBitte den Administrator deines Heim-Servers, einen TURN-Server zu konfigurieren, damit Anrufe zuverlässig funktionieren.</string>
|
||||
<string name="call_select_sound_device">Audiogerät auswählen</string>
|
||||
<string name="sound_device_phone">Telefon</string>
|
||||
<string name="sound_device_speaker">Lautsprecher</string>
|
||||
|
@ -1555,22 +1555,22 @@
|
|||
<string name="choose_locale_other_locales_title">Andere verfügbare Sprachen</string>
|
||||
<string name="choose_locale_loading_locales">Lade verfügbare Sprachen…</string>
|
||||
<string name="open_terms_of">Öffne AGBs von %s</string>
|
||||
<string name="disconnect_identity_server_dialog_content">Trenne Verbindung zu Identitätsserver %s\?</string>
|
||||
<string name="identity_server_error_outdated_identity_server">Dieser Identitätsserver ist veraltet. ${app_name} unterstützt nur API V2.</string>
|
||||
<string name="disconnect_identity_server_dialog_content">Verbindung zu Identitäts-Server %s trennen\?</string>
|
||||
<string name="identity_server_error_outdated_identity_server">Dieser Identitäts-Server ist veraltet. ${app_name} unterstützt nur API V2.</string>
|
||||
<string name="identity_server_error_outdated_home_server">Diese Operation ist nicht möglich. Der Homeserver ist veraltet.</string>
|
||||
<string name="identity_server_error_no_identity_server_configured">Bitte konfiguriere zuerst einen Identitätsserver.</string>
|
||||
<string name="identity_server_error_terms_not_signed">Bitte akzeptiere zuerst die AGB des Identitätsservers in den Einstellungen.</string>
|
||||
<string name="identity_server_error_no_identity_server_configured">Bitte konfiguriere zuerst einen Identitäts-Server.</string>
|
||||
<string name="identity_server_error_terms_not_signed">Bitte akzeptiere zuerst die AGB des Identitäts-Servers in den Einstellungen.</string>
|
||||
<string name="identity_server_error_bulk_sha256_not_supported">Deiner Privatsphäre wegen unterstützt ${app_name} nur das Senden gehashter E-Mail-Adressen und Telefonnummern.</string>
|
||||
<string name="identity_server_error_binding_error">Die Assoziierung ist fehlgeschlagen.</string>
|
||||
<string name="identity_server_error_no_current_binding_error">Für diese Kennung gibt es aktuell keine Zuordnung.</string>
|
||||
<string name="identity_server_set_default_notice">Dein Homeserver (%1$s) schlägt %2$s als Identitätsserver vor</string>
|
||||
<string name="identity_server_set_default_notice">Dein Heim-Server (%1$s) schlägt %2$s als Identitäts-Server vor</string>
|
||||
<string name="identity_server_set_default_submit">Benutze %1$s</string>
|
||||
<string name="identity_server_set_alternative_notice">Alternativ kannst du die URL eines beliebigen anderen Identitätsservers angeben</string>
|
||||
<string name="identity_server_set_alternative_notice_no_default">Gib die URL von einem Identitätsserver ein</string>
|
||||
<string name="identity_server_set_alternative_submit">Bestätigen</string>
|
||||
<string name="power_level_edit_title">Lege Rolle fest</string>
|
||||
<string name="identity_server_set_alternative_notice">Alternativ kannst du die URL eines beliebigen anderen Identitäts-Servers angeben</string>
|
||||
<string name="identity_server_set_alternative_notice_no_default">Gib die Adresse eines Identitäts-Servers ein</string>
|
||||
<string name="identity_server_set_alternative_submit">Absenden</string>
|
||||
<string name="power_level_edit_title">Rolle festlegen</string>
|
||||
<string name="power_level_title">Rolle</string>
|
||||
<string name="a11y_open_chat">Öffne Chat</string>
|
||||
<string name="a11y_open_chat">Unterhaltung öffnen</string>
|
||||
<string name="a11y_mute_microphone">Stelle Mikrophon stumm</string>
|
||||
<string name="a11y_unmute_microphone">Aktiviere Mikrophon</string>
|
||||
<string name="a11y_stop_camera">Stoppe Kamera</string>
|
||||
|
@ -1704,7 +1704,7 @@
|
|||
<string name="bad_passphrase_key_reset_all_action">Alle Wiederherstellungsoptionen vergessen oder verloren\? Alles zurücksetzen</string>
|
||||
<string name="direct_room_created_summary_item_by_you">Du bist beigetreten.</string>
|
||||
<string name="direct_room_created_summary_item">%s ist beigetreten.</string>
|
||||
<string name="direct_room_encryption_enabled_tile_description">Nachrichten in diesem Raum sind Ende-zu-Ende-verschlüsselt.</string>
|
||||
<string name="direct_room_encryption_enabled_tile_description">Nachrichten in dieser Unterhaltung sind Ende-zu-Ende-verschlüsselt.</string>
|
||||
<string name="direct_room_profile_section_more_leave">Verlassen</string>
|
||||
<string name="direct_room_profile_section_more_settings">Einstellungen</string>
|
||||
<string name="direct_room_profile_encrypted_subtitle">Nachrichten hier sind Ende-zu-Ende-verschlüsselt.
|
||||
|
@ -1744,10 +1744,10 @@
|
|||
<string name="room_member_open_or_create_dm">Direktnachricht</string>
|
||||
<string name="send_bug_report_include_key_share_history">Verlauf der Anfragen von Schlüsselfreigaben senden</string>
|
||||
<string name="no_more_results">Keine weiteren Ergebnisse</string>
|
||||
<string name="start_chatting">Beginne ein Gespräch</string>
|
||||
<string name="start_chatting">Beginne eine Unterhaltung</string>
|
||||
<string name="settings_discovery_consent_action_give_consent">Autorisieren</string>
|
||||
<string name="settings_discovery_consent_action_revoke">Meine Zustimmung widerrufen</string>
|
||||
<string name="settings_discovery_consent_notice_on">Du hast zugestimmt E-Mails und Telefonnummern an diesen Identitätsserver zu senden, um von anderen Nutzern entdeckt zu werden.</string>
|
||||
<string name="settings_discovery_consent_notice_on">Du hast zugestimmt, E-Mail-Adressen und Telefonnummern an diesen Identitäts-Server zu übermitteln, um für andere auffindbar zu sein.</string>
|
||||
<string name="settings_discovery_consent_title">E-Mails und Telefonnummern senden</string>
|
||||
<string name="direct_room_user_list_suggestions_title">Vorschläge</string>
|
||||
<string name="direct_room_user_list_known_title">Bekannte Personen</string>
|
||||
|
@ -1774,7 +1774,7 @@
|
|||
<string name="phone_book_perform_lookup">Suche nach Kontakten auf Matrix</string>
|
||||
<string name="room_settings_set_avatar">Raumbild einrichten</string>
|
||||
<string name="identity_server_user_consent_not_provided">Einverständnis wurde nicht abgegeben.</string>
|
||||
<string name="user_code_info_text">Teile diesen Code mit Leuten, damit sie ihn scannen und mit dir chatten können.</string>
|
||||
<string name="user_code_info_text">Teile diesen Code, damit andere ihn einlesen und mit dir schreiben können.</string>
|
||||
<string name="user_code_share">Meinen Code teilen</string>
|
||||
<string name="user_code_my_code">Mein Code</string>
|
||||
<string name="user_code_scan">Scanne einen QR-Code</string>
|
||||
|
@ -1794,7 +1794,7 @@
|
|||
<string name="create_room_alias_invalid">Manche Zeichen sind nicht zulässig</string>
|
||||
<string name="create_room_alias_empty">Bitte gib eine Raumadresse an</string>
|
||||
<string name="create_room_alias_already_in_use">Diese Adresse ist bereits vergeben</string>
|
||||
<string name="create_room_disable_federation_description">Aktivieren, wenn der Raum nur von Mitgliedern deines Heimservers zur internen Kommunikation verwendet wird. Das kann später nicht mehr geändert werden.</string>
|
||||
<string name="create_room_disable_federation_description">Aktivieren, wenn der Raum nur von Mitgliedern deines Heim-Servers zur internen Kommunikation verwendet wird. Das kann später nicht mehr geändert werden.</string>
|
||||
<string name="create_room_disable_federation_title">Begrenze Zugang zu diesem Raum (für immer!) auf Mitglieder von %s</string>
|
||||
<string name="attachment_viewer_item_x_of_y">%1$d von %2$d</string>
|
||||
<string name="room_preview_no_preview_join">Keine Vorschau für diesen Raum verfügbar. Willst du direkt beitreten\?</string>
|
||||
|
@ -1849,7 +1849,7 @@
|
|||
<string name="settings_show_emoji_keyboard_summary">Knopf zum Nachrichteneditor hinzufügen, der die Emoji-Tastatur öffnet</string>
|
||||
<string name="settings_show_emoji_keyboard">Emoji-Tastatur anzeigen</string>
|
||||
<string name="settings_chat_effects_description">Nutze /confetti oder sende Nachrichten mit ❄️ oder 🎉</string>
|
||||
<string name="settings_chat_effects_title">Chateffekte</string>
|
||||
<string name="settings_chat_effects_title">Effekte im Verlauf</string>
|
||||
<string name="room_permissions_change_topic">Thema ändern</string>
|
||||
<string name="room_permissions_upgrade_the_room">Raum aktualisieren</string>
|
||||
<string name="room_permissions_notice">Rollen, die zum Ändern verschiedener Teile des Raums erforderlich sind, auswählen</string>
|
||||
|
@ -1859,7 +1859,7 @@
|
|||
<string name="authentication_error">Authentifizierung fehlgeschlagen</string>
|
||||
<string name="re_authentication_default_confirm_text">Deine Anmeldeinformationen müssen für ${app_name} eingegeben werden, um diese Aktion auszuführen.</string>
|
||||
<string name="re_authentication_activity_title">Erneute Authentifizierung erforderlich</string>
|
||||
<string name="failed_to_initialize_cross_signing">Cross-Signing konnte nicht eingerichtet werden</string>
|
||||
<string name="failed_to_initialize_cross_signing">Quersignierung konnte nicht eingerichtet werden</string>
|
||||
<string name="error_unauthorized">Nicht autorisierte, fehlende gültige Authentifizierungsdaten</string>
|
||||
<string name="call_transfer_users_tab_title">Nutzer</string>
|
||||
<string name="call_transfer_failure">Beim Weiterleiten des Anrufs ist ein Fehler aufgetreten</string>
|
||||
|
@ -1917,7 +1917,7 @@
|
|||
<item quantity="other">%d Einträge</item>
|
||||
</plurals>
|
||||
<string name="settings_server_upload_size_unknown">Die Obergrenze ist nicht bekannt.</string>
|
||||
<string name="settings_server_upload_size_content">Dein Homeserver akzeptiert Anhänge (wie Dateien, Medien, etc.) mit einer Größe bis zu %s.</string>
|
||||
<string name="settings_server_upload_size_content">Dein Heim-Server akzeptiert Anhänge (wie Dateien, Medien, etc.) mit einer Größe bis zu %s.</string>
|
||||
<string name="settings_server_upload_size_title">Datei-Upload-Obergrenze des Servers</string>
|
||||
<string name="settings_server_version">Serverversion</string>
|
||||
<string name="settings_server_name">Servername</string>
|
||||
|
@ -1960,7 +1960,7 @@
|
|||
<string name="invite_to_space_with_name_desc">Diese werden in der Lage sein, %s zu durchsuchen</string>
|
||||
<string name="invite_just_to_this_room_desc">Diese werden kein Teil von %s sein</string>
|
||||
<string name="share_space_link_message">Tritt meinem Space %1$s %2$s bei</string>
|
||||
<string name="spaces_beta_welcome_to_spaces_desc">Mit Spaces kannst du Personen und Räume gruppieren.</string>
|
||||
<string name="spaces_beta_welcome_to_spaces_desc">Spaces sind eine neue Möglichkeit, Räume und Personen zu gruppieren.</string>
|
||||
<string name="space_add_existing_rooms">Räume oder Spaces hinzufügen</string>
|
||||
<string name="skip_for_now">Vorübergehend überspringen</string>
|
||||
<string name="create_spaces_room_public_header">Über welche Themen möchtest du dich in %s unterhalten\?</string>
|
||||
|
@ -1994,8 +1994,8 @@
|
|||
<string name="your_public_space">Dein öffentlicher Space</string>
|
||||
<string name="command_description_join_space">Betrete einen Space mit der angegebenen ID</string>
|
||||
<string name="create_space_topic_hint">Beschreibung</string>
|
||||
<string name="create_spaces_loading_message">Erzeuge Space…</string>
|
||||
<string name="create_spaces_default_public_random_room_name">Irgendetwas</string>
|
||||
<string name="create_spaces_loading_message">Erzeuge Space …</string>
|
||||
<string name="create_spaces_default_public_random_room_name">Ohne Thema</string>
|
||||
<string name="create_spaces_default_public_room_name">Allgemein</string>
|
||||
<string name="activity_create_space_title">Einen Space erstellen</string>
|
||||
<string name="create_spaces_just_me">Nur für mich</string>
|
||||
|
@ -2051,7 +2051,7 @@
|
|||
<string name="private_space">Privater Space</string>
|
||||
<string name="public_space">Öffentlicher Space</string>
|
||||
<string name="call_transfer_unknown_person">Unbekannte Person</string>
|
||||
<string name="give_feedback">Feedback geben</string>
|
||||
<string name="give_feedback">Rückmeldung geben</string>
|
||||
<string name="feedback_failed">Fehler beim Senden vom Feedback (%s)</string>
|
||||
<string name="feedback_sent">Dein Feedback wurde erfolgreich versandt. Danke!</string>
|
||||
<string name="you_may_contact_me">Mich bei Fragen kontaktieren</string>
|
||||
|
@ -2086,7 +2086,7 @@
|
|||
<string name="a11y_pause_voice_message">Sprachnachricht pausieren</string>
|
||||
<string name="a11y_play_voice_message">Sprachnachricht abspielen</string>
|
||||
<string name="a11y_start_voice_message">Sprachnachricht aufnehmen</string>
|
||||
<string name="room_using_unstable_room_version">Dieser Raum verwendet die Raumversion %s, die von diesem Heimserver als instabil markiert ist.</string>
|
||||
<string name="room_using_unstable_room_version">Dieser Raum verwendet die Raumversion %s, die von diesem Heim-Server als instabil markiert ist.</string>
|
||||
<string name="upgrade_room_no_power_to_manage">Du benötigst die Berechtigung, um einen Raum upzugraden</string>
|
||||
<string name="upgrade_room_update_parent_space">Übergeordneten Space automatisch updaten</string>
|
||||
<string name="upgrade_room_auto_invite">Benutzer automatisch einladen</string>
|
||||
|
@ -2105,14 +2105,14 @@
|
|||
<string name="sent_a_voice_message">Sprachnachricht</string>
|
||||
<string name="decide_who_can_find_and_join">Lege fest, wer diesen Raum finden und betreten kann.</string>
|
||||
<string name="tap_to_edit_spaces">Klicke, um die Spaces zu bearbeiten</string>
|
||||
<string name="select_spaces">Spaces auswählen</string>
|
||||
<string name="select_spaces">Spaces wählen</string>
|
||||
<string name="room_create_member_of_space_name_can_join">Mitglieder von %s können Räume finden, betrachten und betreten.</string>
|
||||
<string name="room_settings_room_access_private_invite_only_title">Privat (Zutritt nur mit Einladung)</string>
|
||||
<string name="settings_room_upgrades">Raumupgrades</string>
|
||||
<string name="settings_messages_by_bot">Nachrichten von Bots</string>
|
||||
<string name="settings_room_invitations">Raumeinladungen</string>
|
||||
<string name="settings_encrypted_group_messages">Verschlüsselten Gruppenchats</string>
|
||||
<string name="settings_group_messages">Gruppenchats</string>
|
||||
<string name="settings_encrypted_group_messages">Verschlüsselte Gruppennachrichten</string>
|
||||
<string name="settings_group_messages">Gruppennachrichten</string>
|
||||
<string name="settings_encrypted_direct_messages">Verschlüsselten Direktnachrichten</string>
|
||||
<string name="settings_messages_direct_messages">Direktnachrichten</string>
|
||||
<string name="settings_messages_containing_username">Mein Benutzername</string>
|
||||
|
@ -2129,7 +2129,7 @@
|
|||
<item quantity="one">Verpasster Sprachanruf</item>
|
||||
<item quantity="other">%d verpasste Sprachanrufe</item>
|
||||
</plurals>
|
||||
<string name="hs_client_url">Heimserver API URL</string>
|
||||
<string name="hs_client_url">Heim-Server API URL</string>
|
||||
<string name="denied_permission_voice_message">Um Sprachnachrichten zu senden, erlaube bitte Zugriff aufs Mikrofon.</string>
|
||||
<string name="denied_permission_camera">Um fortzufahren, erlaube bitte in den Systemeinstellungen Zugriff auf die Kamera.</string>
|
||||
<string name="denied_permission_generic">Für diese Aktion fehlen einige Berechtigungen, bitte erlaube diese in den Systemeinstellungen.</string>
|
||||
|
@ -2243,8 +2243,8 @@
|
|||
<string name="open_discovery_settings">Auffindungseinstellungen öffnen</string>
|
||||
<string name="shortcut_disabled_reason_sign_out">Sitzung abgemeldet!</string>
|
||||
<string name="shortcut_disabled_reason_room_left">Raum verlassen!</string>
|
||||
<string name="login_error_homeserver_from_url_not_found_enter_manual">Heimserver auswählen</string>
|
||||
<string name="login_error_homeserver_from_url_not_found">Es konnte kein Heimserver mit der Adresse %s gefunden werden. Bitte überprüfe die Adresse oder wähle den Heimserver manuell.</string>
|
||||
<string name="login_error_homeserver_from_url_not_found_enter_manual">Heim-Server auswählen</string>
|
||||
<string name="login_error_homeserver_from_url_not_found">Es konnte kein Heim-Server mit der Adresse %s gefunden werden. Bitte überprüfe die Adresse oder wähle den Heim-Server manuell.</string>
|
||||
<string name="space_add_space_to_any_space_you_manage">Untergeordneten Space hinzufügen.</string>
|
||||
<string name="identity_server_consent_dialog_content_question">Bist du dir wirklich sicher, dass du diese Informationen senden willst\?</string>
|
||||
<string name="identity_server_consent_dialog_title_2">E-Mail-Adressen und Telefonnummern an %s senden</string>
|
||||
|
@ -2259,16 +2259,16 @@
|
|||
\n%s kannst du alle unsere Bedingungen lesen.</string>
|
||||
<string name="create_spaces_invite_public_header_desc">Stelle sicher, dass die richtigen Personen Zugriff auf %s haben. Du kannst jederzeit weitere Personen einladen.</string>
|
||||
<string name="create_spaces_invite_public_header">Wer ist Mitglied deines Teams\?</string>
|
||||
<string name="settings_discovery_no_policy_provided">Der Identitätsserver gibt keine Bedingungen an</string>
|
||||
<string name="settings_discovery_hide_identity_server_policy_title">Bedingungen des Identitätsservers ausblenden</string>
|
||||
<string name="settings_discovery_show_identity_server_policy_title">Bedingungen des Identitätsservers anzeigen</string>
|
||||
<string name="settings_discovery_no_policy_provided">Der Identitäts-Server gibt keine Bedingungen an</string>
|
||||
<string name="settings_discovery_hide_identity_server_policy_title">Richtlinie des Identitäts-Servers ausblenden</string>
|
||||
<string name="settings_discovery_show_identity_server_policy_title">Bedingungen des Identitäts-Servers anzeigen</string>
|
||||
<string name="preference_system_settings">Systemeinstellungen</string>
|
||||
<string name="preference_versions">Versionen</string>
|
||||
<string name="preference_help_summary">Erhalte Hilfe bei der Bedienung von ${app_name}</string>
|
||||
<string name="preference_help_title">Hilfe und Unterstützung</string>
|
||||
<string name="preference_help">Hilfe</string>
|
||||
<string name="preference_root_legals">Rechtliches</string>
|
||||
<string name="decide_which_spaces_can_access">Entscheide, welche Spaces Zugriff auf den Raum haben sollen. Die Mitglieder der Spaces können diesen Räumen beitreten.</string>
|
||||
<string name="decide_which_spaces_can_access">Entscheide, welche Spaces Zugriff auf den Raum haben sollen. Die Mitglieder der Spaces können diesen Räumen betreten.</string>
|
||||
<string name="analytics_opt_in_content_link">hier</string>
|
||||
<string name="analytics_opt_in_title">Hilf mit, ${app_name} zu verbessern</string>
|
||||
<string name="action_enable">Aktivieren</string>
|
||||
|
@ -2296,15 +2296,15 @@
|
|||
<string name="discovery_section">Auffindbarkeit (%s)</string>
|
||||
<string name="discovery_invite">Per E-Mail einladen, finde deine Kontakte und mehr…</string>
|
||||
<string name="finish_setting_up_discovery">Schließe die Konfiguration des Auffindbarkeitsdienstes ab.</string>
|
||||
<string name="create_space_identity_server_info_none">Du verwendest derzeit keinen Identitätsserver. Um Teammitglieder einzuladen und für sie auffindbar zu sein, müssen du einen solchen Server konfigurieren.</string>
|
||||
<string name="login_splash_already_have_account">Ich habe schon ein Konto</string>
|
||||
<string name="ftue_auth_carousel_encrypted_title">Sichere Nachrichtenübertragung.</string>
|
||||
<string name="ftue_auth_carousel_secure_title">Besitze deine Konversationen.</string>
|
||||
<string name="identity_server_consent_dialog_content_3">Um bestehende Kontakte ermitteln zu können, müsst du Kontaktinformationen (E-Mails und Telefonnummern) an Ihren Identitätsserver senden. Wir verschlüsseln deine Daten vor dem Senden, um den Datenschutz zu gewährleisten.</string>
|
||||
<string name="settings_discovery_consent_notice_off_2">Deine Kontakte sind privat. Um in deinen Kontakten Benutzer erkennen zu können, benötigen wir deine Erlaubnis, Kontaktinformationen an deinen Identitätsserver zu senden.</string>
|
||||
<string name="create_space_identity_server_info_none">Du verwendest derzeit keinen Identitäts-Server. Um Team-Mitglieder einzuladen und für sie auffindbar zu sein, konfiguriere zunächst einen.</string>
|
||||
<string name="login_splash_already_have_account">Ich habe bereits ein Konto</string>
|
||||
<string name="ftue_auth_carousel_encrypted_title">Sichere Kommunikation.</string>
|
||||
<string name="ftue_auth_carousel_secure_title">Besitze deine Unterhaltungen.</string>
|
||||
<string name="identity_server_consent_dialog_content_3">Um bestehende Kontakte ermitteln zu können, musst du Kontaktinformationen (E-Mail-Adressen und Telefonnummern) an deinen Identitäts-Server übermitteln. Wir verschlüsseln deine Daten vor der Übermittlung, um den Datenschutz gewährleisten zu können.</string>
|
||||
<string name="settings_discovery_consent_notice_off_2">Deine Kontakte sind privat. Um unter deinen Kontakten Matrix-Nutzer finden zu können, benötigen wir deine Erlaubnis, Kontaktinformationen an deinen Identitäts-Server zu übermitteln.</string>
|
||||
<string name="legals_no_policy_provided">Dieser Server stellt keine Richtlinie bereit.</string>
|
||||
<string name="legals_identity_server_title">Deine Identitätsserver-Richtlinie</string>
|
||||
<string name="legals_home_server_title">Deine Heimserver Richtlinie</string>
|
||||
<string name="legals_identity_server_title">Richtlinie deines Identitäts-Servers</string>
|
||||
<string name="legals_home_server_title">Richtlinie deines Heim-Servers</string>
|
||||
<string name="legals_application_title">${app_name} Richtlinie</string>
|
||||
<string name="tooltip_attachment_poll">Abstimmung erstellen</string>
|
||||
<string name="tooltip_attachment_contact">Kontakte öffnen</string>
|
||||
|
@ -2340,10 +2340,10 @@
|
|||
<string name="edit_poll_title">Umfrage bearbeiten</string>
|
||||
<string name="poll_no_votes_cast">Keine Stimmen abgegeben</string>
|
||||
<string name="login_splash_create_account">Konto erstellen</string>
|
||||
<string name="ftue_auth_carousel_workplace_title">Nachrichtenaustausch für dein Team.</string>
|
||||
<string name="ftue_auth_carousel_workplace_title">Kommunikation für dein Team.</string>
|
||||
<string name="ftue_auth_carousel_encrypted_body">Ende-zu-Ende-verschlüsselt und ohne Telefonnummer nutzbar. Keine Werbung oder Datenerfassung.</string>
|
||||
<string name="ftue_auth_carousel_control_body">Wähle wo deine Gespräche liegen, für Kontrolle und Unabhängigkeit. Verbunden mit Matrix.</string>
|
||||
<string name="ftue_auth_carousel_secure_body">Sichere und unabhängige Kommunikation, die für die gleiche Vertraulichkeit sorgt, wie ein Gespräch von Angesicht zu Angesicht in deinem eigenen Zuhause.</string>
|
||||
<string name="ftue_auth_carousel_control_body">Wähle, wo deine Unterhaltungen gespeichert werden, um Kontrolle und Unabhängigkeit zu erhalten. Verbunden via Matrix.</string>
|
||||
<string name="ftue_auth_carousel_secure_body">Sichere und unabhängige Kommunikation, die für eine Vertraulichkeit sorgt, wie ein Gespräch von Angesicht zu Angesicht in deinen eigenen vier Wänden.</string>
|
||||
<string name="attachment_type_location">Standort</string>
|
||||
<string name="encryption_misconfigured">Die Verschlüsselung ist fehlerhaft konfiguriert</string>
|
||||
<string name="contact_admin_to_restore_encryption">Bitte kontaktiere einen Admin, um die Verschlüsselung zurückzusetzen.</string>
|
||||
|
@ -2363,10 +2363,10 @@
|
|||
<string name="ftue_auth_use_case_option_three">Communities</string>
|
||||
<string name="ftue_auth_use_case_option_two">Teams</string>
|
||||
<string name="ftue_auth_use_case_subtitle">Wir helfen dir, in Verbindung zu kommen</string>
|
||||
<string name="ftue_auth_use_case_title">Mit wem wirst du am meisten chatten\?</string>
|
||||
<string name="ftue_auth_use_case_title">Mit wem wirst du am meisten schreiben\?</string>
|
||||
<string name="action_thread_copy_link_to_thread">Link zu Thread kopieren</string>
|
||||
<string name="action_view_threads">Threads anzeigen</string>
|
||||
<string name="message_bubbles">Nachrichtenblasen anzeigen</string>
|
||||
<string name="message_bubbles">Nachrichtenblasen</string>
|
||||
<string name="location_timeline_failed_to_load_map">Laden der Karte fehlgeschlagen</string>
|
||||
<string name="a11y_static_map_image">Karte</string>
|
||||
<string name="labs_enable_thread_messages_desc">Hinweis: App wird neugestartet</string>
|
||||
|
@ -2401,7 +2401,7 @@
|
|||
<string name="location_share_live_stop">Beenden</string>
|
||||
<string name="location_share_live_enabled">Live-Standort aktiviert</string>
|
||||
<string name="a11y_location_share_option_pinned_icon">Standort teilen</string>
|
||||
<string name="location_share_option_pinned">Standort teilen</string>
|
||||
<string name="location_share_option_pinned">Diesen Standort teilen</string>
|
||||
<string name="location_share_option_user_current">Meinen Standort teilen</string>
|
||||
<string name="a11y_location_share_option_user_current_icon">Meinen Standort teilen</string>
|
||||
<string name="a11y_location_share_option_user_live_icon">Live-Standort teilen</string>
|
||||
|
@ -2409,19 +2409,19 @@
|
|||
<string name="threads_notice_migration_title">Threads nähern sich der Beta 🎉</string>
|
||||
<string name="action_disable">Deaktivieren</string>
|
||||
<string name="beta">BETA</string>
|
||||
<string name="give_feedback_threads">Feedback geben</string>
|
||||
<string name="give_feedback_threads">Rückmeldung geben</string>
|
||||
<string name="beta_title_bottom_sheet_action">BETA</string>
|
||||
<string name="threads_labs_enable_notice_title">Threads Beta</string>
|
||||
<string name="threads_labs_enable_notice_title">Threads-Beta</string>
|
||||
<string name="threads_beta_enable_notice_title">Threads Beta</string>
|
||||
<string name="call_start_screen_sharing">Bildschirm teilen</string>
|
||||
<string name="action_try_it_out">Ausprobieren</string>
|
||||
<string name="action_try_it_out">Probiere es aus</string>
|
||||
<string name="location_share_live_until">Live bis %1$s</string>
|
||||
<string name="unifiedpush_getdistributors_dialog_title">Wähle Deine Benachrichtigungsmethode</string>
|
||||
<string name="labs_enable_live_location_summary">Vorläufige Implementierung: Standorte bleiben im Nachrichtenverlauf von Räumen erhalten</string>
|
||||
<string name="push_gateway_item_profile_tag">Profil-Tag:</string>
|
||||
<string name="time_unit_hour_short">h</string>
|
||||
<string name="live_location_labs_promotion_switch_title">Standortfreigabe aktivieren</string>
|
||||
<string name="live_location_labs_promotion_description">Bitte beachten: Dies ist eine Testfunktion mit einer vorübergehenden Implementierung. Das bedeutet, dass Du Deinen Standortverlauf nicht löschen kannst und dass fortgeschrittene Nutzer Deinen Standortverlauf auch dann noch sehen können, wenn Du Deinen Live-Standort nicht mehr mit diesem Raum teilst.</string>
|
||||
<string name="live_location_labs_promotion_description">Bitte beachte: Dies ist eine experimentelle Funktion, die eine temporäre Implementierung nutzt. Das bedeutet, dass du deinen Standortverlauf nicht löschen kannst und erfahrene Nutzer ihn sehen können, selbst wenn du deinen Live-Standort nicht mehr mit diesem Raum teilst.</string>
|
||||
<string name="live_location_labs_promotion_title">Live-Standortfreigabe</string>
|
||||
<string name="settings_troubleshoot_test_current_gateway">Aktuelles Gateway: %s</string>
|
||||
<string name="settings_troubleshoot_test_current_gateway_title">Gateway</string>
|
||||
|
@ -2464,7 +2464,7 @@
|
|||
<string name="a11y_audio_playback_duration">%1$d Minuten %2$d Sekunden</string>
|
||||
<string name="a11y_audio_message_item">%1$s, %2$s, %3$s</string>
|
||||
<string name="settings_show_latest_profile_description">Die neuesten Profilinformationen (Avatar und Anzeigename) für alle Nachrichten anzeigen.</string>
|
||||
<string name="settings_show_latest_profile">Aktuelle Benutzerinformationen anzeigen</string>
|
||||
<string name="settings_show_latest_profile">Aktuelle Profilinformationen</string>
|
||||
<string name="ftue_personalize_complete_title">Sieht gut aus!</string>
|
||||
<string name="ftue_display_name_title">einen Anzeigenamen wählen</string>
|
||||
<string name="ftue_account_created_take_me_home">Zurück zum Home-Screen</string>
|
||||
|
@ -2480,11 +2480,11 @@
|
|||
<string name="settings_presence">Präsenz</string>
|
||||
<string name="settings_autoplay_animated_images_summary">Animierte Bilder in der Zeitleiste abspielen, sobald sie sichtbar sind</string>
|
||||
<string name="settings_autoplay_animated_images_title">Animierte Bilder automatisch abspielen</string>
|
||||
<string name="settings_troubleshoot_test_endpoint_registration_failed">Das Endpunkt-Token konnte nicht auf dem Heimserver registriert werden:
|
||||
<string name="settings_troubleshoot_test_endpoint_registration_failed">Das Endpunkt-Token konnte nicht auf dem Heim-Server registriert werden:
|
||||
\n%1$s</string>
|
||||
<string name="settings_troubleshoot_test_endpoint_registration_success">Endpunkt erfolgreich beim Heimserver registriert.</string>
|
||||
<string name="settings_troubleshoot_test_endpoint_registration_success">Endpunkt erfolgreich beim Heim-Server registriert.</string>
|
||||
<string name="settings_troubleshoot_test_endpoint_registration_title">Endpunkt-Registrierung</string>
|
||||
<string name="threads_labs_enable_notice_message">Dein Heimserver unterstützt derzeit keine Threads, daher kann diese Funktion evtl. nicht richtig funktionieren. Einige Nachrichten mit Threads sind möglicherweise nicht zuverlässig verfügbar. %sMöchtest Du Threads trotzdem aktivieren\?</string>
|
||||
<string name="threads_labs_enable_notice_message">Dein Heim-Server unterstützt derzeit keine Threads, daher könnte diese Funktion evtl. nicht richtig funktionieren. Einige Nachrichten mit Threads sind möglicherweise nicht zuverlässig verfügbar. %sMöchtest Du Threads trotzdem aktivieren\?</string>
|
||||
<string name="threads_beta_enable_notice_message">Threads helfen dabei, Unterhaltungen beim Thema zu halten und leichter zu verfolgen. %sDie Aktivierung von Threads aktualisiert die App. Dies kann bei einigen Konten länger dauern.</string>
|
||||
<string name="threads_notice_migration_message">Wir nähern uns der Veröffentlichung einer öffentlichen Beta für Threads.
|
||||
\n
|
||||
|
@ -2506,7 +2506,7 @@
|
|||
<string name="a11y_presence_busy">Beschäftigt</string>
|
||||
<string name="settings_security_pin_code_use_biometrics_error">Die biometrische Authentifizierung konnte nicht aktiviert werden.</string>
|
||||
<string name="auth_biometric_key_invalidated_message">Die biometrische Authentifizierung wurde deaktiviert, weil kürzlich eine neue biometrische Authentifizierungsmethode hinzugefügt wurde. Du kannst sie in den Einstellungen wieder aktivieren.</string>
|
||||
<string name="error_forbidden_digits_only_username">Der Heimserver akzeptiert keine Benutzernamen, die nur aus Ziffern bestehen.</string>
|
||||
<string name="error_forbidden_digits_only_username">Der Heim-Server akzeptiert keine Benutzernamen, die nur aus Ziffern bestehen.</string>
|
||||
<string name="sent_live_location">teilten ihren Live-Standort</string>
|
||||
<string name="ftue_personalize_skip_this_step">Schritt überspringen</string>
|
||||
<string name="ftue_personalize_submit">Speichern und fortfahren</string>
|
||||
|
@ -2521,13 +2521,13 @@
|
|||
<string name="ftue_account_created_personalize">Profil personalisieren</string>
|
||||
<string name="ftue_auth_carousel_workplace_body">${app_name} ist auch für den Arbeitsplatz geeignet. Die sichersten Organisationen der Welt vertrauen darauf.</string>
|
||||
<string name="send_feedback_threads_info">Threads sind noch in Arbeit, und es stehen neue, aufregende Funktionen an, wie z. B. verbesserte Benachrichtigungen. Wir würden uns sehr über Dein Feedback freuen!</string>
|
||||
<string name="direct_room_encryption_enabled_tile_description_future">Nachrichten in diesem Chat werden Ende-zu-Ende-verschlüsselt.</string>
|
||||
<string name="direct_room_encryption_enabled_tile_description_future">Nachrichten in dieser Unterhaltung werden Ende-zu-Ende-verschlüsselt.</string>
|
||||
<string name="ftue_auth_captcha_title">Bist du ein Mensch\?</string>
|
||||
<string name="ftue_auth_terms_subtitle">Bitte lies dir %ss Bedingungen und Richtlinien durch</string>
|
||||
<string name="ftue_auth_terms_title">Server-Richtlinien</string>
|
||||
<string name="ftue_auth_email_verification_subtitle">Folge den Anweisungen, die an %s gesendet wurden</string>
|
||||
<string name="ftue_auth_email_verification_title">E-Mail bestätigen</string>
|
||||
<string name="poll_undisclosed_not_ended">Ergebnisse sind nach Beenden der Abstimmung sichtbar</string>
|
||||
<string name="poll_undisclosed_not_ended">Ergebnisse werden nach Abschluss der Abstimmung sichtbar sein</string>
|
||||
<string name="ftue_auth_reset_password_breaker_title">Prüfe deine E-Mails.</string>
|
||||
<string name="ftue_auth_reset_password">Passwort zurücksetzen</string>
|
||||
<string name="ftue_auth_new_password_subtitle">Gib mindestens 8 Zeichen ein.</string>
|
||||
|
@ -2550,12 +2550,12 @@
|
|||
<item quantity="one">%d Nachricht gelöscht</item>
|
||||
<item quantity="other">%d Nachrichten gelöscht</item>
|
||||
</plurals>
|
||||
<string name="labs_enable_element_call_permission_shortcuts">Keine Element Call-Berechtigungsabfragen</string>
|
||||
<string name="labs_enable_element_call_permission_shortcuts_summary">Bestätige automatisch Element Call-Widgets und erlaube Kamera- und Mikrofonzugriff</string>
|
||||
<string name="labs_enable_element_call_permission_shortcuts">Keine Element-Call-Berechtigungsabfragen</string>
|
||||
<string name="labs_enable_element_call_permission_shortcuts_summary">Bestätige automatisch Element-Call-Widgets und erlaube Kamera- und Mikrofonzugriff</string>
|
||||
<string name="create_room_action_go">Los</string>
|
||||
<string name="ftue_auth_create_account_edit_server_selection">ändern</string>
|
||||
<string name="ftue_auth_create_account_sso_section_header">oder</string>
|
||||
<string name="ftue_auth_sign_in_choose_server_header">Das Zuhause deiner Gespräche</string>
|
||||
<string name="ftue_auth_sign_in_choose_server_header">Der Ort, an dem deine Gespräche stattfinden</string>
|
||||
<string name="ftue_auth_create_account_choose_server_header">Das zukünftige Zuhause für deine Gespräche</string>
|
||||
<string name="font_size_use_system">Systemstandard nutzen</string>
|
||||
<string name="font_size_section_auto">Automatisch festlegen</string>
|
||||
|
@ -2565,9 +2565,9 @@
|
|||
<string name="auth_reset_password_error_unverified">E-Mail nicht bestätigt, prüfe deinen Posteingang</string>
|
||||
<string name="ftue_auth_welcome_back_title">Willkommen zurück!</string>
|
||||
<string name="ftue_auth_forgot_password">Passwort vergessen</string>
|
||||
<string name="ftue_auth_login_username_entry">Benutzername / E-Mail / Telefon</string>
|
||||
<string name="ftue_auth_login_username_entry">Nutzername / E-Mail-Adresse / Telefonnummer</string>
|
||||
<string name="ftue_auth_create_account_title">Erstelle dein Konto</string>
|
||||
<string name="ftue_auth_choose_server_entry_hint">Serveradresse</string>
|
||||
<string name="ftue_auth_choose_server_entry_hint">Server-URL</string>
|
||||
<string name="ftue_auth_choose_server_subtitle">Wie lautet die Adresse deines Servers\? Das wird eine Art Zuhause für deine Daten</string>
|
||||
<string name="ftue_auth_choose_server_sign_in_subtitle">Wie lautet die Adresse deines Servers\?</string>
|
||||
<string name="ftue_auth_create_account_password_entry_footer">Muss 8 oder mehr Zeichen umfassen</string>
|
||||
|
@ -2585,7 +2585,7 @@
|
|||
<string name="create_room">Raum erstellen</string>
|
||||
<string name="room_list_filter_unreads">Ungelesene</string>
|
||||
<string name="room_list_filter_people">Personen</string>
|
||||
<string name="send_your_first_msg_to_invite">Schreibe deine erste Nachricht, um %s zur Konversation einzuladen</string>
|
||||
<string name="send_your_first_msg_to_invite">Schreibe deine erste Nachricht, um %s zur Unterhaltung einzuladen</string>
|
||||
<string name="device_manager_settings_active_sessions_show_all">Alle Sitzungen anzeigen (V2, in Arbeit)</string>
|
||||
<string name="device_manager_sessions_other_description">Für bestmögliche Sicherheit verifiziere deine Sitzungen und melde dich von allen ab, die du nicht erkennst oder nutzt.</string>
|
||||
<string name="device_manager_sessions_other_title">Andere Sitzungen</string>
|
||||
|
@ -2595,7 +2595,7 @@
|
|||
<string name="room_list_filter_favourites">Favoriten</string>
|
||||
<string name="room_list_filter_all">Alle</string>
|
||||
<string name="location_share_loading_map_error">Karte laden nicht möglich
|
||||
\nDieser Heimserver könnte für die Kartendarstellung nicht konfiguriert sein.</string>
|
||||
\nDieser Heim-Server könnte für die Kartendarstellung nicht konfiguriert sein.</string>
|
||||
<string name="a11y_open_settings">Einstellungen öffnen</string>
|
||||
<string name="verify_invalid_qr_notice">Dieser QR-Code ist fehlerhaft. Bitte versuche es mit einer anderen Methode.</string>
|
||||
<string name="crosssigning_cannot_verify_this_session_desc">Du wirst deinen verschlüsselten Nachrichtenverlauf nicht abrufen können. Um neu zu beginnen, setze deine Sicherung und Verifizierungsschlüssel zurück.</string>
|
||||
|
@ -2619,24 +2619,94 @@
|
|||
<string name="timeline_error_room_not_found">Entschuldigung, dieser Raum wurde nicht gefunden.
|
||||
\nBitte versuche es später erneut.%s</string>
|
||||
<string name="invites_title">Einladungen</string>
|
||||
<string name="device_manager_other_sessions_description_unverified">Nicht verifiziert · Letzte Aktivität %1$s</string>
|
||||
<string name="device_manager_other_sessions_description_unverified">Nicht verifiziert · Neueste Aktivität %1$s</string>
|
||||
<string name="device_manager_verification_status_unverified">Nicht verifizierte Sitzung</string>
|
||||
<string name="device_manager_unverified_sessions_title">Nicht verifizierte Sitzung</string>
|
||||
<string name="device_manager_unverified_sessions_title">Nicht verifizierte Sitzungen</string>
|
||||
<string name="device_manager_header_section_security_recommendations_description">Verbessere deine Kontosicherheit, indem du diese Empfehlungen beherzigst.</string>
|
||||
<string name="device_manager_header_section_security_recommendations_title">Sicherheitsempfehlungen</string>
|
||||
<plurals name="device_manager_other_sessions_description_inactive">
|
||||
<item quantity="one">Inaktiv seit %1$d+ Tag (%2$s)</item>
|
||||
<item quantity="other">Inaktiv seit %1$d+ Tagen (%2$s)</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_description_verified">Verifiziert · Letzte Aktivität %1$s</string>
|
||||
<string name="device_manager_other_sessions_description_verified">Verifiziert · Neueste Aktivität %1$s</string>
|
||||
<string name="device_manager_verification_status_verified">Verifizierte Sitzung</string>
|
||||
<string name="a11y_device_manager_device_type_unknown">Unbekannter Gerätetyp</string>
|
||||
<string name="invites_empty_title">Nichts Neues.</string>
|
||||
<string name="space_list_empty_message">Spaces sind eine neue Art, Räume und Personen zu organisieren. Erstelle einen Space, um zu beginnen.</string>
|
||||
<string name="space_list_empty_message">Spaces sind eine neue Möglichkeit, Räume und Personen zu gruppieren. Erstelle einen Space, um zu beginnen.</string>
|
||||
<string name="space_list_empty_title">Noch keine Spaces.</string>
|
||||
<string name="home_empty_no_unreads_message">Hier werden deine ungelesenen Nachrichten erscheinen, wenn du welche hast.</string>
|
||||
<string name="home_empty_no_unreads_title">Es gibt nichts Neues.</string>
|
||||
<string name="all_chats">Alle Unterhaltungen</string>
|
||||
<string name="change_space">Space wechseln</string>
|
||||
<string name="start_chat">Unterhaltung beginnen</string>
|
||||
</resources>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Filter</string>
|
||||
<string name="a11y_device_manager_filter">Filtern</string>
|
||||
<string name="a11y_collapse_space_children">Subspaces von %s schließen</string>
|
||||
<string name="a11y_expand_space_children">Subspaces von %s erweitern</string>
|
||||
<string name="ftue_auth_create_account_username_entry_footer">Andere können dich als %s finden</string>
|
||||
<string name="labs_enable_deferred_dm_summary">Erstelle Unterhaltungen mit der ersten Nachricht</string>
|
||||
<string name="labs_enable_deferred_dm_title">Verzögerte Direktnachrichten</string>
|
||||
<string name="home_layout_preferences_recents">Historie anzeigen</string>
|
||||
<string name="onboarding_new_app_layout_button_try">Probiere es aus</string>
|
||||
<string name="onboarding_new_app_layout_feedback_message">Tippe oben rechts, um eine Rückmeldung zu senden.</string>
|
||||
<string name="onboarding_new_app_layout_feedback_title">Rückmeldung geben</string>
|
||||
<string name="onboarding_new_app_layout_spaces_message">Greife auf deine Spaces (unten rechts) schneller und einfacher denn je zu.</string>
|
||||
<string name="onboarding_new_app_layout_spaces_title">Auf Spaces zugreifen</string>
|
||||
<string name="onboarding_new_app_layout_welcome_message">Um dein ${app_name} zu vereinfachen, sind Tabs nun optional. Verwalte sie mit dem Menü oben rechts.</string>
|
||||
<string name="onboarding_new_app_layout_welcome_title">Willkommen in einer neuen Übersicht!</string>
|
||||
<string name="home_empty_no_rooms_message">Die Komplettlösung für sichere Kommunikation unter Freunden, in Gruppen oder in Organisationen. Erstelle eine Unterhaltung oder trete einem bestehenden Raum bei, um loszulegen.</string>
|
||||
<string name="home_empty_no_rooms_title">Willkommen bei ${app_name},
|
||||
\n%s.</string>
|
||||
<string name="home_empty_space_no_rooms_message">Spaces sind eine neue Möglichkeit, Räume und Personen zu gruppieren. Füge einen bestehenden Raum hinzu oder erstelle einen neuen mit der Schaltfläche unten rechts.</string>
|
||||
<string name="home_empty_space_no_rooms_title">%s
|
||||
\nsieht ein bisschen leer aus.</string>
|
||||
<string name="device_manager_session_details_device_ip_address">IP-Adresse</string>
|
||||
<string name="device_manager_session_details_session_name">Sitzungsname</string>
|
||||
<string name="device_manager_session_details_description">Anwendung, Gerät und Aktivitätsinformationen.</string>
|
||||
<string name="device_manager_session_details_title">Sitzungsdetails</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Filter zurücksetzen</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">Keine inaktiven Sitzungen gefunden.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">Keine nicht verifizierten Sitzungen gefunden.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">Keine verifizierten Sitzungen gefunden.</string>
|
||||
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
|
||||
<item quantity="one">Erwäge, dich aus alten (ein Tag oder mehr), nicht mehr verwendeten Sitzungen abzumelden.</item>
|
||||
<item quantity="other">Erwäge, dich aus alten (%1$d Tage oder mehr), nicht mehr verwendeten Sitzungen abzumelden.</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">Inaktiv</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">Für besonders sichere Kommunikation verifiziere deine Sitzungen oder melde dich von ihnen ab, falls du sie nicht mehr identifizieren kannst.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">Nicht verifiziert</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">Verifiziert</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="one">Inaktiv seit %1$d Tag oder länger</item>
|
||||
<item quantity="other">Inaktiv seit %1$d Tagen oder länger</item>
|
||||
</plurals>
|
||||
<string name="device_manager_filter_option_inactive">Inaktiv</string>
|
||||
<string name="device_manager_filter_option_unverified_description">Nicht bereit für sichere Kommunikation</string>
|
||||
<string name="device_manager_filter_option_unverified">Nicht verifiziert</string>
|
||||
<string name="device_manager_filter_option_verified_description">Für sichere Kommunikation bereit</string>
|
||||
<string name="device_manager_filter_option_verified">Verifiziert</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Alle Sitzungen</string>
|
||||
<string name="device_manager_device_title">Gerät</string>
|
||||
<string name="device_manager_session_title">Sitzung</string>
|
||||
<string name="device_manager_current_session_title">Aktuelle Sitzung</string>
|
||||
<plurals name="device_manager_inactive_sessions_description">
|
||||
<item quantity="one">Erwäge, dich aus alten (ein Tag oder mehr), nicht mehr verwendeten Sitzungen abzumelden.</item>
|
||||
<item quantity="other">Erwäge, dich aus alten (%1$d Tage oder mehr), nicht mehr verwendeten Sitzungen abzumelden.</item>
|
||||
</plurals>
|
||||
<string name="device_manager_inactive_sessions_title">Inaktive Sitzungen</string>
|
||||
<string name="device_manager_unverified_sessions_description">Nicht verifizierte Sitzungen verifizieren oder abmelden.</string>
|
||||
<string name="device_manager_other_sessions_view_all">Alle anzeigen (%1$d)</string>
|
||||
<string name="device_manager_verify_session">Sitzung verifizieren</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">Diese Sitzung ist für sichere Kommunikation bereit.</string>
|
||||
<string name="a11y_device_manager_device_type_desktop">Desktop</string>
|
||||
<string name="invites_empty_message">Hier erscheinen deine neuen Anfragen und Einladungen.</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Ein vereinfachtes Element mit optionalen Tabs</string>
|
||||
<string name="labs_enable_new_app_layout_title">Neues Layout aktivieren</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Neueste Aktivität</string>
|
||||
<string name="device_manager_session_last_activity">Neueste Aktivität %1$s</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">Verifiziere deine aktuelle Sitzung für besonders sichere Kommunikation.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_verified">Deine aktuelle Sitzung ist für sichere Kommunikation bereit.</string>
|
||||
<string name="device_manager_view_details">Details anzeigen</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">Für bestmögliche Sicherheit und Zuverlässigkeit verifiziere diese Sitzungen oder melde dich von ihr ab.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">Für die bestmögliche Sicherheit, melde dich von allen Sitzungen ab, die du nicht erkennst oder nicht mehr benutzt.</string>
|
||||
</resources>
|
|
@ -2594,7 +2594,7 @@
|
|||
<string name="device_manager_settings_active_sessions_show_all">Näita kõiki sessioone (V2, WIP)</string>
|
||||
<string name="device_manager_sessions_other_description">Parima turvalisuse nimel verifitseeri kõik oma sessioonid ning logi välja neist, mida sa enam ei kasuta.</string>
|
||||
<string name="device_manager_sessions_other_title">Muud sessioonid</string>
|
||||
<string name="settings_sessions_list">Sessionid</string>
|
||||
<string name="settings_sessions_list">Sessioonid</string>
|
||||
<string name="a11y_open_spaces">Ava kogukondade loend</string>
|
||||
<string name="a11y_create_message">Alusta uut vestlust või loo uus jututuba</string>
|
||||
<string name="room_list_filter_people">Inimesed</string>
|
||||
|
@ -2659,4 +2659,46 @@
|
|||
<string name="invites_empty_message">Siin saavad olema sinu tulevased päringud ja kutsed.</string>
|
||||
<string name="a11y_collapse_space_children">Ahenda %s alamkogukonnad</string>
|
||||
<string name="a11y_expand_space_children">Näita %s alamkogukondi</string>
|
||||
</resources>
|
||||
<string name="device_manager_session_details_device_ip_address">IP-aadress</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Viimati kasutusel</string>
|
||||
<string name="device_manager_session_details_session_name">Sessiooni nimi</string>
|
||||
<string name="device_manager_session_details_description">Rakendus, seade ja kasutamise teave.</string>
|
||||
<string name="device_manager_session_details_title">Sessiooni teave</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Eemalda filter</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">Ei leidu sessioone, mis pole aktiivses kasutuses.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">Verifitseerimata sessioone ei leidu.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">Verifitseeritud sessioone ei leidu.</string>
|
||||
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
|
||||
<item quantity="one">Kaalu vanadest ja kasutamata sessioonidest väljalogimist (vanemad kui %1$d või enam päeva).</item>
|
||||
<item quantity="other">Kaalu vanadest ja kasutamata sessioonidest väljalogimist (vanemad kui %1$d või enam päeva).</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">Pole pidevas kasutuses</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">Turvalise sõnumvahetuse nimel verifitseeri kõik oma sessioonid ning logi neist välja, mida sa enam ei kasuta või ei tunne enam ära.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">Verifitseerimata</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">Parima turvalisuse nimel logi välja neist sessioonidest, mida sa enam ei kasuta või ei tunne ära.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">Verifitseeritud</string>
|
||||
<string name="a11y_device_manager_filter">Filtreeri</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="one">Pole olnud kasutusel %1$d või enam päeva</item>
|
||||
<item quantity="other">Pole olnud kasutusel %1$d või enam päeva</item>
|
||||
</plurals>
|
||||
<string name="device_manager_filter_option_inactive">Pole pidevas kasutuses</string>
|
||||
<string name="device_manager_filter_option_unverified_description">Pole valmis turvaliseks sõnumivahetuseks</string>
|
||||
<string name="device_manager_filter_option_unverified">Verifitseerimata</string>
|
||||
<string name="device_manager_filter_option_verified_description">Valmis turvaliseks sõnumivahetuseks</string>
|
||||
<string name="device_manager_filter_option_verified">Verifitseeritud</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Kõik sessioonid</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Filtreeri</string>
|
||||
<string name="device_manager_session_last_activity">Viimati kasutusel %1$s</string>
|
||||
<string name="device_manager_device_title">Seade</string>
|
||||
<string name="device_manager_session_title">Sessioonid</string>
|
||||
<string name="device_manager_current_session_title">Praegune sessioon</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">Parima turvalisuse ja töökindluse nimel verifitseeri see sessioon või logi ta võrgust välja.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">Turvalise sõnumivahetuse nimel palun verifitseeri oma praegune sessioon.</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">See sessioon on valmis turvaliseks sõnumivahetuseks.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_verified">Sinu praegune sessioon on valmis turvaliseks sõnumivahetuseks.</string>
|
||||
<string name="labs_enable_deferred_dm_summary">Alusta otsevestlust esimese sõnumiga</string>
|
||||
<string name="labs_enable_deferred_dm_title">Võta kasutusele viivitusega otsevestlused</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Lihtsustatud Element valikuliste kaartidega</string>
|
||||
<string name="labs_enable_new_app_layout_title">Võta kasutusele rakenduse uus välimus</string>
|
||||
</resources>
|
|
@ -2700,4 +2700,9 @@
|
|||
<string name="labs_enable_deferred_dm_summary">ایجاد پیام خصوصی فقط در نخستین پیام</string>
|
||||
<string name="labs_enable_new_app_layout_summary">المنتی ساده شده با زبانههای انتخابی</string>
|
||||
<string name="labs_enable_new_app_layout_title">به کار انداختن چینش جدید</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">تأیید نشستهایتان برای پیامرسانی امن بهبود یافته یا خروج از آنهایی که تشخیصشان نداده یا دیگر استفاده نمیکنید.</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="one">غیرفعّال برای ۱ روز یا بیشتر</item>
|
||||
<item quantity="other">غیرفعّال برای %1$d روز یا بیشتر</item>
|
||||
</plurals>
|
||||
</resources>
|
|
@ -2668,4 +2668,46 @@
|
|||
<string name="a11y_collapse_space_children">Réduire %s enfants</string>
|
||||
<string name="a11y_expand_space_children">Développer %s enfants</string>
|
||||
<string name="change_space">Changer d’espace</string>
|
||||
</resources>
|
||||
<string name="device_manager_session_details_device_ip_address">Adresse IP</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Dernière activité</string>
|
||||
<string name="device_manager_session_details_session_name">Nom de la session</string>
|
||||
<string name="device_manager_session_details_description">Application, appareil et information sur l’activité.</string>
|
||||
<string name="device_manager_session_details_title">Détails de session</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Supprimer les filtres</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">Aucune session inactive n’a été trouvée.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">Aucune session non vérifiée n’a été trouvée.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">Aucune session vérifiée n’a été trouvée.</string>
|
||||
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
|
||||
<item quantity="one">Pensez à vous déconnecter des anciennes sessions (%1$d jour ou plus) que vous n’utilisez plus.</item>
|
||||
<item quantity="other">Pensez à vous déconnecter des anciennes sessions (%1$d jours ou plus) que vous n’utilisez plus.</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">Inactif</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">Vérifiez vos sessions pour améliorer la sécurité de votre messagerie, ou déconnectez celles que vous ne connaissez pas ou n’utilisez plus.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">Non vérifié</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">Pour une meilleure sécurité, déconnectez toutes les sessions que vous ne connaissez pas ou que vous n’utilisez plus.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">Vérifié</string>
|
||||
<string name="a11y_device_manager_filter">Filtrer</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="one">Inactif depuis %1$d jour ou plus</item>
|
||||
<item quantity="other">Inactif depuis %1$d jours ou plus</item>
|
||||
</plurals>
|
||||
<string name="device_manager_filter_option_inactive">Inactif</string>
|
||||
<string name="device_manager_filter_option_unverified_description">Pas prêt pour une messagerie sécurisée</string>
|
||||
<string name="device_manager_filter_option_unverified">Non vérifié</string>
|
||||
<string name="device_manager_filter_option_verified_description">Prêt pour une messagerie sécurisée</string>
|
||||
<string name="device_manager_filter_option_verified">Vérifié</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Toutes les sessions</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Filtrer</string>
|
||||
<string name="device_manager_session_last_activity">Dernière activité %1$s</string>
|
||||
<string name="device_manager_device_title">Appareil</string>
|
||||
<string name="device_manager_session_title">Session</string>
|
||||
<string name="device_manager_current_session_title">Cette session</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">Vérifiez ou déconnectez cette session pour une meilleure sécurité et fiabilité.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">Vérifiez votre session pour une sécurité accrue de votre messagerie.</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">Cette session est prête pour l’envoi de messages sécurisés.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_verified">Votre session est prête pour l’envoi de messages sécurisés.</string>
|
||||
<string name="labs_enable_deferred_dm_summary">Créer la conversation seulement lors du premier message</string>
|
||||
<string name="labs_enable_deferred_dm_title">Activer les conversations privées différées</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Un Element simplifié avec des onglets optionnels</string>
|
||||
<string name="labs_enable_new_app_layout_title">Activer la nouvelle présentation</string>
|
||||
</resources>
|
|
@ -2668,4 +2668,46 @@ A Visszaállítási Kulcsot tartsd biztonságos helyen, mint pl. egy jelszókeze
|
|||
<item quantity="other">%1$d+ napja inaktív (%2$s)</item>
|
||||
</plurals>
|
||||
<string name="invites_empty_message">Itt láthatók a meghívók és elvégzendő műveletek.</string>
|
||||
</resources>
|
||||
<string name="device_manager_session_details_device_ip_address">IP cím</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Utolsó tevékenység</string>
|
||||
<string name="device_manager_session_details_session_name">Munkamenet neve</string>
|
||||
<string name="device_manager_session_details_description">Alkalmazás, eszköz és aktivitás információ.</string>
|
||||
<string name="device_manager_session_details_title">Munkamenet információk</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Szűrő törlése</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">Nincs inaktív munkamenet.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">Nincs ellenőrizetlen munkamenet.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">Nincs ellenőrzött munkamenet.</string>
|
||||
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
|
||||
<item quantity="one">Fontold meg, hogy kijelentkezel a régi munkamenetekből (%1$d napja vagy régebben használtál) amit már nem használsz.</item>
|
||||
<item quantity="other">Fontold meg, hogy kijelentkezel a régi munkamenetekből (%1$d napja vagy régebben használtál) amit már nem használsz.</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">Inaktív</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">Erősítse meg a munkameneteit a még biztonságosabb csevegéshez vagy jelentkezzen ki ezekből, ha nem ismeri fel vagy már nem használja őket.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">Ellenőrizetlen</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">A legjobb biztonság érdekében jelentkezz ki minden olyan munkamenetből amit nem ismersz fel vagy régen használtál már.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">Hitelesített</string>
|
||||
<string name="a11y_device_manager_filter">Szűrés</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="one">%1$d napja inaktív</item>
|
||||
<item quantity="other">%1$d napja inaktív</item>
|
||||
</plurals>
|
||||
<string name="device_manager_filter_option_inactive">Inaktív</string>
|
||||
<string name="device_manager_filter_option_unverified_description">Nem áll készen a biztonságos üzenetküldésre</string>
|
||||
<string name="device_manager_filter_option_unverified">Ellenőrizetlen</string>
|
||||
<string name="device_manager_filter_option_verified_description">Felkészülve a biztonságos üzenetküldésre</string>
|
||||
<string name="device_manager_filter_option_verified">Hitelesített</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Minden munkamenet</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Szűrés</string>
|
||||
<string name="device_manager_session_last_activity">Utolsó aktivitás %1$s</string>
|
||||
<string name="device_manager_device_title">Eszköz</string>
|
||||
<string name="device_manager_session_title">Munkamenet</string>
|
||||
<string name="device_manager_current_session_title">Jelenlegi munkamenet</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">A jobb biztonság vagy megbízhatóság érdekében ellenőrizze vagy jelentkezzen ki ebből a munkamenetből.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">Az aktuális munkamenet készen áll a biztonságos üzenetküldésre.</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">Ez a munkamenet beállítva a biztonságos üzenetküldéshez.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_verified">Az aktuális munkamenet készen áll a biztonságos üzenetküldésre.</string>
|
||||
<string name="labs_enable_deferred_dm_summary">Közvetlen beszélgetés indítása csak az első üzenettel</string>
|
||||
<string name="labs_enable_deferred_dm_title">Késleltetett közvetlen üzenetek engedélyezése</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Egyszerűsített Element opcionálisan lapokkal</string>
|
||||
<string name="labs_enable_new_app_layout_title">Új kinézet engedélyezése</string>
|
||||
</resources>
|
|
@ -2617,5 +2617,45 @@ Di masa mendatang proses verifikasi ini akan dimutakhirkan.</string>
|
|||
<string name="space_list_empty_title">Belum ada space.</string>
|
||||
<string name="a11y_collapse_space_children">Tutup %s anak</string>
|
||||
<string name="a11y_expand_space_children">Buka %s anak</string>
|
||||
<string name="change_space">Buat Space</string>
|
||||
</resources>
|
||||
<string name="change_space">Ubah Space</string>
|
||||
<string name="device_manager_session_details_device_ip_address">Alamat IP</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Aktivitas terakhir</string>
|
||||
<string name="device_manager_session_details_session_name">Nama sesi</string>
|
||||
<string name="device_manager_session_details_description">Informasi aplikasi, perangkat, dan aktivitas.</string>
|
||||
<string name="device_manager_session_details_title">Detail sesi</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Hapus Saringan</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">Tidak ditemukan sesi yang tidak aktif.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">Tidak ditemukan sesi yang belum diverifikasi.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">Tidak ditemukan sesi yang terverifikasi.</string>
|
||||
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
|
||||
<item quantity="other">Pertimbangkan untuk mengeluarkan sesi lawas (%1$d hari atau lebih) yang Anda tidak gunakan lagi.</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">Tidak aktif</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">Verifikasi sesi Anda untuk perpesanan aman yang terbaik atau keluarkan sesi yang Anda tidak kenal atau gunakan lagi.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">Belum diverifikasi</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">Untuk keamanan yang terbaik, keluarkan sesi yang Anda tidak kenal atau gunakan lagi.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">Terverifikasi</string>
|
||||
<string name="a11y_device_manager_filter">Saring</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="other">Tidak aktif selama %1$d hari atau lebih</item>
|
||||
</plurals>
|
||||
<string name="device_manager_filter_option_inactive">Tidak aktif</string>
|
||||
<string name="device_manager_filter_option_unverified_description">Belum siap untuk perpesanan aman</string>
|
||||
<string name="device_manager_filter_option_unverified">Belum diverifikasi</string>
|
||||
<string name="device_manager_filter_option_verified_description">Siap untuk perpesanan aman</string>
|
||||
<string name="device_manager_filter_option_verified">Terverifikasi</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Semua sesi</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Saring</string>
|
||||
<string name="device_manager_session_last_activity">Aktivitas terakhir %1$s</string>
|
||||
<string name="device_manager_device_title">Perangkat</string>
|
||||
<string name="device_manager_session_title">Sesi</string>
|
||||
<string name="device_manager_current_session_title">Sesi Saat Ini</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">Verifikasi atau keluarkan sesi ini untuk keamanan dan keandalan yang terbaik.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">Verifikasi sesi Anda saat ini untuk perpesanan aman yang baik.</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">Sesi ini siap untuk perpesanan aman.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_verified">Sesi Anda saat ini siap untuk perpesanan aman.</string>
|
||||
<string name="labs_enable_deferred_dm_summary">Buat pesan langsung hanya pada pesan pertama</string>
|
||||
<string name="labs_enable_deferred_dm_title">Aktifkan pesan langsung tangguhan</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Sebuah Element yang sederhana dengan fitur tab opsional</string>
|
||||
<string name="labs_enable_new_app_layout_title">Aktifkan tata letak baru</string>
|
||||
</resources>
|
|
@ -1536,7 +1536,7 @@
|
|||
<string name="external_link_confirmation_title">Yfirfarðu þennan tengil</string>
|
||||
<string name="secure_backup_reset_if_you_reset_all">Ef þú frumstillir allt</string>
|
||||
<string name="qr_code_scanned_verif_waiting_notice">Næstum því búið! Bíð eftir staðfestingu…</string>
|
||||
<string name="add_a_topic_link_text">Bæta við umræðuefni</string>
|
||||
<string name="add_a_topic_link_text">Bættu við umræðuefni</string>
|
||||
<string name="crosssigning_verify_this_session">Sannprófa þessa innskráningu</string>
|
||||
<string name="settings_active_sessions_signout_device">Skrá út úr þessari setu</string>
|
||||
<string name="verification_conclusion_ok_notice">Skilaboð við þennan notanda eru enda-í-enda dulrituð þannig að enginn annar getur lesið þau.</string>
|
||||
|
@ -1751,7 +1751,7 @@
|
|||
<string name="settings_developer_mode">Forritarahamur</string>
|
||||
<string name="soft_logout_clear_data_title">Hreinsa persónuleg gögn</string>
|
||||
<string name="login_server_matrix_org_text">Taktu þátt ókeypis ásamt milljónum annarra á stærsta almenningsþjóninum</string>
|
||||
<string name="ftue_auth_use_case_skip_partial">sleppt þessari spurningu</string>
|
||||
<string name="ftue_auth_use_case_skip_partial">Sleppa þessari spurningu</string>
|
||||
<string name="ftue_auth_carousel_encrypted_title">Örugg skilaboð.</string>
|
||||
<string name="settings_discovery_bad_identity_server">Gat ekki tengst við auðkennisþjón</string>
|
||||
<string name="keys_backup_settings_status_not_setup">Dulritunarlyklarnir þínir eru ekki öryggisafritaðir úr þessari setu.</string>
|
||||
|
@ -1990,10 +1990,10 @@
|
|||
<string name="seen_by">Séð af</string>
|
||||
<string name="ftue_personalize_skip_this_step">Sleppa þessu skrefi</string>
|
||||
<string name="ftue_personalize_submit">Vista og halda áfram</string>
|
||||
<string name="ftue_personalize_complete_subtitle">Kjörstillingarnar þínar hafa verið vistaðar.</string>
|
||||
<string name="ftue_personalize_complete_subtitle">Farðu hvenær sem er í stillingarnar til að breyta notandasniðinu þínu.</string>
|
||||
<string name="ftue_personalize_complete_title">Nú ertu tilbúin(n)!</string>
|
||||
<string name="ftue_personalize_lets_go">Hefjumst handa</string>
|
||||
<string name="ftue_profile_picture_subtitle">Þú getur breytt þessu hvenær sem er.</string>
|
||||
<string name="ftue_profile_picture_subtitle">Þú getur breytt þessu hvenær sem er</string>
|
||||
<string name="ftue_profile_picture_title">Bættu við auðkennismynd</string>
|
||||
<string name="ftue_display_name_entry_footer">Þú getur breytt þessu síðar</string>
|
||||
<string name="ftue_display_name_entry_title">Birtingarnafn</string>
|
||||
|
@ -2012,4 +2012,206 @@
|
|||
<string name="action_try_it_out">Prófaðu það</string>
|
||||
<string name="action_disable">Gera óvirkt</string>
|
||||
<string name="initial_sync_request_title">Upphafleg samstillingarbeiðni</string>
|
||||
</resources>
|
||||
<string name="onboarding_new_app_layout_welcome_title">Velkomin í nýja sýn!</string>
|
||||
<string name="location_share_live_view">Skoða staðsetningu í rauntíma</string>
|
||||
<string name="space_explore_filter_no_result_description">Sumar niðurstöður gætu verið faldar þar sem þær eru einkamál, þá þarftu boð til að geta séð þær.</string>
|
||||
<string name="space_leave_prompt_msg_as_admin">Þú ert eini stjórnandi þessa svæðis. Ef þú yfirgefur það verður enginn annar sem er með stjórn yfir því.</string>
|
||||
<string name="space_leave_prompt_msg_private">Þú munt ekki geta tekið þátt aftur nema þér verði boðið aftur.</string>
|
||||
<string name="space_leave_radio_button_none">Yfirgefa ekkert</string>
|
||||
<string name="space_leave_radio_button_all">Yfirgefa allt</string>
|
||||
<string name="space_leave_radio_buttons_title">Efni á þessu svæði</string>
|
||||
<string name="room_alias_preview_not_found">Þetta samnefni er ekki aðgengilegt í augnablikinu.
|
||||
\nPrófaðu aftur síðar, eða spurðu einhvern stjórnanda hvort þú hafir aðgang.</string>
|
||||
<string name="command_description_leave_room">Fara af spjallrás með uppgefið auðkenni (eða fyrirliggjandi spjallrás ef þetta er núll)</string>
|
||||
<string name="command_description_join_space">Taka þátt í svæði með uppgefið auðkenni</string>
|
||||
<string name="settings_security_pin_code_use_biometrics_error">Gat ekki virkjað auðkenningu með lífkennum.</string>
|
||||
<string name="identity_server_set_alternative_notice">Annars geturðu sett inn slóð á hvaða auðkennisþjón sem er</string>
|
||||
<string name="identity_server_set_default_notice">Heimaþjónninn þinn (%1$s) stingur upp á að nota %2$s sem auðkenningarþjón fyrir þig</string>
|
||||
<string name="identity_server_user_consent_not_provided">Samþykki notandans hefur ekki verið gefið.</string>
|
||||
<string name="identity_server_error_no_identity_server_configured">Stilltu fyrst auðkennisþjón.</string>
|
||||
<string name="identity_server_error_outdated_home_server">Þessi aðgerð er ekki möguleg. Heimaþjónninn er úreltur.</string>
|
||||
<string name="user_code_info_text">Deildu þessum kóða með fólki svo viðkomandi geti skannað hann, bætt þér við og byrjað að spjalla.</string>
|
||||
<string name="error_forbidden_digits_only_username">Heimaþjónn notandans samþykkir ekki notendanöfn einungis með tölustöfum.</string>
|
||||
<string name="settings_security_prevent_screenshots_title">Hindra skjámyndatöku af forritinu</string>
|
||||
<string name="settings_notification_configuration">Uppsetning tilkynninga</string>
|
||||
<string name="error_failed_to_import_keys">Mistókst að flytja inn lykla</string>
|
||||
<string name="qr_code_scanned_self_verif_notice">Næstum því búið! Sýnir hitt tækið gátmerki\?</string>
|
||||
<string name="room_created_summary_no_topic_creation_text">%s svo fólk viti að um hvað málin snúist.</string>
|
||||
<string name="send_your_first_msg_to_invite">Sendu fyrstu skilaboðin þín til að bjóða %s að spjalla</string>
|
||||
<string name="this_is_the_beginning_of_room_no_name">Þetta er upphafið á þessu samtali.</string>
|
||||
<string name="this_is_the_beginning_of_room">Þetta er upphafið á %s.</string>
|
||||
<string name="room_created_summary_item">%s bjó til og stillti spjallrásina.</string>
|
||||
<string name="encryption_unknown_algorithm_tile_description">Dulritunin sem notuð er í þessari spjallrás er ekki studd</string>
|
||||
<string name="encryption_misconfigured">Dulritun er rangt stillt</string>
|
||||
<string name="direct_room_encryption_enabled_tile_description_future">Skilaboð í þessu spjalli verða enda-í-enda dulrituð.</string>
|
||||
<string name="encryption_enabled_tile_description">Skilaboð í þessari spjallrás eru enda-í-enda dulrituð. Lærðu meira um þetta og yfirfarðu notendur í notandasniðum þeirra.</string>
|
||||
<string name="bootstrap_cancel_text">Ef þú hættir við núna, geturðu tapað dulrituðum skilaboðum og gögnum ef þú missir aðgang að innskráningum þínum.
|
||||
\n
|
||||
\nÞú getur víka sett upp örugga afritun og sýslað með dulritunarlyklana þína í stillingunum.</string>
|
||||
<string name="bootstrap_crosssigning_progress_initializing">Gef út útbúna auðkennislykla</string>
|
||||
<string name="bootstrap_loading_title">Set upp endurheimtu.</string>
|
||||
<string name="bootstrap_dont_reuse_pwd">Ekki nota lykilorðið fyrir aðganginn þinn.</string>
|
||||
<string name="message_key">Lykill skilaboða</string>
|
||||
<string name="verify_new_session_was_not_me">Þetta var ekki ég</string>
|
||||
<string name="settings_key_requests">Beiðnir um lykla</string>
|
||||
<string name="login_default_session_public_name">${app_name} fyrir Android</string>
|
||||
<string name="qr_code_scanned_by_other_notice">Næstum því búið! Sýnir %s gátmerki\?</string>
|
||||
<string name="room_member_profile_failed_to_get_devices">Mistókst að ná í setur</string>
|
||||
<plurals name="settings_active_sessions_count">
|
||||
<item quantity="one">%d virk seta</item>
|
||||
<item quantity="other">%d virkar setur</item>
|
||||
</plurals>
|
||||
<string name="settings_failed_to_get_crypto_device_info">Engar dulkóðunarupplýsingar tiltækar</string>
|
||||
<string name="room_settings_enable_encryption_no_permission">Þú hefur ekki heimild til að virkja dulritun á þessari spjallrás.</string>
|
||||
<string name="ftue_auth_phone_confirmation_subtitle">Kóði var sendur til: %s</string>
|
||||
<string name="ftue_auth_phone_confirmation_title">Staðfestu símanúmerið þitt</string>
|
||||
<string name="ftue_auth_phone_confirmation_entry_title">Staðfestingarkóði</string>
|
||||
<string name="ftue_auth_choose_server_ems_title">Viltu hýsa þinn eigin netþjón\?</string>
|
||||
<string name="ftue_auth_choose_server_sign_in_subtitle">Hvert er vistfang netþjónsins þíns\?</string>
|
||||
<string name="ftue_auth_choose_server_subtitle">Hvert er vistfang netþjónsins þíns\? Þetta er staður sem geymir öll gögnin þín</string>
|
||||
<string name="ftue_auth_choose_server_title">Veldu netþjón fyrir þig</string>
|
||||
<string name="ftue_auth_sign_in_choose_server_header">Þar sem samtölin þín eru</string>
|
||||
<string name="ftue_auth_create_account_choose_server_header">Þar sem samtölin þín verða</string>
|
||||
<string name="ftue_auth_create_account_password_entry_footer">Verður að vera að minnsta kosti 8 stafir</string>
|
||||
<string name="ftue_auth_create_account_username_entry_footer">Aðrir geta fundið þig %s</string>
|
||||
<string name="ftue_account_created_subtitle">%s aðgangur þinn hefur verið útbúinn</string>
|
||||
<string name="ftue_account_created_take_me_home">Fara á forsíðuna</string>
|
||||
<string name="ftue_account_created_personalize">Persónugera notandasnið</string>
|
||||
<string name="ftue_auth_use_case_join_existing_server">Ætlarðu að ganga til liðs við fyrirliggjandi netþjón\?</string>
|
||||
<string name="ftue_auth_use_case_skip">Ekki ennþá viss\? %s</string>
|
||||
<string name="ftue_auth_use_case_title">Við hverja muntu helst spjalla\?</string>
|
||||
<string name="ftue_auth_carousel_workplace_body">${app_name} er líka frábært fyrir vinnustaðinn. Heimsins öruggustu samtök treysta því.</string>
|
||||
<string name="ftue_auth_carousel_encrypted_body">Enda-í-enda dulritað og ekkert símanúmer nauðsynlegt. Engar auglýsingar eða gagnasöfnun.</string>
|
||||
<string name="ftue_auth_carousel_control_body">Veldu hvar á að geyma samtölin þín, sem gefur þér stjórnina og algert sjálfstæði. Tengt í gegnum Matrix.</string>
|
||||
<string name="ftue_auth_carousel_secure_body">Örugg og óháð samskipti sem gefa þér færi á að ræða málin í friði rétt eins og þetta sé maður á mann í heimahúsi.</string>
|
||||
<string name="ftue_auth_carousel_workplace_title">Skilaboð fyrir teymið þitt.</string>
|
||||
<string name="reaction_search_type_hint">Skrifaðu stikkorð til að finna viðbrögð.</string>
|
||||
<string name="a11y_open_spaces">Opna svæðalista</string>
|
||||
<string name="room_preview_no_preview_join">Ekki er hægt að forskoða þessa spjallrás. Viltu taka þátt í henni\?</string>
|
||||
<string name="room_preview_not_found">Þessi spjallrás er ekki aðgengileg í augnablikinu.
|
||||
\nPrófaðu aftur síðar, eða spurðu einhvern stjórnanda hvort þú hafir aðgang.</string>
|
||||
<string name="malformed_message">Rangt sniðinn atburður, get ekki birt hann</string>
|
||||
<string name="event_redacted_by_user_reason">Atburði eytt af notanda</string>
|
||||
<string name="keys_backup_banner_update_line1">Nýjir lyklar fyrir örugg skilaboð</string>
|
||||
<string name="analytics_opt_in_content">Hjálpaðu okkur við að greina vandamál og bæta ${app_name} með því að deila nafnlausum gögnum varðandi notkun. Til að skilja hvernig fólk notar saman mörg tæki, munum við útbúa tilviljanakennt auðkenni, sem tækin þín deila.
|
||||
\n
|
||||
\nÞú getur lesið alla skilmála okkar %s.</string>
|
||||
<string name="settings_autoplay_animated_images_title">Spila hreyfimyndir sjálfvirkt</string>
|
||||
<string name="settings_troubleshoot_test_endpoint_registration_failed">Mistókst að skrá endapunkt á heimaþjóninn:
|
||||
\n%1$s</string>
|
||||
<string name="settings_troubleshoot_test_endpoint_registration_success">Það tókst að skrá endapunkt á heimaþjóninn.</string>
|
||||
<string name="settings_troubleshoot_test_endpoint_registration_title">Skráning endapunkts</string>
|
||||
<plurals name="search_space_multiple_parents">
|
||||
<item quantity="one">%1$s og %2$d í viðbót</item>
|
||||
<item quantity="other">%1$s og %2$d í viðbót</item>
|
||||
</plurals>
|
||||
<string name="space_settings_permissions_subtitle">Skoða og uppfæra hlutverk sem krafist er til að breyta ýmsum þáttum svæðisins.</string>
|
||||
<string name="room_settings_permissions_subtitle">Skoða og uppfæra hlutverk sem krafist er til að breyta ýmsum þáttum spjallrásarinnar.</string>
|
||||
<string name="auth_reset_password_error_unverified">Tölvupóstfang ekki staðfest, athugaðu pósthólfið þitt</string>
|
||||
<string name="invites_empty_title">Ekkert nýtt.</string>
|
||||
<string name="space_list_empty_title">Engin svæði ennþá.</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Einfaldað Element með valkvæðum flipum</string>
|
||||
<string name="labs_enable_new_app_layout_title">Virkja nýja framsetningu</string>
|
||||
<string name="home_layout_preferences">Kjörstillingar framsetningar</string>
|
||||
<string name="change_space">Skipta um svæði</string>
|
||||
<string name="all_chats">Allar spjallrásir</string>
|
||||
<string name="onboarding_new_app_layout_button_try">Prófaðu það</string>
|
||||
<string name="onboarding_new_app_layout_feedback_title">Gefðu umsögn</string>
|
||||
<string name="device_manager_session_details_device_ip_address">IP-vistfang</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Síðasta virkni</string>
|
||||
<string name="device_manager_session_details_session_name">Nafn á setu</string>
|
||||
<string name="device_manager_session_details_title">Nánar um setuna</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Hreinsa síu</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">Engar óvirkar setur fundust.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">Engar óstaðfestar setur fundust.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">Engar staðfestar setur fundust.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">Óvirkt</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">Óstaðfest</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">Staðfest</string>
|
||||
<string name="a11y_device_manager_filter">Sía</string>
|
||||
<string name="device_manager_filter_option_inactive">Óvirkt</string>
|
||||
<string name="device_manager_filter_option_unverified">Óstaðfest</string>
|
||||
<string name="device_manager_filter_option_verified">Staðfest</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Allar setur</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Sía</string>
|
||||
<string name="device_manager_session_last_activity">Síðasta virkni %1$s</string>
|
||||
<string name="device_manager_device_title">Tæki</string>
|
||||
<string name="device_manager_session_title">Seta</string>
|
||||
<string name="device_manager_current_session_title">Núverandi seta</string>
|
||||
<string name="device_manager_unverified_sessions_title">Óstaðfestar setur</string>
|
||||
<string name="device_manager_other_sessions_view_all">Skoða allt (%1$d)</string>
|
||||
<string name="device_manager_view_details">Skoða nánar</string>
|
||||
<string name="device_manager_verify_session">Sannprófa setu</string>
|
||||
<string name="device_manager_verification_status_unverified">Óstaðfest seta</string>
|
||||
<string name="device_manager_verification_status_verified">Staðfest seta</string>
|
||||
<string name="a11y_device_manager_device_type_unknown">Óþekkt tegund tækis</string>
|
||||
<string name="a11y_device_manager_device_type_desktop">Skjáborð</string>
|
||||
<string name="a11y_device_manager_device_type_web">Vefur</string>
|
||||
<string name="a11y_device_manager_device_type_mobile">Farsími</string>
|
||||
<string name="live_location_labs_promotion_switch_title">Virkja deilingu staðsetninga</string>
|
||||
<string name="settings_troubleshoot_test_current_gateway_title">Netgátt</string>
|
||||
<string name="settings_troubleshoot_test_current_distributor_title">Aðferð</string>
|
||||
<string name="unifiedpush_distributor_background_sync">Samstilling í bakgrunni</string>
|
||||
<string name="unifiedpush_distributor_fcm_fallback">Google þjónustur</string>
|
||||
<string name="live_location_share_location_item_share">Deila staðsetningu</string>
|
||||
<string name="location_share_live_remaining_time">%1$s hætti</string>
|
||||
<string name="poll_undisclosed_not_ended">Niðurstöður birtast einungis eftir að könnuninni hefur lokið</string>
|
||||
<string name="space_explore_filter_no_result_title">Engar niðurstöður fundust</string>
|
||||
<string name="a11y_open_settings">Opna stillingar</string>
|
||||
<string name="bootstrap_crosssigning_save_cloud">Afritaðu hann á einkageymslu sem þú átt í tölvuskýi</string>
|
||||
<string name="bootstrap_crosssigning_save_usb">Vistaðu hann á USB-lykil eða öryggisdisk</string>
|
||||
<string name="bootstrap_crosssigning_print_it">Prentaðu hann og geymdu á öruggum stað</string>
|
||||
<string name="bootstrap_info_text_2">Settu inn öryggisfrasa sem aðeins þú þekkir, þetta er notað til að verja leyndarmálin sem þú geymir á netþjóninum þínum.</string>
|
||||
<string name="enter_account_password">Settu inn %s til að halda áfram.</string>
|
||||
<string name="crosssigning_cannot_verify_this_session">Tókst ekki að sannreyna þetta tæki</string>
|
||||
<string name="device_manager_sessions_other_title">Aðrar setur</string>
|
||||
<string name="settings_sessions_list">Setur</string>
|
||||
<string name="ftue_auth_login_username_entry">Notandanafn / tölvupóstfang / símanúmer</string>
|
||||
<string name="ftue_auth_captcha_title">Ertu mannvera\?</string>
|
||||
<string name="ftue_auth_password_reset_confirmation">Endurstilling lykilorðs</string>
|
||||
<string name="ftue_auth_forgot_password">Gleymt lykilorð</string>
|
||||
<string name="ftue_auth_email_resend_email">Senda tölvupóst aftur</string>
|
||||
<string name="ftue_auth_email_verification_title">Skoðaðu tölvupóstinn þinn</string>
|
||||
<string name="ftue_auth_phone_confirmation_resend_code">Endursenda kóða</string>
|
||||
<string name="ftue_auth_sign_out_all_devices">Skrá út öll tæki</string>
|
||||
<string name="ftue_auth_reset_password">Endurstilla lykilorð</string>
|
||||
<string name="ftue_auth_new_password_title">Veldu nýtt lykilorð</string>
|
||||
<string name="ftue_auth_new_password_entry_title">Nýtt lykilorð</string>
|
||||
<string name="ftue_auth_reset_password_breaker_title">Athugaðu tölvupóstinn þinn.</string>
|
||||
<string name="ftue_auth_phone_entry_title">Símanúmer</string>
|
||||
<string name="ftue_auth_phone_title">Settu inn símanúmerið þitt</string>
|
||||
<string name="ftue_auth_email_entry_title">Tölvupóstur</string>
|
||||
<string name="ftue_auth_email_title">Settu inn tölvupóstfangið þitt</string>
|
||||
<string name="ftue_auth_choose_server_ems_cta">Hafðu samband</string>
|
||||
<string name="ftue_auth_choose_server_entry_hint">Slóð netþjóns</string>
|
||||
<string name="ftue_auth_welcome_back_title">Velkomin(n) aftur!</string>
|
||||
<string name="ftue_auth_create_account_edit_server_selection">Breyta</string>
|
||||
<string name="ftue_auth_create_account_sso_section_header">Eða</string>
|
||||
<string name="ftue_auth_create_account_title">Búa til aðganginn þinn</string>
|
||||
<string name="ftue_auth_use_case_subtitle">Við munum hjálpa þér að tengjast</string>
|
||||
<string name="create_room_action_go">Fara</string>
|
||||
<string name="room_preview_no_preview">Þessa spjallrás er ekki hægt að forskoða</string>
|
||||
<string name="updating_your_data">Uppfæri gögnin þín…</string>
|
||||
<string name="room_list_filter_people">Fólk</string>
|
||||
<string name="room_list_filter_favourites">Eftirlæti</string>
|
||||
<string name="room_list_filter_unreads">Ólesið</string>
|
||||
<string name="room_list_filter_all">Allt</string>
|
||||
<string name="font_size_use_system">Nota sjálfgefnar kerfisstillingar</string>
|
||||
<string name="font_size_section_manually">Velja handvirkt</string>
|
||||
<string name="font_size_section_auto">Setja sjálfvirkt</string>
|
||||
<string name="font_size_title">Veldu leturstærð</string>
|
||||
<string name="search_space_two_parents">%1$s og %2$s</string>
|
||||
<string name="invites_title">Boðsgestir</string>
|
||||
<string name="home_layout_preferences_sort_name">A-Ö</string>
|
||||
<string name="home_layout_preferences_sort_activity">Virkni</string>
|
||||
<string name="home_layout_preferences_sort_by">Raða eftir</string>
|
||||
<string name="home_layout_preferences_recents">Birta nýlegt</string>
|
||||
<string name="home_layout_preferences_filters">Sýna síur</string>
|
||||
<string name="action_next">Næsta</string>
|
||||
<string name="time_unit_second_short">sek</string>
|
||||
<string name="time_unit_minute_short">mín</string>
|
||||
<string name="time_unit_hour_short">klst</string>
|
||||
<string name="explore_rooms">Kanna spjallrásir</string>
|
||||
<string name="create_room">Búa til spjallrás</string>
|
||||
<string name="start_chat">Hefja spjall</string>
|
||||
</resources>
|
|
@ -2659,4 +2659,46 @@
|
|||
<string name="a11y_collapse_space_children">Riduci contenuto di %s</string>
|
||||
<string name="a11y_expand_space_children">Espandi contenuto di %s</string>
|
||||
<string name="change_space">Cambia spazio</string>
|
||||
</resources>
|
||||
<string name="device_manager_session_details_device_ip_address">Indirizzo IP</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Ultima attività</string>
|
||||
<string name="device_manager_session_details_session_name">Nome sessione</string>
|
||||
<string name="device_manager_session_details_description">Applicazione, dispositivo e informazioni di attività.</string>
|
||||
<string name="device_manager_session_details_title">Dettagli sessione</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Annulla filtro</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">Nessuna sessione inattiva trovata.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">Nessuna sessione non verificata trovata.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">Nessuna sessione verificata trovata.</string>
|
||||
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
|
||||
<item quantity="one">Considera di disconnettere le sessioni vecchie (%1$d giorno o più) che non usi più.</item>
|
||||
<item quantity="other">Considera di disconnettere le sessioni vecchie (%1$d giorni o più) che non usi più.</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">Inattivo</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">Verifica le tue sessioni per avere conversazioni più sicure o disconnetti quelle che non riconosci o che non usi più.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">Non verificato</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">Per una maggiore sicurezza, disconnetti tutte le sessioni che non riconosci o che non usi più.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">Verificato</string>
|
||||
<string name="a11y_device_manager_filter">Filtra</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="one">Inattivo da %1$d giorno o più</item>
|
||||
<item quantity="other">Inattivo da %1$d giorni o più</item>
|
||||
</plurals>
|
||||
<string name="device_manager_filter_option_inactive">Inattivo</string>
|
||||
<string name="device_manager_filter_option_unverified_description">Non pronto per messaggi sicuri</string>
|
||||
<string name="device_manager_filter_option_unverified">Non verificato</string>
|
||||
<string name="device_manager_filter_option_verified_description">Pronto per messaggi sicuri</string>
|
||||
<string name="device_manager_filter_option_verified">Verificato</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Tutte le sessioni</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Filtra</string>
|
||||
<string name="device_manager_session_last_activity">Ultima attività %1$s</string>
|
||||
<string name="device_manager_device_title">Dispositivo</string>
|
||||
<string name="device_manager_session_title">Sessione</string>
|
||||
<string name="device_manager_current_session_title">Sessione attuale</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">Verifica o disconnetti questa sessione per una migliore sicurezza e affidabilità.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">Verifica la tua sessione attuale per messaggi più sicuri.</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">Questa sessione è pronta per i messaggi sicuri.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_verified">La tua sessione attuale è pronta per i messaggi sicuri.</string>
|
||||
<string name="labs_enable_deferred_dm_title">Attiva messaggi diretti differiti</string>
|
||||
<string name="labs_enable_deferred_dm_summary">Crea messaggio diretto solo al primo messaggio</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Un Element semplificato con schede opzionali</string>
|
||||
<string name="labs_enable_new_app_layout_title">Attiva nuova disposizione</string>
|
||||
</resources>
|
|
@ -1406,4 +1406,781 @@
|
|||
<string name="room_permissions_change_room_name">Keisti kambario pavadinimą</string>
|
||||
<string name="room_permissions_change_history_visibility">Keisti istorijos matomumą</string>
|
||||
<string name="notice_direct_room_update">%s atnaujino čia.</string>
|
||||
</resources>
|
||||
<string name="login_a11y_captcha_container">Atlikite captcha iššūkį</string>
|
||||
<string name="login_a11y_choose_other">Pasirinkti pasirinktinį namų serverį</string>
|
||||
<string name="login_a11y_choose_modular">Pasirinkti Element Matrix Services</string>
|
||||
<string name="login_a11y_choose_matrix_org">Pasirinkti matrix.org</string>
|
||||
<string name="login_signup_cancel_confirmation_content">Jūsų paskyra dar nesukurta. Sustabdyti registracijos procesą\?</string>
|
||||
<string name="login_signup_cancel_confirmation_title">Perspėjimas</string>
|
||||
<string name="login_signup_error_user_in_use">Šis vartotojo vardas yra užimtas</string>
|
||||
<string name="login_signup_submit">Toliau</string>
|
||||
<string name="login_signup_password_hint">Slaptažodis</string>
|
||||
<string name="login_signup_username_hint">Naudotojo vardas</string>
|
||||
<string name="login_signin_username_hint">Naudotojo vardas arba el. pašto adresas</string>
|
||||
<string name="login_msisdn_confirm_submit">Toliau</string>
|
||||
<string name="login_msisdn_confirm_send_again">Siųsti vėl</string>
|
||||
<string name="login_msisdn_confirm_hint">Įvesti kodą</string>
|
||||
<string name="login_msisdn_confirm_notice">Ką tik išsiuntėme kodą į %1$s. Įveskite jį toliau, kad patvirtintumėte, kad tai jūs.</string>
|
||||
<string name="login_set_msisdn_title">Nustatyti telefono numerį</string>
|
||||
<string name="does_not_look_like_valid_email">Neatrodo kaip tinkamas el. pašto adresas</string>
|
||||
<string name="login_set_email_submit">Toliau</string>
|
||||
<string name="login_msisdn_confirm_title">Patvirtinkite telefono numerį</string>
|
||||
<string name="login_set_email_optional_hint">El. pašto adresas (nebūtinas)</string>
|
||||
<string name="login_set_email_mandatory_hint">El. pašto adresas</string>
|
||||
<string name="login_set_msisdn_submit">Toliau</string>
|
||||
<string name="login_set_msisdn_optional_hint">Telefono numeris (nebūtinas)</string>
|
||||
<string name="login_reset_password_success_notice">Jūsų slaptažodis buvo nustatytas iš naujo.</string>
|
||||
<string name="login_reset_password_success_title">Sėkmė!</string>
|
||||
<string name="login_reset_password_mail_confirmation_submit">Patvirtinau savo el. pašto adresą</string>
|
||||
<string name="login_reset_password_mail_confirmation_notice_2">Bakstelėkite nuorodą ir patvirtinkite naująjį slaptažodį. Paspaudę joje esančią nuorodą, spustelėkite žemiau.</string>
|
||||
<string name="login_reset_password_mail_confirmation_notice">Patvirtinimo el. laiškas buvo išsiųstas į %1$s.</string>
|
||||
<string name="login_reset_password_mail_confirmation_title">Patikrinkite savo pašto dėžutę</string>
|
||||
<string name="login_reset_password_error_not_found">Šis el. paštas nėra susietas su jokia paskyra</string>
|
||||
<string name="login_reset_password_warning_submit">Tęsti</string>
|
||||
<string name="login_reset_password_warning_content">Pakeitus slaptažodį bus iš naujo nustatyti visų jūsų sesijų visapusiško šifravimo raktai, todėl užšifruotų pokalbių istorijos nebus galima perskaityti. Prieš iš naujo nustatydami slaptažodį, sukurkite raktų atsarginę kopiją arba eksportuokite kambario raktus iš kitos sesijos.</string>
|
||||
<string name="login_reset_password_warning_title">Perspėjimas!</string>
|
||||
<string name="login_reset_password_password_hint">Naujas slaptažodis</string>
|
||||
<string name="login_reset_password_email_hint">El. paštas</string>
|
||||
<string name="login_reset_password_submit">Toliau</string>
|
||||
<string name="login_reset_password_notice">Į jūsų pašto dėžutę bus išsiųstas patvirtinimo el. laiškas, naujo slaptažodžio nustatymo patvirtinimui.</string>
|
||||
<string name="login_reset_password_on">Iš naujo nustatyti slaptažodį %1$s</string>
|
||||
<string name="login_login_with_email_error">Šis el. paštas nesusijęs su jokia paskyra.</string>
|
||||
<string name="login_registration_not_supported">Programa negali sukurti paskyros šiame namų serveryje.
|
||||
\n
|
||||
\nAr norite užsiregistruoti naudodami žiniatinklio klientą\?</string>
|
||||
<string name="login_registration_disabled">Atsiprašome, šis serveris nepriima naujų paskyrų.</string>
|
||||
<string name="login_mode_not_supported">Programa negali prisijungti prie šio namų serverio. Namų serveris palaiko šiuos prisijungimo tipus: %1$s.
|
||||
\n
|
||||
\nAr norite prisijungti naudodami žiniatinklio klientą\?</string>
|
||||
<string name="login_sso_error_message">Įkeliant puslapį įvyko klaida: %1$s (%2$d)</string>
|
||||
<string name="login_server_url_form_common_notice">Įveskite norimo naudoti serverio adresą</string>
|
||||
<string name="login_server_url_form_modular_notice">Įveskite adresą Modular Element arba serverio kurį norite naudoti</string>
|
||||
<string name="login_server_url_form_modular_text">Aukščiausios kokybės talpinimas organizacijoms</string>
|
||||
<string name="login_server_url_form_other_hint">Adresas</string>
|
||||
<string name="login_server_url_form_modular_hint">Element Matrix Services Adresas</string>
|
||||
<string name="login_clear_homeserver_history">Išvalyti istoriją</string>
|
||||
<string name="login_signin_sso">Tęsti su vienkartiniu prisijungimu</string>
|
||||
<string name="login_signin">Prisijungti</string>
|
||||
<string name="login_signup">Registruotis</string>
|
||||
<string name="login_signin_to">Prisijungti prie %1$s</string>
|
||||
<string name="login_connect_to_a_custom_server">Prisijungti prie pasirinktinio serverio</string>
|
||||
<string name="login_connect_to_modular">Prisijungti prie Element Matrix Services</string>
|
||||
<string name="login_connect_to">Prisijungti prie %1$s</string>
|
||||
<string name="login_continue">Tęsti</string>
|
||||
<string name="login_social_sso">vienkartinis prisijungimas</string>
|
||||
<string name="login_social_signin_with">Prisijungti su %s</string>
|
||||
<string name="login_social_signup_with">Užsiregistruoti su %s</string>
|
||||
<string name="login_social_continue_with">Tęsti su %s</string>
|
||||
<string name="login_social_continue">Arba</string>
|
||||
<string name="login_server_other_text">Pasirinktiniai & išplėstiniai nustatymai</string>
|
||||
<string name="login_server_other_title">Kitas</string>
|
||||
<string name="login_server_modular_learn_more">Sužinoti daugiau</string>
|
||||
<string name="login_server_modular_text">Aukščiausios kokybės talpinimas organizacijoms</string>
|
||||
<string name="login_server_matrix_org_text">Nemokamai prisijunkite prie milijonų žmonių didžiausiame viešajame serveryje</string>
|
||||
<string name="login_server_text">Kaip ir el. paštas, paskyros turi vienus namus, nors galite bendrauti su bet kuo</string>
|
||||
<string name="login_server_title">Pasirinkti serverį</string>
|
||||
<string name="login_splash_already_have_account">Aš jau turiu paskyrą</string>
|
||||
<string name="login_splash_create_account">Sukurti paskyrą</string>
|
||||
<string name="login_splash_submit">Pradėkite</string>
|
||||
<string name="login_splash_text3">Išplėskite ir pritaikykite savo patirtį</string>
|
||||
<string name="login_splash_text2">Saugokite pokalbių privatumą naudodami šifravimą</string>
|
||||
<string name="login_splash_text1">Bendraukite su žmonėmis tiesiogiai arba grupėse</string>
|
||||
<string name="login_splash_title">Tai jūsų pokalbis. Priklauso jums.</string>
|
||||
<string name="ftue_personalize_skip_this_step">Praleisti šį žingsnį</string>
|
||||
<string name="ftue_personalize_submit">Išsaugoti ir tęsti</string>
|
||||
<string name="ftue_personalize_complete_subtitle">Bet kada eikite į nustatymus norint atnaujinti savo profilį</string>
|
||||
<string name="ftue_personalize_complete_title">Atrodo gerai!</string>
|
||||
<string name="ftue_personalize_lets_go">Pirmyn</string>
|
||||
<string name="ftue_profile_picture_subtitle">Laikas prie vardo pridėti veidą</string>
|
||||
<string name="ftue_profile_picture_title">Pridėti profilio nuotrauką</string>
|
||||
<string name="ftue_display_name_entry_footer">Jūs tai galite pakeisti vėliau</string>
|
||||
<string name="ftue_display_name_entry_title">Rodomas vardas</string>
|
||||
<string name="ftue_display_name_title">Pasirinkite rodomą vardą</string>
|
||||
<string name="ftue_auth_login_username_entry">Vartotojo vardas / el. paštas / telefonas</string>
|
||||
<string name="ftue_auth_captcha_title">Ar esate žmogus\?</string>
|
||||
<string name="ftue_auth_password_reset_email_confirmation_subtitle">Vykdykite nurodymus, išsiųstus adresu %s</string>
|
||||
<string name="ftue_auth_forgot_password">Pamiršau slaptažodį</string>
|
||||
<string name="ftue_auth_password_reset_confirmation">Slaptažodžio nustatymas iš naujo</string>
|
||||
<string name="ftue_auth_email_resend_email">Iš naujo siųsti el. laišką</string>
|
||||
<string name="ftue_auth_email_verification_footer">Negavote el. laiško\?</string>
|
||||
<string name="ftue_auth_email_verification_subtitle">Vykdykite nurodymus, išsiųstus adresu %s</string>
|
||||
<string name="ftue_auth_email_verification_title">Patvirtinkite savo el. pašto adresą</string>
|
||||
<string name="ftue_auth_phone_confirmation_resend_code">Iš naujo siųsti kodą</string>
|
||||
<string name="ftue_auth_phone_confirmation_subtitle">Kodas buvo išsiųstas į %s</string>
|
||||
<string name="ftue_auth_phone_confirmation_title">Patvirtinkite savo telefono numerį</string>
|
||||
<string name="ftue_auth_sign_out_all_devices">Atjungti visus prietaisus</string>
|
||||
<string name="ftue_auth_reset_password">Iš naujo nustatyti slaptažodį</string>
|
||||
<string name="ftue_auth_use_case_option_one">Draugai ir šeima</string>
|
||||
<string name="ftue_auth_use_case_subtitle">Padėsime jums užmegzti ryšį</string>
|
||||
<string name="ftue_auth_use_case_title">Su kuo daugiausiai bendrausite\?</string>
|
||||
<string name="ftue_auth_carousel_workplace_body">${app_name} taip pat puikiai tinka darbo vietoje. Ja pasitiki saugiausios pasaulio organizacijos.</string>
|
||||
<string name="ftue_auth_carousel_encrypted_body">Visapusiškai užšifruota ir nereikia telefono numerio. Jokių reklamų ar duomenų rinkimo.</string>
|
||||
<string name="ftue_auth_carousel_control_body">Pasirinkite, kur bus saugomi jūsų pokalbiai, taip suteikdami jums galimybę kontroliuoti ir būti nepriklausomiems. Sujungta naudojant Matrix.</string>
|
||||
<string name="ftue_auth_carousel_secure_body">Saugus ir nepriklausomas bendravimas, suteikiantis tiek pat privatumo, kiek ir pokalbis akis į akį jūsų namuose.</string>
|
||||
<string name="error_terms_not_accepted">Bandykite dar kartą, kai sutiksite su savo namų serverio nuostatomis ir sąlygomis.</string>
|
||||
<string name="labs_allow_extended_logging_summary">Išsamūs žurnalai padės kūrėjams, nes siųsdami piktą purtymą pateiksite daugiau žurnalų. Net ir įjungus šią funkciją, programa nerenka žinučių turinio ar kitų privačių duomenų.</string>
|
||||
<string name="labs_allow_extended_logging">Įjungti išsamius žurnalus.</string>
|
||||
<string name="settings_agree_to_terms">Sutikite su tapatybės serverio (%s) paslaugų teikimo sąlygomis, kad galėtumėte būti atrandami pagal el. pašto adresą arba telefono numerį.</string>
|
||||
<string name="settings_discovery_disconnect_with_bound_pid">Šiuo metu bendrinate el. pašto adresus arba telefono numerius tapatybės serveryje %1$s. Norėdami nustoti juos bendrinti, turėsite iš naujo prisijungti prie %2$s.</string>
|
||||
<string name="settings_text_message_sent">Tekstinė žinutė buvo išsiųsta adresu %s. Įveskite joje esantį patvirtinimo kodą.</string>
|
||||
<string name="settings_discovery_no_terms">Pasirinktame tapatybės serveryje nėra jokių paslaugų teikimo sąlygų. Tęskite tik tuo atveju, jei pasitikite paslaugos savininku</string>
|
||||
<string name="settings_discovery_no_terms_title">Tapatybės serveris neturi paslaugų teikimo sąlygų</string>
|
||||
<string name="settings_discovery_please_enter_server">Įveskite tapatybės serverio url</string>
|
||||
<string name="settings_discovery_bad_identity_server">Nepavyko prisijungti prie tapatybės serverio</string>
|
||||
<string name="settings_discovery_enter_identity_server">Įveskite tapatybės serverio URL</string>
|
||||
<string name="identity_server_consent_dialog_content_question">Ar sutinkate siųsti šią informaciją\?</string>
|
||||
<string name="identity_server_consent_dialog_content_3">Jei norite atrasti esamus kontaktus, į tapatybės serverį reikia nusiųsti kontaktinę informaciją (el. paštus ir telefono numerius). Prieš išsiunčiant duomenis, siekiant užtikrinti privatumą, juos sutriname.</string>
|
||||
<string name="give_feedback_threads">Pateikti atsiliepimą</string>
|
||||
<string name="give_feedback" tools:ignore="UnusedResources">Pateikti atsiliepimą</string>
|
||||
<string name="feedback_failed">Atsiliepimo nepavyko išsiųsti (%s)</string>
|
||||
<string name="feedback_sent">Ačiū, jūsų atsiliepimas sėkmingai išsiųstas</string>
|
||||
<string name="you_may_contact_me">Jei turite papildomų klausimų, galite susisiekti su manimi</string>
|
||||
<string name="feedback">Atsiliepimas</string>
|
||||
<string name="beta_title_bottom_sheet_action">BETA</string>
|
||||
<string name="send_suggestion_failed">Pasiūlymo nepavyko išsiųsti (%s)</string>
|
||||
<string name="send_suggestion_sent">Ačiū, pasiūlymas sėkmingai išsiųstas</string>
|
||||
<string name="send_suggestion_report_placeholder">Aprašykite savo pasiūlymą čia</string>
|
||||
<string name="send_suggestion_content">Žemiau parašykite savo pasiūlymą.</string>
|
||||
<string name="send_suggestion">Pateikti pasiūlymą</string>
|
||||
<string name="preference_versions">Versijos</string>
|
||||
<string name="preference_help_summary">Gaukite pagalbos naudojant ${app_name}</string>
|
||||
<string name="preference_help_title">Pagalba ir parama</string>
|
||||
<string name="preference_help">Pagalba</string>
|
||||
<string name="preference_root_legals">Teisės aktai</string>
|
||||
<string name="preference_root_help_about">Pagalba & Apie</string>
|
||||
<string name="preference_voice_and_video">Balsas & Vaizdas</string>
|
||||
<string name="push_gateway_item_profile_tag">Profilio žyma:</string>
|
||||
<string name="push_gateway_item_format">Formatas:</string>
|
||||
<string name="push_gateway_item_url">Url:</string>
|
||||
<string name="push_gateway_item_device_name">session_name:</string>
|
||||
<string name="push_gateway_item_app_display_name">app_display_name:</string>
|
||||
<string name="push_gateway_item_push_key">push_key:</string>
|
||||
<string name="push_gateway_item_app_id">app_id:</string>
|
||||
<string name="navigate_to_thread_when_already_in_the_thread">Jūs jau žiūrite šią temą!</string>
|
||||
<string name="navigate_to_room_when_already_in_the_room">Jūs jau žiūrite šį kambarį!</string>
|
||||
<string name="import_e2e_keys_from_file">Importuoti šifravimo raktus iš failo \"%1$s\".</string>
|
||||
<string name="keys_backup_unable_to_get_keys_backup_data">Įvyko klaida gaunant raktų atsarginės kopijos duomenis</string>
|
||||
<string name="keys_backup_unable_to_get_trust_info">Įvyko klaida gaunant pasitikėjimo informaciją</string>
|
||||
<string name="create_room_federation_error">Kambarys sukurtas, tačiau kai kurie kvietimai nebuvo išsiųsti dėl šios priežasties:
|
||||
\n
|
||||
\n%s</string>
|
||||
<string name="create_room_public_description">Kiekvienas galės prisijungti prie šio kambario</string>
|
||||
<string name="create_room_public_title">Viešas</string>
|
||||
<string name="create_room_topic_hint">Tema</string>
|
||||
<string name="create_room_topic_section">Kambario tema (nebūtina)</string>
|
||||
<string name="create_room_name_hint">Pavadinimas</string>
|
||||
<string name="create_room_name_section">Kambario pavadinimas</string>
|
||||
<string name="create_room_action_go">Eiti</string>
|
||||
<string name="create_room_action_create">SUKURTI</string>
|
||||
<string name="fab_menu_create_chat">Tiesioginės žinutės</string>
|
||||
<string name="fab_menu_create_room">Kambariai</string>
|
||||
<string name="room_preview_no_preview_join">Šio kambario negalima peržiūrėti. Ar norite prie jo prisijungti\?</string>
|
||||
<string name="room_preview_not_found">Šiuo metu į šį kambarį patekti negalima.
|
||||
\nPabandykite vėliau arba paprašykite kambario admino patikrinti, ar turite prieigą.</string>
|
||||
<string name="room_preview_no_preview">Šio kambario negalima peržiūrėti</string>
|
||||
<string name="updating_your_data">Atnaujinami jūsų duomenys…</string>
|
||||
<string name="please_wait">Prašome palaukti…</string>
|
||||
<string name="change_room_directory_network">Keisti tinklą</string>
|
||||
<string name="error_no_network">Tinklo nėra. Patikrinkite interneto ryšį.</string>
|
||||
<string name="create_new_room">Sukurti naują kambarį</string>
|
||||
<string name="malformed_message">Neteisingai suformuotas įvykis, negalima rodyti</string>
|
||||
<string name="event_redacted_by_admin_reason">Įvykis moderuotas kambario admino</string>
|
||||
<string name="event_redacted_by_user_reason">Naudotojo ištrintas įvykis</string>
|
||||
<string name="event_redacted">Žinutė pašalinta</string>
|
||||
<string name="reactions">Reakcijos</string>
|
||||
<string name="message_view_reaction">Peržiūrėti reakcijas</string>
|
||||
<string name="message_add_reaction">Pridėti reakciją</string>
|
||||
<string name="title_activity_emoji_reaction_picker">Reakcijos</string>
|
||||
<string name="room_list_filter_people">Žmonės</string>
|
||||
<string name="room_list_filter_favourites">Parankiniai</string>
|
||||
<string name="room_list_filter_unreads">Neperskaityti</string>
|
||||
<string name="room_list_filter_all">Visi</string>
|
||||
<string name="room_list_rooms_empty_body">Čia bus rodomi jūsų kambariai. Bakstelėkite \"+\" apačioje dešinėje, kad rastumėte esamus kambarius arba pradėtumėte kurti savo.</string>
|
||||
<string name="room_list_rooms_empty_title">Kambariai</string>
|
||||
<string name="room_list_people_empty_body">Jūsų tiesioginių žinučių pokalbiai bus rodomi čia. Bakstelėkite \"+\" apačioje dešinėje, kad pradėtumėte keletą.</string>
|
||||
<string name="room_list_people_empty_title">Pokalbiai</string>
|
||||
<string name="room_list_catchup_empty_body">Neturite daugiau neperskaitytų žinučių</string>
|
||||
<string name="room_list_catchup_empty_title">Jūs viską pasivijote!</string>
|
||||
<string name="invited_by">Pakvietė %s</string>
|
||||
<string name="send_you_invite">Išsiuntė jums kvietimą</string>
|
||||
<string name="global_retry">Pakartoti</string>
|
||||
<string name="view_in_room">Peržiūrėti kambaryje</string>
|
||||
<string name="reply_in_thread">Atsakyti temoje</string>
|
||||
<string name="reply">Atsakyti</string>
|
||||
<string name="edit">Redaguoti</string>
|
||||
<string name="error_user_already_logged_in">Atrodo, kad bandote prisijungti prie kito namų serverio. Ar norite atsijungti\?</string>
|
||||
<string name="identity_server_not_defined">Jūs nenaudojate jokio tapatybės serverio</string>
|
||||
<string name="sas_error_unknown">Nežinoma klaida</string>
|
||||
<string name="sas_incoming_request_notif_content">%s nori patvirtinti jūsų sesiją</string>
|
||||
<string name="sas_incoming_request_notif_title">Patvirtinimo užklausa</string>
|
||||
<string name="sas_got_it">Supratau</string>
|
||||
<string name="sas_verified">Patvirtinta!</string>
|
||||
<string name="keys_backup_info_title_signature">Parašas</string>
|
||||
<string name="keys_backup_info_title_algorithm">Algoritmas</string>
|
||||
<string name="keys_backup_info_title_version">Versija</string>
|
||||
<plurals name="keys_backup_info_keys_backing_up">
|
||||
<item quantity="one">Kuriama atsarginė %d rakto kopija…</item>
|
||||
<item quantity="few">Kuriama atsarginė %d raktų kopija…</item>
|
||||
<item quantity="other">Kuriama atsarginė %d raktų kopija…</item>
|
||||
</plurals>
|
||||
<string name="keys_backup_info_keys_all_backup_up">Visų raktų atsarginė kopija sukurta</string>
|
||||
<string name="secure_backup_setup">Nustatyti saugią atsarginę kopiją</string>
|
||||
<string name="keys_backup_banner_in_progress">Kuriama raktų atsarginė kopija. Tai gali užtrukti kelias minutes…</string>
|
||||
<string name="keys_backup_banner_update_line2">Valdyti raktų atsarginėje kopijoje</string>
|
||||
<string name="keys_backup_banner_update_line1">Nauji saugių žinučių raktai</string>
|
||||
<string name="keys_backup_banner_recover_line2">Naudoti raktų atsarginę kopiją</string>
|
||||
<string name="keys_backup_banner_recover_line1">Niekada nepraraskite užšifruotų žinučių</string>
|
||||
<string name="secure_backup_banner_setup_line2">Apsisaugokite nuo užšifruotų žinučių ir duomenų praradimo</string>
|
||||
<string name="secure_backup_banner_setup_line1">Saugi atsarginė kopija</string>
|
||||
<string name="notification_off">Išjungta</string>
|
||||
<string name="command_description_clear_scalar_token">Kad ištaisyti Matrix programėlių valdymą</string>
|
||||
<string name="command_description_markdown">Įj./Išj. markdown</string>
|
||||
<string name="key_share_request">Prašymas dalytis raktais</string>
|
||||
<string name="timeline_error_room_not_found">Atsiprašome, šis kambarys nerastas.
|
||||
\nPrašome bandyti vėliau.%s</string>
|
||||
<string name="widget_integration_review_terms">Jei norite tęsti, turite sutikti su šios paslaugos sąlygomis.</string>
|
||||
<string name="room_no_active_widgets">Nėra aktyvių valdiklių</string>
|
||||
<string name="widget_integration_missing_user_id">Užklausoje trūksta user_id.</string>
|
||||
<string name="widget_integration_missing_room_id">Užklausoje trūksta room_id.</string>
|
||||
<string name="widget_integration_positive_power_level">Galios lygis turi būti teigiamas sveikasis skaičius.</string>
|
||||
<string name="widget_integration_failed_to_send_request">Nepavyko išsiųsti užklausos.</string>
|
||||
<string name="widget_integration_unable_to_create">Nepavyko sukurti valdiklio.</string>
|
||||
<string name="room_widget_webview_read_protected_media">Skaityti DRM apsaugotą mediją</string>
|
||||
<string name="room_widget_resource_permission_title">Šis valdiklis nori naudoti šiuos išteklius:</string>
|
||||
<string name="jitsi_leave_conf_to_join_another_one_content">Palikti dabartinę konferenciją ir pereiti į kitą\?</string>
|
||||
<string name="error_jitsi_join_conf">Atsiprašome, bandant prisijungti prie konferencijos įvyko klaida</string>
|
||||
<string name="error_jitsi_not_supported_on_old_device">Atsiprašome, konferenciniai skambučiai su Jitsi nepalaikomi senuose įrenginiuose (įrenginiuose su žemesne nei 6.0 Android OS)</string>
|
||||
<string name="room_widget_permission_widget_id">Valdiklio ID</string>
|
||||
<string name="room_widget_permission_theme">Jūsų tema</string>
|
||||
<string name="room_widget_permission_user_id">Jūsų naudotojo ID</string>
|
||||
<string name="room_widget_permission_avatar_url">Jūsų avataro URL</string>
|
||||
<string name="room_widget_permission_display_name">Jūsų rodomas vardas</string>
|
||||
<string name="room_widget_revoke_access">Atšaukti prieigą man</string>
|
||||
<string name="room_widget_open_in_browser">Atidaryti naršyklėje</string>
|
||||
<string name="room_widget_reload">Iš naujo įkelti valdiklį</string>
|
||||
<string name="room_widget_failed_to_load">Nepavyko įkelti valdiklio.
|
||||
\n%s</string>
|
||||
<string name="room_widget_permission_shared_info_title">Naudojant jį duomenys gali būti bendrinami su %s:</string>
|
||||
<string name="room_widget_permission_webview_shared_info_title">Naudojant jį gali būti nustatyti slapukai ir bendrinami duomenys su %s:</string>
|
||||
<string name="room_widget_permission_added_by">Šį valdiklį pridėjo:</string>
|
||||
<string name="room_widget_permission_title">Įkelti valdiklį</string>
|
||||
<string name="room_widget_activity_title">Valdiklis</string>
|
||||
<string name="active_widgets_title">Aktyvūs valdikliai</string>
|
||||
<string name="active_widget_view_action">PERŽIŪRĖTI</string>
|
||||
<plurals name="active_widgets">
|
||||
<item quantity="one">%d aktyvus valdiklis</item>
|
||||
<item quantity="few">%d aktyvūs valdikliai</item>
|
||||
<item quantity="other">%d aktyvių valdiklių</item>
|
||||
</plurals>
|
||||
<string name="widget_delete_message_confirmation">Ar tikrai norite ištrinti valdiklį iš šio kambario\?</string>
|
||||
<string name="huge">Milžiniškas</string>
|
||||
<string name="largest">Didžiausias</string>
|
||||
<string name="larger">Didesnis</string>
|
||||
<string name="large">Didelis</string>
|
||||
<string name="normal">Vidutinis</string>
|
||||
<string name="small">Mažas</string>
|
||||
<string name="tiny">Mažytis</string>
|
||||
<string name="font_size">Šrifto dydis</string>
|
||||
<string name="font_size_use_system">Naudoti sistemos numatytąjį</string>
|
||||
<string name="font_size_section_manually">Pasirinkti rankiniu būdu</string>
|
||||
<string name="font_size_section_auto">Nustatyti automatiškai</string>
|
||||
<string name="font_size_title">Pasirinkti šrifto dydį</string>
|
||||
<string name="notification_ticker_text_group">%1$s: %2$s %3$s</string>
|
||||
<string name="notification_ticker_text_dm">%1$s: %2$s</string>
|
||||
<string name="notification_inline_reply_failed">** Nepavyko išsiųsti - atidarykite kambarį</string>
|
||||
<string name="notification_sender_me">Aš</string>
|
||||
<string name="notification_new_invitation">Naujas pakvietimas</string>
|
||||
<string name="notification_new_messages">Naujos žinutės</string>
|
||||
<string name="notification_unknown_room_name">Kambarys</string>
|
||||
<string name="notification_unknown_new_event">Naujas įvykis</string>
|
||||
<string name="notification_unread_notified_messages_and_invitation">%1$s ir %2$s</string>
|
||||
<string name="notification_unread_notified_messages_in_room_and_invitation">%1$s esantys %2$s ir %3$s</string>
|
||||
<string name="notification_unread_notified_messages_in_room">%1$s esantys %2$s</string>
|
||||
<plurals name="notification_compat_summary_title">
|
||||
<item quantity="one">%d pranešimas</item>
|
||||
<item quantity="few">%d pranešimai</item>
|
||||
<item quantity="other">%d pranešimų</item>
|
||||
</plurals>
|
||||
<plurals name="notification_compat_summary_line_for_room">
|
||||
<item quantity="one">%1$s: %2$d žinutė</item>
|
||||
<item quantity="few">%1$s: %2$d žinutės</item>
|
||||
<item quantity="other">%1$s: %2$d žinučių</item>
|
||||
</plurals>
|
||||
<plurals name="notification_invitations">
|
||||
<item quantity="one">%d pakvietimas</item>
|
||||
<item quantity="few">%d pakvietimai</item>
|
||||
<item quantity="other">%d pakvietimų</item>
|
||||
</plurals>
|
||||
<plurals name="notification_unread_notified_messages_in_room_rooms">
|
||||
<item quantity="one">%d kambarys</item>
|
||||
<item quantity="few">%d kambariai</item>
|
||||
<item quantity="other">%d kambarių</item>
|
||||
</plurals>
|
||||
<plurals name="notification_unread_notified_messages">
|
||||
<item quantity="one">%d neperskaityta pranešta žinutė</item>
|
||||
<item quantity="few">%d neperskaitytos praneštos žinutės</item>
|
||||
<item quantity="other">%d neperskaitytų praneštų žinučių</item>
|
||||
</plurals>
|
||||
<string name="directory_add_a_new_server_error_already_added">Šis serveris jau yra sąraše</string>
|
||||
<string name="directory_add_a_new_server_error">Negalima rasti šio serverio arba jo kambarių sąrašo</string>
|
||||
<string name="directory_add_a_new_server_prompt">Įveskite naujo serverio, kurį norite patyrinėti, pavadinimą.</string>
|
||||
<string name="directory_add_a_new_server">Pridėti naują serverį</string>
|
||||
<string name="directory_your_server">Jūsų serveris</string>
|
||||
<string name="directory_server_native_rooms">Visi vietiniai %s kambariai</string>
|
||||
<string name="directory_server_all_rooms_on_server">Visi kambariai %s serveryje</string>
|
||||
<string name="directory_server_placeholder">Serverio pavadinimas</string>
|
||||
<string name="select_room_directory">Pasirinkti kambarių katalogą</string>
|
||||
<string name="encryption_information_verify_device_warning2">Jei jie nesutampa, gali kilti pavojus jūsų komunikacijos saugumui.</string>
|
||||
<string name="encryption_information_verify">Patvirtinti</string>
|
||||
<string name="encryption_information_unknown_ip">nežinomas ip</string>
|
||||
<string name="encryption_information_verified">Patvirtinta</string>
|
||||
<string name="encryption_information_not_verified">Nepatvirtinta</string>
|
||||
<plurals name="encryption_import_room_keys_success">
|
||||
<item quantity="one">%1$d/%2$d raktas importuotas sėkmingai.</item>
|
||||
<item quantity="few">%1$d/%2$d raktai importuoti sėkmingai.</item>
|
||||
<item quantity="other">%1$d/%2$d raktų importuota sėkmingai.</item>
|
||||
</plurals>
|
||||
<string name="encryption_never_send_to_unverified_devices_summary">Niekada nesiųsti užšifruotų žinučių į nepatvirtintas sesijas iš šios sesijos.</string>
|
||||
<string name="encryption_never_send_to_unverified_devices_title">Šifruoti tik į patvirtintas sesijas</string>
|
||||
<string name="encryption_import_import">Importuoti</string>
|
||||
<string name="encryption_import_room_keys_summary">Importuoti raktus iš vietinio failo</string>
|
||||
<string name="encryption_import_room_keys">Importuoti kambarių raktus</string>
|
||||
<string name="encryption_import_e2e_room_keys">Importuoti šifruotų kambarių raktus</string>
|
||||
<string name="encryption_message_recovery">Užšifruotų žinučių atkūrimas</string>
|
||||
<string name="encryption_exported_successfully">Raktai sėkmingai eksportuoti</string>
|
||||
<string name="encryption_export_notice">Sukurkite slaptafrazę eksportuojamiems raktams užšifruoti. Norėdami importuoti raktus, turėsite įvesti tą pačią slaptafrazę.</string>
|
||||
<string name="encryption_export_export">Eksportuoti</string>
|
||||
<string name="encryption_export_room_keys_summary">Eksportuoti raktus į vietinį failą</string>
|
||||
<string name="encryption_export_room_keys">Eksportuoti kambarių raktus</string>
|
||||
<string name="encryption_export_e2e_room_keys">Eksportuoti šifruotų kambarių raktus</string>
|
||||
<string name="encryption_information_device_key">Sesijos raktas</string>
|
||||
<string name="encryption_information_device_name">Viešas pavadinimas</string>
|
||||
<string name="encryption_information_decryption_error">Iššifravimo klaida</string>
|
||||
<string name="decide_who_can_find_and_join">Nuspręskite, kas gali rasti ir prisijungti prie šio kambario.</string>
|
||||
<string name="room_alias_publish_to_directory_error">Nepavyko gauti dabartinio kambarių katalogo matomumo (%1$s).</string>
|
||||
<string name="room_alias_publish_to_directory">Paskelbti šį kambarį viešai %1$s kambarių kataloge\?</string>
|
||||
<string name="room_alias_action_unpublish">Panaikinti šio adreso skelbimą</string>
|
||||
<string name="room_alias_action_publish">Paskelbti šį adresą</string>
|
||||
<string name="room_alias_local_address_add">Pridėti vietinį adresą</string>
|
||||
<string name="room_alias_local_address_empty">Šis kambarys neturi vietinių adresų</string>
|
||||
<string name="room_alias_local_address_subtitle">Nustatykite šio kambario adresus, kad naudotojai galėtų rasti šį kambarį per jūsų namų serverį (%1$s)</string>
|
||||
<string name="room_alias_local_address_title">Vietiniai adresai</string>
|
||||
<string name="room_alias_address_hint">Naujas skelbiamas adresas (pvz., #pseudonimas:serveris)</string>
|
||||
<string name="room_alias_address_empty">Kitų paskelbtų adresų dar nėra.</string>
|
||||
<string name="room_alias_address_empty_can_add">Kitų paskelbtų adresų dar nėra, pridėkite juos žemiau.</string>
|
||||
<string name="room_alias_delete_confirmation">Ištrinti adresą \"%1$s\"\?</string>
|
||||
<string name="room_alias_unpublish_confirmation">Panaikinti adreso \"%1$s\" skelbimą\?</string>
|
||||
<string name="room_alias_published_alias_add_manually_submit">Paskelbti</string>
|
||||
<string name="room_alias_published_alias_add_manually">Paskelbti naują adresą rankiniu būdu</string>
|
||||
<string name="room_alias_published_other">Kiti paskelbti adresai:</string>
|
||||
<string name="room_alias_published_alias_main">Tai yra pagrindinis adresas</string>
|
||||
<string name="room_alias_published_alias_subtitle">Paskelbtus adresus gali naudoti bet kas bet kuriame serveryje, prisijungimui prie jūsų kambario. Norint paskelbti adresą, pirmiausia nustatykite jį kaip vietinį adresą.</string>
|
||||
<string name="room_alias_published_alias_title">Paskelbti adresai</string>
|
||||
<string name="settings_troubleshoot_test_token_registration_title">Žetono registracija</string>
|
||||
<string name="settings_troubleshoot_test_fcm_failed_account_missing_quick_fix">Pridėti paskyrą</string>
|
||||
<string name="settings_troubleshoot_test_fcm_failed_account_missing">[%1$s]
|
||||
\nŠi klaida yra nekontroliuojama ${app_name}. Telefone nėra Google paskyros. Atidarykite paskyrų tvarkytuvę ir pridėkite Google paskyrą.</string>
|
||||
<string name="encryption_misconfigured">Šifravimas neteisingai sukonfigūruotas</string>
|
||||
<string name="encryption_not_enabled">Šifravimas nėra įjungtas</string>
|
||||
<string name="direct_room_encryption_enabled_tile_description_future">Šiame pokalbyje žinutės bus visapusiškai užšifruojamos.</string>
|
||||
<string name="direct_room_encryption_enabled_tile_description">Šiame pokalbyje žinutės yra visapusiškai užšifruotos.</string>
|
||||
<string name="encryption_enabled_tile_description">Šiame kambaryje žinutės yra visapusiškai užšifruotos. Sužinokite daugiau ir patvirtinkite naudotojus jų profilyje.</string>
|
||||
<string name="encryption_enabled">Šifravimas įjungtas</string>
|
||||
<string name="encryption_unknown_algorithm_tile_description">Šiame kambaryje naudojamas šifravimas nepalaikomas</string>
|
||||
<string name="qr_code_scanned_verif_waiting_notice">Jau beveik! Laukiama patvirtinimo…</string>
|
||||
<string name="qr_code_scanned_self_verif_notice">Jau beveik! Ar kitas prietaisas rodo varnelę\?</string>
|
||||
<string name="topic_prefix">"Tema: "</string>
|
||||
<string name="add_a_topic_link_text">Pridėkite temą</string>
|
||||
<string name="send_your_first_msg_to_invite">Siųskite pirmąją žinutę kad pakviestumėte %s į pokalbį</string>
|
||||
<string name="this_is_the_beginning_of_dm">Tai yra jūsų tiesioginių žinučių su %s istorijos pradžia.</string>
|
||||
<string name="this_is_the_beginning_of_room_no_name">Tai šio pokalbio pradžia.</string>
|
||||
<string name="this_is_the_beginning_of_room">Tai yra %s pradžia.</string>
|
||||
<string name="direct_room_created_summary_item_by_you">Jūs prisijungėte.</string>
|
||||
<string name="direct_room_created_summary_item">%s prisijungė.</string>
|
||||
<string name="room_created_summary_item_by_you">Sukūrėte ir sukonfigūravote kambarį.</string>
|
||||
<string name="room_created_summary_item">%s sukūrė ir sukonfigūravo kambarį.</string>
|
||||
<string name="error_failed_to_import_keys">Nepavyko importuoti raktų</string>
|
||||
<string name="qr_code_scanned_verif_waiting">Laukiama %s…</string>
|
||||
<string name="auth_invalid_login_deactivated_account">Ši paskyra buvo deaktyvuota.</string>
|
||||
<string name="room_message_placeholder">Žinutė…</string>
|
||||
<string name="bootstrap_progress_checking_backup">Tikrinamas atsarginės kopijos raktas</string>
|
||||
<string name="recovery_key_empty_error_message">Įveskite atkūrimo raktą</string>
|
||||
<string name="bootstrap_invalid_recovery_key">Tai netinkamas atkūrimo raktas</string>
|
||||
<string name="use_file">Naudoti failą</string>
|
||||
<string name="bootstrap_enter_recovery">Norėdami tęsti, įveskite savo %s</string>
|
||||
<string name="security_prompt_text">Patvirtinkite save ir kitus, kad pokalbiai būtų saugūs</string>
|
||||
<string name="upgrade_security">Galimas šifravimo patobulinimas</string>
|
||||
<string name="bootstrap_progress_checking_backup_with_info">Tikrinamas atsarginės kopijos raktas (%s)</string>
|
||||
<string name="settings_troubleshoot_test_token_registration_success">FCM žetonas sėkmingai užregistruotas namų serveryje.</string>
|
||||
<string name="terms_description_for_integration_manager">Naudoti botus, tiltus, valdiklius ir lipdukų paketus</string>
|
||||
<string name="change_identity_server">Keisti tapatybės serverį</string>
|
||||
<string name="settings_discovery_consent_title">Siųsti el. paštus ir telefono numerius</string>
|
||||
<string name="add_identity_server">Konfigūruoti tapatybės serverį</string>
|
||||
<string name="disconnect_identity_server">Atjungti tapatybės serverį</string>
|
||||
<string name="identity_server">Tapatybės serveris</string>
|
||||
<string name="settings_text_message_sent_wrong_code">Patvirtinimo kodas neteisingas.</string>
|
||||
<string name="settings_text_message_sent_hint">Kodas</string>
|
||||
<string name="error_network_timeout">Atrodo, kad serveris neatsako per ilgai, tai gali būti dėl prasto ryšio arba serverio klaidos. Pabandykite dar kartą po kurio laiko.</string>
|
||||
<string name="one_user_read">%s perskaitė</string>
|
||||
<string name="two_users_read">%1$s ir %2$s perskaitė</string>
|
||||
<string name="three_users_read">%1$s, %2$s ir %3$s perskaitė</string>
|
||||
<plurals name="two_and_some_others_read">
|
||||
<item quantity="one">%1$s, %2$s ir %3$d kitas perskaitė</item>
|
||||
<item quantity="few">%1$s, %2$s ir %3$d kiti perskaitė</item>
|
||||
<item quantity="other">%1$s, %2$s ir %3$d kitų perskaitė</item>
|
||||
</plurals>
|
||||
<string name="a11y_jump_to_bottom">Peršokti į apačią</string>
|
||||
<string name="a11y_close_keys_backup_banner">Uždaryti raktų atsarginės kopijos antraštę</string>
|
||||
<string name="a11y_create_room">Sukurti naują kambarį</string>
|
||||
<string name="a11y_create_message">Sukurti naują pokalbį arba kambarį</string>
|
||||
<string name="a11y_create_direct_message">Sukurti naują tiesioginį pokalbį</string>
|
||||
<string name="a11y_create_menu_close">Uždaryti kambario kūrimo meniu…</string>
|
||||
<string name="a11y_create_menu_open">Atidaryti kambario kūrimo meniu</string>
|
||||
<string name="a11y_open_drawer">Atidaryti navigacijos stalčių</string>
|
||||
<string name="send_attachment">Siųsti priedą</string>
|
||||
<plurals name="fallback_users_read">
|
||||
<item quantity="one">%d naudotojas perskaitė</item>
|
||||
<item quantity="few">%d naudotojai perskaitė</item>
|
||||
<item quantity="other">%d naudotojų perskaitė</item>
|
||||
</plurals>
|
||||
<string name="error_file_too_big_simple">Failas yra per didelis, kad jį būtų galima įkelti.</string>
|
||||
<string name="attachment_type_dialog_title">Pridėti paveikslėlį iš</string>
|
||||
<string name="content_reported_as_inappropriate_content">Šis turinys buvo praneštas kaip nepadorus.
|
||||
\n
|
||||
\nJei nenorite matyti daugiau šio naudotojo turinio, galite jį ignoruoti kad paslėpti jo žinutes.</string>
|
||||
<string name="content_reported_as_inappropriate_title">Pranešta kaip nepadorus turinys</string>
|
||||
<string name="content_reported_as_spam_content">Apie šį turinį buvo pranešta kaip apie šlamštą.
|
||||
\n
|
||||
\nJei nenorite matyti daugiau šio naudotojo turinio, galite jį ignoruoti kad paslėpti jo žinutes.</string>
|
||||
<string name="content_reported_as_spam_title">Pranešta kaip šlamštas</string>
|
||||
<string name="content_reported_content">Buvo pranešta apie šį turinį.
|
||||
\n
|
||||
\nJei nenorite matyti daugiau šio naudotojo turinio, galite jį ignoruoti kad paslėpti jo žinutes.</string>
|
||||
<string name="content_reported_title">Turinys praneštas</string>
|
||||
<string name="block_user">IGNORUOTI NAUDOTOJĄ</string>
|
||||
<string name="report_content_custom_submit">PRANEŠTI</string>
|
||||
<string name="report_content_custom_hint">Pranešimo apie šį turinį priežastis</string>
|
||||
<string name="report_content_custom_title">Pranešti apie šį turinį</string>
|
||||
<string name="report_content_custom">Pasirinktinis pranešimas…</string>
|
||||
<string name="report_content_inappropriate">Tai nepadoru</string>
|
||||
<string name="report_content_spam">Tai šlamštas</string>
|
||||
<string name="uploads_files_no_result">Šiame kambaryje nėra failų</string>
|
||||
<string name="uploads_files_subtitle">%1$s %2$s</string>
|
||||
<string name="uploads_files_title">FAILAI</string>
|
||||
<string name="uploads_media_no_result">Šiame kambaryje nėra medijos</string>
|
||||
<string name="uploads_media_title">MEDIJA</string>
|
||||
<string name="attachment_viewer_item_x_of_y">%1$d iš %2$d</string>
|
||||
<string name="error_handling_incoming_share">Nepavyko tvarkyti bendrinimo duomenų</string>
|
||||
<string name="rotate_and_crop_screen_title">Pasukti ir apkarpyti</string>
|
||||
<string name="attachment_type_location">Vietovė</string>
|
||||
<string name="attachment_type_poll">Apklausa</string>
|
||||
<string name="attachment_type_sticker">Lipdukas</string>
|
||||
<string name="attachment_type_gallery">Galerija</string>
|
||||
<string name="attachment_type_camera">Kamera</string>
|
||||
<string name="attachment_type_contact">Kontaktas</string>
|
||||
<string name="attachment_type_file">Failas</string>
|
||||
<string name="reaction_search_type_hint">Įveskite raktažodžius, reakcijos radimui.</string>
|
||||
<string name="spoiler">Spoileris</string>
|
||||
<string name="command_description_spoiler">Siunčia duotą žinutę kaip spoilerį</string>
|
||||
<string name="notice_member_no_changes_by_you">Nepadarėte jokių pakeitimų</string>
|
||||
<string name="notice_member_no_changes">%1$s nepadarė jokių pakeitimų</string>
|
||||
<string name="room_join_rules_invite">%1$s padarė šį kambarį tik pakviestiems.</string>
|
||||
<string name="room_join_rules_public_by_you">Paviešinote kambarį visiems, kurie žino nuorodą.</string>
|
||||
<string name="room_join_rules_public">%1$s paviešino kambarį visiems, kurie žino nuorodą.</string>
|
||||
<string name="help_long_click_on_room_for_more_options">Ilgai spauskite ant kambario, kad pamatytumėte daugiau parinkčių</string>
|
||||
<string name="no_ignored_users">Jūs neignoruojate jokių naudotojų</string>
|
||||
<string name="room_list_quick_actions_low_priority_remove">Pašalinti iš žemo prioriteto</string>
|
||||
<string name="room_list_quick_actions_low_priority_add">Pridėti prie žemo prioriteto</string>
|
||||
<string name="room_list_quick_actions_favorite_remove">Pašalinti iš parankinių</string>
|
||||
<string name="room_list_quick_actions_favorite_add">Pridėti prie parankinių</string>
|
||||
<string name="message_ignore_user">Ignoruoti naudotoją</string>
|
||||
<string name="room_list_quick_actions_notifications_all_noisy">Visos žinutės (triukšmingas)</string>
|
||||
<string name="room_list_quick_actions_notifications_mute">Nutildyti</string>
|
||||
<string name="room_list_quick_actions_notifications_mentions">Tik paminėjimai</string>
|
||||
<string name="room_list_quick_actions_notifications_all">Visos žinutės</string>
|
||||
<string name="room_list_quick_actions_settings">Nustatymai</string>
|
||||
<string name="room_list_quick_actions_room_settings">Kambario nustatymai</string>
|
||||
<string name="room_list_quick_actions_leave">Išeiti iš kambario</string>
|
||||
<string name="direct_room_join_rules_invite_by_you">Padarėte šitai tik pakviestiems.</string>
|
||||
<string name="direct_room_join_rules_invite">%1$s padarė šitai tik pakviestiems.</string>
|
||||
<string name="room_join_rules_invite_by_you">Padarėte šį kambarį tik pakviestiems.</string>
|
||||
<string name="ftue_auth_carousel_workplace_title">Žinučių siuntimas jūsų komandai.</string>
|
||||
<string name="ftue_auth_carousel_encrypted_title">Saugus žinučių siuntimas.</string>
|
||||
<string name="ftue_auth_carousel_control_title">Jūs viską kontroliuojate.</string>
|
||||
<string name="ftue_auth_carousel_secure_title">Turėkite savo pokalbius.</string>
|
||||
<string name="timeline_unread_messages">Neperskaitytos žinutės</string>
|
||||
<string name="ftue_auth_use_case_skip">Dar nesate tikri\? %s</string>
|
||||
<string name="ftue_auth_use_case_option_three">Bendruomenės</string>
|
||||
<string name="ftue_auth_use_case_option_two">Komandos</string>
|
||||
<string name="ftue_auth_create_account_edit_server_selection">Redaguoti</string>
|
||||
<string name="ftue_auth_create_account_sso_section_header">Arba</string>
|
||||
<string name="ftue_auth_sign_in_choose_server_header">Kur laikomi jūsų pokalbiai</string>
|
||||
<string name="ftue_auth_create_account_choose_server_header">Kur bus laikomi jūsų pokalbiai</string>
|
||||
<string name="ftue_auth_create_account_password_entry_footer">Turi būti ne mažiau kaip 8 simboliai</string>
|
||||
<string name="ftue_auth_create_account_username_entry_footer">Kiti gali jus atrasti %s</string>
|
||||
<string name="ftue_auth_create_account_title">Sukurti savo paskyrą</string>
|
||||
<string name="ftue_account_created_subtitle">Jūsų paskyra %s buvo sukurta</string>
|
||||
<string name="ftue_account_created_congratulations_title">Sveikiname!</string>
|
||||
<string name="ftue_account_created_take_me_home">Pasiimkite mane namo</string>
|
||||
<string name="ftue_account_created_personalize">Suasmeninti profilį</string>
|
||||
<string name="ftue_auth_use_case_connect_to_server">Prisijungti prie serverio</string>
|
||||
<string name="ftue_auth_use_case_join_existing_server">Norite prisijungti prie esamo serverio\?</string>
|
||||
<string name="ftue_auth_use_case_skip_partial">Praleisti šį klausimą</string>
|
||||
<string name="ftue_auth_welcome_back_title">Sveiki sugrįžę!</string>
|
||||
<string name="ftue_auth_terms_subtitle">Perskaitykite %s sąlygas ir taisykles</string>
|
||||
<string name="ftue_auth_terms_title">Serverio politikos</string>
|
||||
<string name="ftue_auth_reset_password_breaker_title">Patikrinkite savo el. paštą.</string>
|
||||
<string name="ftue_auth_choose_server_ems_cta">Susisiekite su mumis</string>
|
||||
<string name="ftue_auth_choose_server_ems_subtitle">Element Matrix Services (EMS) yra tvirta ir patikima talpinimo paslauga, skirta greitam ir saugiam bendravimui realiuoju laiku. Sužinokite, kaip <a href=\"${ftue_ems_url}\">element.io/ems</a></string>
|
||||
<string name="ftue_auth_choose_server_ems_title">Norite turėti savo serverį\?</string>
|
||||
<string name="ftue_auth_reset_password_email_subtitle">%s atsiųs jums patvirtinimo nuorodą</string>
|
||||
<string name="ftue_auth_choose_server_entry_hint">Serverio URL</string>
|
||||
<string name="ftue_auth_phone_confirmation_entry_title">Patvirtinimo kodas</string>
|
||||
<string name="ftue_auth_choose_server_sign_in_subtitle">Koks yra jūsų serverio adresas\?</string>
|
||||
<string name="ftue_auth_choose_server_subtitle">Koks yra jūsų serverio adresas\? Tai tarsi visų jūsų duomenų namai</string>
|
||||
<string name="ftue_auth_choose_server_title">Pasirinkti savo serverį</string>
|
||||
<string name="ftue_auth_phone_entry_title">Telefono numeris</string>
|
||||
<string name="ftue_auth_phone_subtitle">%s turi patvirtinti jūsų paskyrą</string>
|
||||
<string name="ftue_auth_phone_title">Įveskite savo telefono numerį</string>
|
||||
<string name="ftue_auth_email_entry_title">El. paštas</string>
|
||||
<string name="ftue_auth_email_subtitle">%s turi patvirtinti jūsų paskyrą</string>
|
||||
<string name="ftue_auth_email_title">Įveskite savo el. paštą</string>
|
||||
<string name="ftue_auth_new_password_subtitle">Įsitikinkite, kad jis yra 8 ar daugiau simbolių.</string>
|
||||
<string name="ftue_auth_new_password_title">Pasirinkite naują slaptažodį</string>
|
||||
<string name="ftue_auth_new_password_entry_title">Naujas slaptažodis</string>
|
||||
<string name="settings_notifications_targets">Pranešimų tikslai</string>
|
||||
<string name="settings_olm_version">olm versija</string>
|
||||
<string name="settings_integrations_summary">Naudokite integracijų tvarkyklę botams, tiltams, valdikliams ir lipdukų paketams tvarkyti.
|
||||
\nIntegracijų valdytojai gauna konfigūracijos duomenis ir gali keisti valdiklius, siųsti kvietimus į kambarius ir nustatyti galios lygius jūsų vardu.</string>
|
||||
<string name="settings_contacts_phonebook_country">Telefonų knygos šalis</string>
|
||||
<string name="settings_contact">Vietiniai kontaktai</string>
|
||||
<string name="settings_pin_missed_notifications">Prisegti kambarius su praleistais pranešimais</string>
|
||||
<string name="settings_home_display">Pradžios ekranas</string>
|
||||
<string name="settings_inline_url_preview_summary">Nuorodų peržiūra pokalbyje, kai jūsų namų serveris palaiko šią funkciją.</string>
|
||||
<string name="settings_inline_url_preview">Įterptinė URL peržiūra</string>
|
||||
<string name="settings_pin_unread_messages">Prisegti kambarius su neperskaitytomis žinutėmis</string>
|
||||
<string name="settings_integrations">Integracijos</string>
|
||||
<string name="settings_cryptography_manage_keys">Kriptografijos raktų valdymas</string>
|
||||
<string name="settings_cryptography">Kriptografija</string>
|
||||
<string name="analytics_opt_in_content">Padėkite mums nustatyti problemas ir tobulinti ${app_name} dalydamiesi anoniminiais naudojimo duomenimis. Kad suprastume, kaip žmonės naudojasi keliais įrenginiais, sugeneruosime atsitiktinį identifikatorių, kuriuo dalijasi jūsų įrenginiai.
|
||||
\n
|
||||
\nGalite perskaityti visas mūsų sąlygas %s.</string>
|
||||
<string name="settings_presence_user_always_appears_offline_summary">Jei įjungta, kitiems naudotojams visada atrodysite neprisijungę, net jei naudosite programą.</string>
|
||||
<string name="settings_presence_user_always_appears_offline">Neprisijungęs režimas</string>
|
||||
<string name="settings_presence">Esamumas</string>
|
||||
<string name="media_saving_period_forever">Amžinai</string>
|
||||
<string name="media_saving_period_1_month">1 mėnuo</string>
|
||||
<string name="media_saving_period_1_week">1 savaitė</string>
|
||||
<string name="media_saving_period_3_days">3 dienos</string>
|
||||
<string name="settings_play_shutter_sound">Groti užrakto garsą</string>
|
||||
<string name="media_source_choose">Pasirinkti</string>
|
||||
<string name="settings_default_media_source">Numatytasis medijos šaltinis</string>
|
||||
<string name="compression_opt_list_choose">Pasirinkti</string>
|
||||
<string name="settings_default_compression">Numatytasis glaudinimas</string>
|
||||
<string name="settings_media">Medija</string>
|
||||
<string name="settings_select_country">Pasirinkti šalį</string>
|
||||
<string name="settings_discovery_consent_notice_on">Sutikote siųsti el. paštus ir telefono numerius į šį tapatybės serverį, kad būtų galima atrasti kitus naudotojus iš jūsų kontaktų.</string>
|
||||
<string name="identity_server_consent_dialog_title_2">Siųsti el. paštus ir telefono numerius į %s</string>
|
||||
<string name="settings_discovery_consent_action_give_consent">Duoti sutikimą</string>
|
||||
<string name="settings_discovery_consent_action_revoke">Atšaukti mano sutikimą</string>
|
||||
<string name="settings_discovery_consent_notice_off_2">Jūsų kontaktai yra privatūs. Kad galėtume rasti naudotojus iš jūsų kontaktų, mums reikia jūsų leidimo siųsti kontaktinę informaciją į jūsų tapatybės serverį.</string>
|
||||
<string name="settings_discovery_confirm_mail_not_clicked">Išsiuntėme jums patvirtinimo el. laišką į %s, pirmiausia patikrinkite savo el. paštą ir spustelėkite patvirtinimo nuorodą</string>
|
||||
<string name="settings_discovery_confirm_mail">Išsiuntėme jums patvirtinimo el. laišką į %s, patikrinkite savo el. paštą ir spustelėkite patvirtinimo nuorodą</string>
|
||||
<string name="settings_discovery_msisdn_title">Atrandami telefono numeriai</string>
|
||||
<string name="settings_discovery_disconnect_identity_server_info">Atsijungimas nuo tapatybės serverio reiškia, kad jūsų negalės rasti kiti naudotojai ir negalėsite pakviesti kitų el. paštu ar telefonu.</string>
|
||||
<string name="settings_discovery_no_msisdn">Pridėjus telefono numerį bus rodomos atradimo parinktys.</string>
|
||||
<string name="settings_discovery_no_mails">Pridėjus el. pašto adresą, bus rodomos atradimo parinktys.</string>
|
||||
<string name="settings_discovery_emails_title">Atrandami el. pašto adresai</string>
|
||||
<string name="settings_discovery_identity_server_info_none">Šiuo metu nenaudojate tapatybės serverio. Norėdami atrasti esamus žinomus kontaktus ir būti jų atrandami, sukonfigūruokite jį žemiau.</string>
|
||||
<string name="settings_discovery_identity_server_info">Šiuo metu naudojate %1$s, esamų kontaktų atradimui, kuriuos pažįstate, ir kad būtumėte jų atrandami.</string>
|
||||
<string name="settings_discovery_no_policy_provided">Tapatybės serveris nepateikė jokios politikos</string>
|
||||
<string name="beta">BETA</string>
|
||||
<string name="send_feedback_threads_info">Temos yra nebaigtas darbas, kuriame bus naujų, įdomių būsimų funkcijų, pvz., patobulinti pranešimai. Norėtume išgirsti jūsų atsiliepimus!</string>
|
||||
<string name="send_feedback_threads_title">Temų Beta atsiliepimai</string>
|
||||
<string name="settings_emails_and_phone_numbers_summary">Tvarkyti el. paštus ir telefono numerius susietus su jūsų Matrix paskyra</string>
|
||||
<string name="settings_emails_and_phone_numbers_title">El. paštai ir telefono numeriai</string>
|
||||
<string name="settings_unignore_user">Rodyti visas žinutes nuo %s\?</string>
|
||||
<string name="settings_password_updated">Jūsų slaptažodis buvo atnaujintas</string>
|
||||
<string name="settings_fail_to_update_password_invalid_current_password">Slaptažodis nėra tinkamas</string>
|
||||
<string name="settings_fail_to_update_password">Nepavyko atnaujinti slaptažodžio</string>
|
||||
<string name="settings_new_password">Naujas slaptažodis</string>
|
||||
<string name="settings_old_password">Dabartinis slaptažodis</string>
|
||||
<string name="settings_change_password">Keisti slaptažodį</string>
|
||||
<string name="settings_password">Slaptažodis</string>
|
||||
<string name="account_phone_number_already_used_error">Šis telefono numeris jau naudojamas.</string>
|
||||
<string name="account_email_already_used_error">Šis el. pašto adresas jau naudojamas.</string>
|
||||
<string name="account_email_validation_message">Patikrinkite savo el. paštą ir spustelėkite jame esančią nuorodą. Kai tai padarysite, spauskite tęsti.</string>
|
||||
<string name="analytics_opt_in_title">Padėkite tobulinti ${app_name}</string>
|
||||
<string name="settings_opt_in_of_analytics_summary">${app_name} renka anoniminę analizę, kad galėtume tobulinti programą.</string>
|
||||
<string name="settings_select_language">Pasirinkti kalbą</string>
|
||||
<string name="settings_interface_language">Kalba</string>
|
||||
<string name="settings_opt_in_of_analytics">Siųsti analitikos duomenis</string>
|
||||
<string name="settings_analytics">Analitika</string>
|
||||
<string name="settings_discovery_manage">Tvarkyti atradimo nustatymus.</string>
|
||||
<string name="settings_discovery_category">Atradimas</string>
|
||||
<string name="settings_deactivate_my_account">Deaktyvuoti mano paskyrą</string>
|
||||
<string name="reset_secure_backup_warning">Tai pakeis dabartinį raktą arba frazę.</string>
|
||||
<string name="reset_secure_backup_title">Generuoti naują saugumo raktą arba nustatyti naują esamos atsarginės kopijos saugumo frazę.</string>
|
||||
<string name="settings_secure_backup_section_info">Apsisaugokite nuo užšifruotų žinučių ir duomenų praradimo, darydami šifravimo raktų atsargines kopijas serveryje.</string>
|
||||
<string name="settings_secure_backup_enter_to_setup">Nustatyti šiame įrenginyje</string>
|
||||
<string name="settings_secure_backup_reset">Nustatyti saugią atsarginę kopiją iš naujo</string>
|
||||
<string name="settings_secure_backup_setup">Nustatyti saugią atsarginę kopiją</string>
|
||||
<string name="settings_secure_backup_section_title">Saugi atsarginė kopija</string>
|
||||
<string name="settings_show_emoji_keyboard_summary">Pridėti žinutės kompozitoriuje mygtuką jaustukų klaviatūros atidarymui</string>
|
||||
<string name="settings_show_emoji_keyboard">Rodyti jaustukų klaviatūrą</string>
|
||||
<string name="settings_send_message_with_enter_summary">Programinės klaviatūros mygtukas Enter išsiųs žinutę, o ne pridės eilutės pertrauką</string>
|
||||
<string name="settings_send_message_with_enter">Siųsti žinutę su enter</string>
|
||||
<string name="settings_preview_media_before_sending">Medijos peržiūra prieš siunčiant</string>
|
||||
<string name="settings_vibrate_on_mention">Vibruoti paminėjus naudotoją</string>
|
||||
<string name="settings_show_avatar_display_name_changes_messages_summary">Įtraukiami avataro ir rodomojo vardo keitimai.</string>
|
||||
<string name="settings_show_avatar_display_name_changes_messages">Rodyti paskyrų įvykius</string>
|
||||
<string name="settings_show_join_leave_messages_summary">Kvietimai, pašalinimai ir užblokavimai nėra įtakojami.</string>
|
||||
<string name="settings_show_join_leave_messages">Rodyti prisijungimo ir išėjimo įvykius</string>
|
||||
<string name="settings_autoplay_animated_images_summary">Paleisti animuotus paveikslėlius laiko juostoje, kai tik jie tampa matomi</string>
|
||||
<string name="settings_autoplay_animated_images_title">Automatinis animuotų vaizdų paleidimas</string>
|
||||
<string name="settings_chat_effects_description">Naudokite /confetti komandą arba siųskite žinutę, kurioje yra ❄️ arba 🎉</string>
|
||||
<string name="settings_chat_effects_title">Rodyti pokalbio efektus</string>
|
||||
<string name="settings_show_read_receipts_summary">Spustelėkite ant skaitymo kvitų, kad pamatytumėte išsamų sąrašą.</string>
|
||||
<string name="settings_show_read_receipts">Rodyti skaitymo kvitus</string>
|
||||
<string name="settings_12_24_timestamps">Rodyti laiko žymas 12 valandų formatu</string>
|
||||
<string name="settings_contacts_app_permission">Leidimas naudotis kontaktais</string>
|
||||
<string name="settings_always_show_timestamps">Rodyti laiko žymas visoms žinutėms</string>
|
||||
<string name="settings_send_markdown_summary">Prieš siunčiant žinutes, suformatuoti jas naudojant Markdown sintakse. Tai leidžia atlikti išplėstinį formatavimą, pavyzdžiui, naudoti žvaigždutes tekstui kursyvu rodyti.</string>
|
||||
<string name="settings_send_markdown">Markdown formatavimas</string>
|
||||
<string name="settings_user_interface">Naudotojo sąsaja</string>
|
||||
<string name="settings_send_typing_notifs_summary">Leisti kitiems naudotojams žinoti, kad rašote.</string>
|
||||
<string name="disabled_integration_dialog_content">Norėdami tai daryti, Įjunkite \'Leisti integracijas\' nustatymuose.</string>
|
||||
<string name="settings_send_typing_notifs">Siųsti pranešimus apie rašymą</string>
|
||||
<string name="legals_third_party_notices">Trečiųjų šalių bibliotekos</string>
|
||||
<string name="legals_identity_server_title">Jūsų tapatybės serverio politika</string>
|
||||
<string name="legals_home_server_title">Jūsų namų serverio politika</string>
|
||||
<string name="legals_application_title">${app_name} politika</string>
|
||||
<string name="settings_integration_manager">Integracijų tvarkyklė</string>
|
||||
<string name="settings_integration_allow">Leisti integracijas</string>
|
||||
<string name="settings_identity_server">Tapatybės serveris</string>
|
||||
<string name="settings_home_server">Namų serveris</string>
|
||||
<string name="settings_logged_in">Prisijungta kaip</string>
|
||||
<string name="devices_delete_dialog_title">Autentifikacija</string>
|
||||
<string name="devices_details_last_seen_format">%1$s @ %2$s</string>
|
||||
<string name="devices_details_last_seen_title">Paskutinį kartą matytas</string>
|
||||
<string name="devices_details_device_name">Atnaujinti viešą pavadinimą</string>
|
||||
<string name="devices_details_name_title">Viešas pavadinimas</string>
|
||||
<string name="settings_deactivate_account_section">Deaktyvuoti paskyrą</string>
|
||||
<string name="devices_details_id_title">ID</string>
|
||||
<string name="analytics_opt_in_list_item_3">Tai galite bet kada išjungti nustatymuose</string>
|
||||
<string name="analytics_opt_in_list_item_2">Mes <b>nesidalijame</b> informacija su trečiosiomis šalimis</string>
|
||||
<string name="analytics_opt_in_list_item_1">Mes <b>neįrašome ir neprofiliuojame</b> jokių paskyros duomenų</string>
|
||||
<string name="analytics_opt_in_content_link">čia</string>
|
||||
<string name="disabled_integration_dialog_title">Integracijos yra išjungtos</string>
|
||||
<string name="legals_no_policy_provided">Šis serveris nepateikia jokios politikos.</string>
|
||||
<string name="notice_call_candidates_by_you">Išsiuntėte duomenis skambučiui nustatyti.</string>
|
||||
<string name="settings_discovery_hide_identity_server_policy_title">Slėpti tapatybės serverio politiką</string>
|
||||
<string name="settings_discovery_show_identity_server_policy_title">Rodyti tapatybės serverio politiką</string>
|
||||
<string name="downloaded_file">Failas %1$s buvo atsiųstas!</string>
|
||||
<string name="send_file_step_compressing_video">Suglaudinamas vaizdo įrašas %d%%</string>
|
||||
<string name="send_file_step_compressing_image">Suglaudinamas paveikslėlis…</string>
|
||||
<string name="send_file_step_sending_file">Siunčiamas failas (%1$s / %2$s)</string>
|
||||
<string name="send_file_step_sending_thumbnail">Siunčiama miniatiūra (%1$s / %2$s)</string>
|
||||
<string name="send_file_step_encrypting_file">Užšifruojamas failas…</string>
|
||||
<string name="send_file_step_encrypting_thumbnail">Užšifruojama miniatiūra…</string>
|
||||
<string name="room_filtering_footer_title">Nerandate to, ko ieškote\?</string>
|
||||
<string name="send_file_step_idle">Laukiama…</string>
|
||||
<string name="room_filtering_filter_hint">Filtruoti pokalbius…</string>
|
||||
<string name="no_message_edits_found">Redagavimų nerasta</string>
|
||||
<string name="message_edits">Žinutės redagavimai</string>
|
||||
<string name="edited_suffix">(redaguota)</string>
|
||||
<string name="labs_show_unread_notifications_as_tab">Pagrindiniame ekrane pridėti specialų skirtuką neperskaitytiems pranešimams.</string>
|
||||
<string name="labs_swipe_to_reply_in_timeline">Įjungti perbraukimą, kad atsakytumėte laiko juostoje</string>
|
||||
<string name="search_hint_room_name">Ieškoti pavadinimo</string>
|
||||
<string name="user_directory_search_hint_2">Ieškoti pagal vardą, ID arba paštą</string>
|
||||
<string name="room_directory_search_hint">Pavadinimas arba ID (#pavyzdys:matrix.org)</string>
|
||||
<string name="room_filtering_footer_open_room_directory">Peržiūrėti kambarių katalogą</string>
|
||||
<string name="room_filtering_footer_create_new_direct_message">Siųsti naują tiesioginę žinutę</string>
|
||||
<string name="bottom_action_people_x">Tiesioginės žinutės</string>
|
||||
<string name="room_filtering_footer_create_new_room">Sukurti naują kambarį</string>
|
||||
<string name="direct_room_user_list_suggestions_title">Pasiūlymai</string>
|
||||
<string name="direct_room_user_list_known_title">Žinomi naudotojai</string>
|
||||
<string name="creating_direct_room">Kuriamas kambarys…</string>
|
||||
<string name="qr_code">QR kodas</string>
|
||||
<string name="add_by_qr_code">Pridėti pagal QR kodą</string>
|
||||
<string name="terms_description_for_identity_server">Būkite atrandami kitų</string>
|
||||
<string name="terms_of_service">Paslaugų teikimo sąlygos</string>
|
||||
<string name="message_view_edit_history">Peržiūrėti redagavimo istoriją</string>
|
||||
<string name="link_copied_to_clipboard">Nuoroda nukopijuota į iškarpinę</string>
|
||||
<string name="open_discovery_settings">Atidaryti atradimo nustatymus</string>
|
||||
<string name="settings_labs_show_complete_history_in_encrypted_room">Rodyti pilną istoriją užšifruotuose kambariuose</string>
|
||||
<string name="settings_labs_show_hidden_events_in_timeline">Rodyti paslėptus įvykius laiko juostoje</string>
|
||||
<string name="settings_troubleshoot_test_endpoint_registration_quick_fix">Iš naujo nustatyti pranešimų metodą</string>
|
||||
<string name="settings_troubleshoot_test_token_registration_quick_fix">Registruoti žetoną</string>
|
||||
<string name="preference_system_settings">Sistemos nustatymai</string>
|
||||
<string name="settings_push_gateway_no_pushers">Nėra registruotų tiesioginių pranešimų vartų</string>
|
||||
<string name="settings_push_rules_no_rules">Nėra nustatytų tiesioginų pranešimų taisyklių</string>
|
||||
<string name="settings_push_rules">Tiesioginių pranešimų taisyklės</string>
|
||||
<string name="settings_security_and_privacy">Saugumas & Privatumas</string>
|
||||
<string name="settings_preferences">Nuostatos</string>
|
||||
<string name="settings_general_title">Bendrieji</string>
|
||||
<string name="settings_other_third_party_notices">Kiti trečiųjų šalių pranešimai</string>
|
||||
<string name="settings_sdk_version">Matrix SDK versija</string>
|
||||
<string name="create_room_settings_section">Kambario nustatymai</string>
|
||||
<string name="settings_show_redacted_summary">Rodyti pašalintų žinučių vietoje užrašą</string>
|
||||
<string name="settings_show_redacted">Rodyti pašalintas žinutes</string>
|
||||
<string name="keys_backup_settings_delete_confirm_message">ištrinti iš serverio atsarginę šifravimo raktų kopiją\? Atkūrimo rakto nebegalėsite naudoti užšifruotai žinučių istorijai skaityti.</string>
|
||||
<string name="keys_backup_settings_delete_confirm_title">Ištrinti atsarginę kopiją</string>
|
||||
<string name="keys_backup_settings_checking_backup_state">Tikrinama atsarginės kopijos būsena</string>
|
||||
<string name="keys_backup_settings_deleting_backup">Atsarginė kopija ištrinama…</string>
|
||||
<string name="keys_backup_settings_untrusted_backup">Jei norite naudoti atsarginę raktų kopiją šioje sesijoje, dabar atkurkite naudodami slaptažodį arba atkūrimo raktą.</string>
|
||||
<string name="keys_backup_settings_invalid_signature_from_unverified_device">Atsarginė kopija turi netinkamą parašą iš nepatvirtintos sesijos %s</string>
|
||||
<string name="keys_backup_settings_invalid_signature_from_verified_device">Atsarginė kopija turi netinkamą parašą iš patvirtintos sesijos %s</string>
|
||||
<string name="settings_labs_native_camera_summary">Įjungti sistemos kamerą, vietoj pritaikytos kameros ekrano.</string>
|
||||
<string name="settings_labs_native_camera">Naudoti vietinę kamerą</string>
|
||||
<string name="encryption_information_verify_device_warning">Patvirtinkite palygindami šiuos duomenis su naudotojo nustatymais kitoje sesijoje:</string>
|
||||
<string name="encryption_settings_manage_message_recovery_summary">Tvarkyti raktų atsarginę kopiją</string>
|
||||
<string name="settings_theme">Tema</string>
|
||||
<string name="room_settings_unset_main_address">Atšaukti nustatymą pagrindiniu adresu</string>
|
||||
<string name="room_settings_set_main_address">Nustatyti kaip pagrindinį adresą</string>
|
||||
<string name="room_settings_labs_warning_message">Tai eksperimentinės funkcijos, kurios gali netikėtai sugesti. Naudokite atsargiai.</string>
|
||||
<string name="room_settings_labs_pref_title">Laboratorijos</string>
|
||||
<string name="room_settings_room_version_title">Kambario versija</string>
|
||||
<string name="room_settings_room_internal_id">Šio kambario vidinis ID</string>
|
||||
<string name="room_settings_category_advanced_title">Išplėstiniai</string>
|
||||
<plurals name="room_settings_banned_users_count">
|
||||
<item quantity="one">%d užblokuotas naudotojas</item>
|
||||
<item quantity="few">%d užblokuoti naudotojai</item>
|
||||
<item quantity="other">%d užblokuotų naudotojų</item>
|
||||
</plurals>
|
||||
<string name="room_settings_banned_users_title">Užblokuoti naudotojai</string>
|
||||
<string name="room_settings_room_access_public_description">Bet kas gali rasti kambarį ir prisijungti</string>
|
||||
<string name="room_settings_room_access_public_title">Viešas</string>
|
||||
<string name="room_settings_room_access_private_description">Tik pakviesti žmonės gali rasti ir prisijungti</string>
|
||||
<string name="room_settings_room_access_private_invite_only_title">Privatus (tik su kvietimais)</string>
|
||||
<string name="room_settings_room_access_private_title">Privatus</string>
|
||||
<string name="room_settings_room_access_entry_unknown">Nežinomas prieigos nustatymas (%s)</string>
|
||||
<string name="room_settings_room_access_entry_knock">Bet kas gali pasibelsti į kambarį, o nariai gali priimti arba atmesti</string>
|
||||
<string name="room_settings_read_history_entry_members_only_joined">Tik nariai (nuo jų prisijungimo)</string>
|
||||
<string name="room_settings_read_history_entry_members_only_invited">Tik nariai (nuo jų pakvietimo)</string>
|
||||
<string name="room_settings_read_history_entry_members_only_option_time_shared">Tik nariai (nuo šios parinkties pasirinkimo momento)</string>
|
||||
<string name="room_settings_read_history_entry_anyone">Bet kas</string>
|
||||
<string name="room_settings_guest_access_title">Leisti svečiams prisijungti</string>
|
||||
<string name="room_settings_room_notifications_notify_me">Pranešti man apie</string>
|
||||
<string name="room_settings_alias_subtitle">Peržiūrėti ir tvarkyti šio kambario adresus bei jo matomumą kambarių kataloge.</string>
|
||||
<string name="room_settings_access_rules_pref_dialog_title">Kas gali prieiti\?</string>
|
||||
<string name="room_settings_room_read_history_dialog_subtitle">Pakeitimai, kas gali skaityti istoriją, bus taikomi tik būsimoms šio kambario žinutėms. Esamos istorijos matomumas išliks nepakitęs.</string>
|
||||
<string name="room_settings_room_read_history_rules_pref_dialog_title">Kas gali skaityti istoriją\?</string>
|
||||
<string name="room_settings_room_read_history_rules_pref_title">Kambario istorijos skaitomumas</string>
|
||||
<string name="room_settings_room_notifications_account_settings">Paskyros nustatymai</string>
|
||||
<string name="room_settings_topic">Tema</string>
|
||||
<string name="room_settings_alias_title">Kambario adresai</string>
|
||||
<string name="room_settings_room_access_title">Kambario prieiga</string>
|
||||
<string name="room_settings_room_notifications_manage_notifications">Pranešimus galite tvarkyti %1$s.</string>
|
||||
<string name="room_settings_room_notifications_encryption_notice">Atkreipkite dėmesį, kad pranešimai apie paminėjimus ir raktinius žodžius užšifruotuose kambariuose, nėra prieinami mobiliuosiuose įrenginiuose.</string>
|
||||
<string name="settings_notification_configuration">Pranešimų konfigūracija</string>
|
||||
<string name="settings_security_prevent_screenshots_summary">Įjungus šį nustatymą, prie visų veiksmų pridedamas žymuo FLAG_SECURE. Iš naujo paleiskite programą, kad pakeitimas įsigaliotų.</string>
|
||||
<string name="settings_security_prevent_screenshots_title">Neleisti programos ekrano nuotraukų</string>
|
||||
<string name="auth_biometric_key_invalidated_message">Biometrinis autentifikavimas buvo išjungtas, nes neseniai buvo pridėtas naujas biometrinis autentifikavimo metodas. Jį vėl galite įjungti nustatymuose.</string>
|
||||
<string name="settings_security_pin_code_use_biometrics_error">Nepavyko įjungti biometrinio autentifikavimo.</string>
|
||||
<string name="a11y_open_settings">Atidaryti nustatymus</string>
|
||||
<string name="labs_enable_deferred_dm_summary">Sukurti AŽ tik po pirmos žinutės</string>
|
||||
<string name="labs_enable_deferred_dm_title">Įjungti atidėtas AŽ</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Supaprastintas Element su nebūtinais skirtukais</string>
|
||||
<string name="labs_enable_new_app_layout_title">Įjungti naują išdėstymą</string>
|
||||
</resources>
|
|
@ -732,7 +732,7 @@
|
|||
<string name="settings_send_message_with_enter">Wysyłaj wiadomości za pomocą klawisza enter</string>
|
||||
<string name="settings_send_message_with_enter_summary">Przycisk enter na klawiaturze programowej wyśle wiadomość zamiast wprowadzania łamanania linii</string>
|
||||
<string name="settings_discovery_category">Ustawienia wyszukiwania</string>
|
||||
<string name="settings_discovery_manage">Ustal jak inni mogą odnaleść twoje konto.</string>
|
||||
<string name="settings_discovery_manage">Ustal jak inni mogą odnaleźć twoje konto.</string>
|
||||
<string name="settings_media">Media</string>
|
||||
<string name="settings_default_media_source">Domyślne źródło mediów</string>
|
||||
<string name="encryption_message_recovery">Odzyskiwanie zaszyfrowanych wiadomości</string>
|
||||
|
@ -2732,4 +2732,16 @@
|
|||
<string name="timeline_error_room_not_found">Niestety, ten pokój nie został znaleziony.
|
||||
\nSpróbuj ponownie później.%s</string>
|
||||
<string name="invites_title">Zaproszenia</string>
|
||||
</resources>
|
||||
<string name="home_empty_no_unreads_message">Tutaj pojawią się rozmowy które nie zostały jeszcze odczytane.</string>
|
||||
<string name="home_empty_no_unreads_title">Brak nowych wiadomości.</string>
|
||||
<string name="change_space">Zmień przestrzeń</string>
|
||||
<string name="labs_enable_deferred_dm_summary">Stwórz prywatny chat dopiero po wysłaniu pierwszej wiadomości</string>
|
||||
<string name="labs_enable_deferred_dm_title">Włącz odroczone prywatne chaty</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Odświeżony wygląd Element z opcjonalnymi kartami</string>
|
||||
<string name="labs_enable_new_app_layout_title">Włącz nowy układ</string>
|
||||
<string name="home_empty_space_no_rooms_message">Przestrzenie to nowa metoda na grupowanie razem wielu pokoi i osób. Dodaj tu już istniejący pokój lub stwórz nowy używając przycisku w prawym-dolnym rogu.</string>
|
||||
<string name="space_list_empty_message">Jest to nowa metoda na grupowanie razem wielu pokoi i osób.</string>
|
||||
<string name="home_empty_space_no_rooms_title">%s
|
||||
\nwygląda nieco pusto.</string>
|
||||
<string name="space_list_empty_title">Brak przestrzeni.</string>
|
||||
</resources>
|
|
@ -473,7 +473,7 @@
|
|||
<string name="start_video_call_prompt_msg">Você tem certeza que você quer começar uma chamada de vídeo\?</string>
|
||||
<string name="option_take_photo">Tirar foto</string>
|
||||
<string name="option_take_video">Tirar vídeo</string>
|
||||
<string name="call">Chamar</string>
|
||||
<string name="call">Chamada</string>
|
||||
<string name="room_participants_ban_prompt_msg">Banir usuária(o) vai removê-la(o) desta sala e preveni-la(o) de se juntar de novo.</string>
|
||||
<string name="room_settings_all_messages">Todas as mensagens</string>
|
||||
<string name="room_settings_add_homescreen_shortcut">Adicionar a tela de Início</string>
|
||||
|
@ -2460,7 +2460,7 @@
|
|||
<string name="threads_beta_enable_notice_message">Threads ajudam manThreads ajudam manter suas conversas em-tópico e fáceis de rastrear. %sHabilitar threads vai refrescar o app. Isto pode tomar mais tempo para algumas contas.</string>
|
||||
<string name="threads_beta_enable_notice_title">Threads Beta</string>
|
||||
<string name="action_learn_more">Saber mais</string>
|
||||
<string name="action_try_it_out">Teste aí</string>
|
||||
<string name="action_try_it_out">Experimentar</string>
|
||||
<string name="screen_sharing_notification_description">Compartilhamento de tela está em progresso</string>
|
||||
<string name="screen_sharing_notification_title">${app_name} Compartilhamento de Tela</string>
|
||||
<string name="call_stop_screen_sharing">Parar compartilhamento de tela</string>
|
||||
|
@ -2633,15 +2633,15 @@
|
|||
<string name="timeline_error_room_not_found">Desculpe, esta sala não tem sido encontrada.
|
||||
\nPor favor retente mais tarde.%s</string>
|
||||
<string name="invites_title">Convites</string>
|
||||
<string name="onboarding_new_app_layout_button_try">Teste aí</string>
|
||||
<string name="onboarding_new_app_layout_button_try">Experimentar</string>
|
||||
<string name="onboarding_new_app_layout_feedback_message">Toque na direita topo para ver a opção para feedback.</string>
|
||||
<string name="onboarding_new_app_layout_feedback_title">Dar Feedback</string>
|
||||
<string name="onboarding_new_app_layout_spaces_message">Acessar seus Espaços (direito fundo) mais rápido e fácio que jamais antes.</string>
|
||||
<string name="onboarding_new_app_layout_spaces_title">Acessar Espaços</string>
|
||||
<string name="onboarding_new_app_layout_feedback_title">Dê Feedback</string>
|
||||
<string name="onboarding_new_app_layout_spaces_message">Acesse seus Espaços (direita fundo) mais rápido e fácil que jamais antes.</string>
|
||||
<string name="onboarding_new_app_layout_spaces_title">Acesse Espaços</string>
|
||||
<string name="onboarding_new_app_layout_welcome_message">Para simplificar seu ${app_name}, abas são agora opcionais. Gerencie-as usando o menu direito topo.</string>
|
||||
<string name="onboarding_new_app_layout_welcome_title">Boas-vindas a uma nova visão!</string>
|
||||
<string name="home_empty_no_unreads_message">Isto é onde suas mensagens não-lidas vão aparecer, quando você tiver algumas.</string>
|
||||
<string name="home_empty_no_unreads_title">Nada a reportar.</string>
|
||||
<string name="home_empty_no_unreads_title">Nada para reportar.</string>
|
||||
<string name="home_empty_no_rooms_message">O app de chat seguro tudo-em-um para equipes, amigas(os) e organizações. Crie um chat, ou junte-se a uma sala existe, para começar.</string>
|
||||
<string name="home_empty_no_rooms_title">Boas-vindas a ${app_name},
|
||||
\n%s.</string>
|
||||
|
@ -2658,8 +2658,8 @@
|
|||
<string name="device_manager_header_section_security_recommendations_description">Melhore a segurança de sua conta ao seguir estas recomendações.</string>
|
||||
<string name="device_manager_header_section_security_recommendations_title">Recomendações de segurança</string>
|
||||
<plurals name="device_manager_other_sessions_description_inactive">
|
||||
<item quantity="one">Inativa(o) por %1$d+ dia (%2$s)</item>
|
||||
<item quantity="other">Inativa(o) por %1$d+ dias (%2$s)</item>
|
||||
<item quantity="one">Inativa por %1$d+ dia (%2$s)</item>
|
||||
<item quantity="other">Inativa por %1$d+ dias (%2$s)</item>
|
||||
</plurals>
|
||||
<string name="invites_empty_message">Isto é onde suas novas requisições e convites vão estar.</string>
|
||||
<string name="invites_empty_title">Nada novo.</string>
|
||||
|
@ -2668,4 +2668,46 @@
|
|||
<string name="a11y_collapse_space_children">Colapsar filhos de %s</string>
|
||||
<string name="a11y_expand_space_children">Expandir filhos de %s</string>
|
||||
<string name="change_space">Mudar Espaço</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">Não-verificadas</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">Verificadas</string>
|
||||
<string name="device_manager_filter_option_unverified">Não-verificadas</string>
|
||||
<string name="device_manager_filter_option_verified">Verificadas</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">Inativas</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="one">Inativas por %1$d dia ou mais longo</item>
|
||||
<item quantity="other">Inativas por %1$d dias ou mais longo</item>
|
||||
</plurals>
|
||||
<string name="device_manager_filter_option_inactive">Inativas</string>
|
||||
<string name="device_manager_session_details_device_ip_address">Endereço de IP</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Última atividade</string>
|
||||
<string name="device_manager_session_details_session_name">Nome de sessão</string>
|
||||
<string name="device_manager_session_details_description">Informação de aplicativo, dispositivo, e atividade.</string>
|
||||
<string name="device_manager_session_details_title">Detalhes de sessão</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Limpar Filtro</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">Nenhuma sessão inativa encontrada.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">Nenhuma sessão não-verificada encontrada.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">Nenhuma sessão verificada encontrada.</string>
|
||||
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
|
||||
<item quantity="one">Considere fazer signout de sessões antigas (%1$d dia ou mais) que você não usa mais.</item>
|
||||
<item quantity="other">Considere fazer signout de sessões antigas (%1$d dias ou mais) que você não usa mais.</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">Verifique suas sessões para mensageria segura melhorada ou faça signout daquelas que você não reconhece ou usa mais.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">Para melhor segurança, faça signout de qualquer sessão que você não reconhece ou usa mais.</string>
|
||||
<string name="a11y_device_manager_filter">Filtrar</string>
|
||||
<string name="device_manager_filter_option_verified_description">Pronta para mensageria segura</string>
|
||||
<string name="device_manager_filter_option_unverified_description">Não pronta para mensageria segura</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Todas as sessões</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Filtrar</string>
|
||||
<string name="device_manager_session_last_activity">Última atividade %1$s</string>
|
||||
<string name="device_manager_device_title">Dispositivo</string>
|
||||
<string name="device_manager_session_title">Sessão</string>
|
||||
<string name="device_manager_current_session_title">Sessão Atual</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">Verifique ou faça signout desta sessão para melhor segurança e fiabilidade.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">Verifique sua sessão atual para mensageria segura melhorada.</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">Esta sessão está pronta para mensageria segura.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_verified">Sua sessão atual está pronta para mensageria segura.</string>
|
||||
<string name="labs_enable_deferred_dm_summary">Criar DM somente em primeira mensagem</string>
|
||||
<string name="labs_enable_deferred_dm_title">Habilitar DMs diferidas</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Um Element simplificado com abas opcionais</string>
|
||||
<string name="labs_enable_new_app_layout_title">Habilitar novo layout</string>
|
||||
</resources>
|
||||
|
|
|
@ -273,7 +273,7 @@
|
|||
<string name="home_filter_placeholder_home">Фильтр названий комнат</string>
|
||||
<string name="invitations_header">Приглашения</string>
|
||||
<string name="low_priority_header">Маловажные</string>
|
||||
<string name="direct_chats_header">Беседы</string>
|
||||
<string name="direct_chats_header">Личные сообщения</string>
|
||||
<string name="matrix_only_filter">Только Matrix контакты</string>
|
||||
<string name="no_result_placeholder">Нет результатов</string>
|
||||
<string name="rooms_header">Комнаты</string>
|
||||
|
@ -452,7 +452,7 @@
|
|||
<string name="encryption_information_verify_device_warning">Чтобы убедиться, что этой сессии можно доверять, обратитесь к ее владельцу, используя другие способы (например, лично или по телефону), и спросите, соответствует ли ключ, который он видит в настройках для этой сессии:</string>
|
||||
<string name="encryption_information_verify_device_warning2">Если они не совпадают, безопасность вашего общения может быть поставлена под угрозу.</string>
|
||||
<string name="select_room_directory">Выбор каталога комнат</string>
|
||||
<string name="directory_server_placeholder">Имя сервера</string>
|
||||
<string name="directory_server_placeholder">Название сервера</string>
|
||||
<string name="directory_server_all_rooms_on_server">Все комнаты на сервере %s</string>
|
||||
<string name="directory_server_native_rooms">Все местные комнаты %s</string>
|
||||
<string name="settings_user_interface">Пользовательский интерфейс</string>
|
||||
|
@ -907,16 +907,16 @@
|
|||
<string name="event_redacted_by_user_reason">Событие удалено пользователем</string>
|
||||
<string name="event_redacted_by_admin_reason">Событие модерируется администратором комнаты</string>
|
||||
<string name="malformed_message">Некорректное событие, не могу отобразить</string>
|
||||
<string name="create_new_room">Создать новую комнату</string>
|
||||
<string name="create_new_room">Создать комнату</string>
|
||||
<string name="error_no_network">Нет сети. Пожалуйста, проверьте подключение к Интернету.</string>
|
||||
<string name="action_change">Изменить</string>
|
||||
<string name="change_room_directory_network">Изменить сеть</string>
|
||||
<string name="change_room_directory_network">Изменить сервер</string>
|
||||
<string name="please_wait">Пожалуйста, подождите…</string>
|
||||
<string name="room_preview_no_preview">Эту комнату нельзя предварительно просмотреть</string>
|
||||
<string name="fab_menu_create_room">Комнаты</string>
|
||||
<string name="fab_menu_create_chat">Личные сообщения</string>
|
||||
<string name="create_room_action_create">СОЗДАТЬ</string>
|
||||
<string name="create_room_name_hint">Имя</string>
|
||||
<string name="create_room_name_hint">Название</string>
|
||||
<string name="create_room_public_title">Публичная</string>
|
||||
<string name="create_room_public_description">Каждый сможет присоединиться к этой комнате</string>
|
||||
<string name="keys_backup_unable_to_get_trust_info">Произошла ошибка при получении информации о доверии</string>
|
||||
|
@ -927,7 +927,7 @@
|
|||
<string name="navigate_to_room_when_already_in_the_room">Вы уже просмотрели эту комнату!</string>
|
||||
<string name="settings_general_title">Общее</string>
|
||||
<string name="settings_preferences">Предпочтения</string>
|
||||
<string name="settings_security_and_privacy">Безопасность и конфиденциальность</string>
|
||||
<string name="settings_security_and_privacy">Безопасность</string>
|
||||
<string name="settings_push_rules">Правила push-уведомлений</string>
|
||||
<string name="push_gateway_item_app_id">app_id:</string>
|
||||
<string name="push_gateway_item_push_key">push_key:</string>
|
||||
|
@ -956,11 +956,11 @@
|
|||
<string name="no_message_edits_found">Изменения не найдены</string>
|
||||
<string name="room_filtering_filter_hint">Отфильтровать беседы…</string>
|
||||
<string name="room_filtering_footer_title">Не можете найти нужное\?</string>
|
||||
<string name="room_filtering_footer_create_new_room">Создать новую комнату</string>
|
||||
<string name="room_filtering_footer_create_new_direct_message">Отправить новое личное сообщение</string>
|
||||
<string name="room_filtering_footer_open_room_directory">Просмотр каталога комнат</string>
|
||||
<string name="room_directory_search_hint">Имя или ID (#example:matrix.org)</string>
|
||||
<string name="labs_swipe_to_reply_in_timeline">Включить жест смахивания для ответа в ленте сообщений</string>
|
||||
<string name="room_filtering_footer_create_new_room">Создать комнату</string>
|
||||
<string name="room_filtering_footer_create_new_direct_message">Отправить личное сообщение</string>
|
||||
<string name="room_filtering_footer_open_room_directory">Каталог комнат</string>
|
||||
<string name="room_directory_search_hint">Название или ID (#example:matrix.org)</string>
|
||||
<string name="labs_swipe_to_reply_in_timeline">Жест смахивания для ответа в ленте сообщений</string>
|
||||
<string name="link_copied_to_clipboard">Ссылка скопирована в буфер обмена</string>
|
||||
<string name="creating_direct_room">Создаем комнату…</string>
|
||||
<string name="message_view_edit_history">История изменений</string>
|
||||
|
@ -1039,7 +1039,7 @@
|
|||
<string name="room_widget_webview_access_camera">Использовать камеру</string>
|
||||
<string name="room_widget_webview_access_microphone">Использовать микрофон</string>
|
||||
<string name="room_widget_webview_read_protected_media">Получать доступ к медиа, защищённым DRM</string>
|
||||
<string name="a11y_create_room">Создать новую комнату</string>
|
||||
<string name="a11y_create_room">Создать комнату</string>
|
||||
<string name="attachment_type_file">Файл</string>
|
||||
<string name="attachment_type_camera">Камера</string>
|
||||
<string name="attachment_type_gallery">Галерея</string>
|
||||
|
@ -1390,7 +1390,7 @@
|
|||
<string name="verification_request_you_accepted">Вы приняли</string>
|
||||
<string name="verification_sent">Подтверждение отправлено</string>
|
||||
<string name="verification_request">Запрос на подтверждение</string>
|
||||
<string name="verification_verify_device">Подтвердите эту сессию</string>
|
||||
<string name="verification_verify_device">Заверьте эту сессию</string>
|
||||
<string name="verification_scan_notice">Сканируйте код с помощью устройства другого пользователя, чтобы безопасно проверить друг друга</string>
|
||||
<string name="verification_scan_their_code">Сканировать их код</string>
|
||||
<string name="verification_scan_emoji_title">Невозможно сканировать</string>
|
||||
|
@ -1450,7 +1450,7 @@
|
|||
<item quantity="few">%d сессии активны</item>
|
||||
<item quantity="many">%d сессий активно</item>
|
||||
</plurals>
|
||||
<string name="crosssigning_verify_this_session">Подтвердите это устройство</string>
|
||||
<string name="crosssigning_verify_this_session">Заверьте эту сессию</string>
|
||||
<string name="verification_open_other_to_verify">Используйте существующую сессию для подтверждения этой, предоставив ей доступ к зашифрованным сообщениям.</string>
|
||||
<string name="settings_dev_tools">Инструменты для разработчиков</string>
|
||||
<string name="settings_account_data">Данные учётной записи</string>
|
||||
|
@ -1473,13 +1473,13 @@
|
|||
<string name="bottom_sheet_setup_secure_backup_title">Безопасное резервное копирование</string>
|
||||
<string name="settings_active_sessions_verified_device_desc">Эта сессия является надежной для безопасного обмена сообщениями, поскольку вы подтвердили ее:</string>
|
||||
<string name="settings_active_sessions_unverified_device_desc">Подтвердите эту сессию, чтобы пометить её доверенной и предоставить ей доступ к зашифрованным сообщениям. Если вы не входили в эту сессию, ваша учетная запись может быть скомпрометирована:</string>
|
||||
<string name="verification_profile_verify">Проверить</string>
|
||||
<string name="verification_profile_verified">Проверено</string>
|
||||
<string name="verification_profile_verify">Заверить</string>
|
||||
<string name="verification_profile_verified">Заверено</string>
|
||||
<string name="verification_profile_warning">Предупреждение</string>
|
||||
<string name="room_member_profile_failed_to_get_devices">Не удалось получить список сессий</string>
|
||||
<string name="room_member_profile_sessions_section_title">Сессии</string>
|
||||
<string name="trusted">Доверенные</string>
|
||||
<string name="not_trusted">Недоверенные</string>
|
||||
<string name="trusted">Заверенная</string>
|
||||
<string name="not_trusted">Незаверенная</string>
|
||||
<string name="verification_profile_device_verified_because">Эта сессия является доверенной для безопасного обмена сообщениями, так как %1$s (%2$s) проверил(а) его:</string>
|
||||
<string name="verification_profile_device_new_signing">%1$s (%2$s) вошел(ла), используя новую сессию:</string>
|
||||
<string name="verification_profile_device_untrust_info">Пока этот пользователь не доверяет этой сессии, сообщения, отправленные в обе стороны, помечаются предупреждениями. Кроме того, вы можете подтвердить сессию вручную.</string>
|
||||
|
@ -2037,7 +2037,7 @@
|
|||
<string name="space_leave_prompt_msg_only_you">Вы здесь единственный человек. Если вы уйдёте, никто не сможет присоединиться в будущем, включая вас.</string>
|
||||
<string name="leave_space">Покинуть</string>
|
||||
<string name="space_add_child_title">Добавить комнаты</string>
|
||||
<string name="space_explore_activity_title">Исследуйте комнаты</string>
|
||||
<string name="space_explore_activity_title">Обзор комнат</string>
|
||||
<plurals name="space_people_you_know">
|
||||
<item quantity="one">%d человек, которого вы знаете, уже присоединился</item>
|
||||
<item quantity="few">%d людей, которых вы знаете, уже присоединились</item>
|
||||
|
@ -2116,7 +2116,7 @@
|
|||
<string name="verification_scan_self_notice">Сканируйте код с помощью другого устройства или переключитесь и сканируйте с помощью этого устройства</string>
|
||||
<string name="create_space_alias_hint">Адрес пространства</string>
|
||||
<string name="error_file_too_big_simple">Файл слишком большой для загрузки.</string>
|
||||
<string name="search_hint_room_name">Поиск по имени</string>
|
||||
<string name="search_hint_room_name">Поиск по названию</string>
|
||||
<string name="send_file_step_compressing_video">Сжатие видео %d%%</string>
|
||||
<string name="send_file_step_compressing_image">Сжатие изображения…</string>
|
||||
<string name="give_feedback">Оставить отзыв</string>
|
||||
|
@ -2374,11 +2374,11 @@
|
|||
<string name="attachment_type_poll">Опрос</string>
|
||||
<string name="create_poll_title">Создать опрос</string>
|
||||
<string name="restart_the_application_to_apply_changes">Перезапустите приложение, чтобы изменения вступили в силу.</string>
|
||||
<string name="labs_enable_latex_maths">Включить математику LaTeX</string>
|
||||
<string name="labs_enable_latex_maths">Математика LaTeX</string>
|
||||
<string name="labs_auto_report_uisi_desc">Ваша система будет автоматически отправлять журналы при возникновении ошибки невозможности расшифровки</string>
|
||||
<string name="labs_auto_report_uisi">Автоматически сообщать об ошибках расшифровки.</string>
|
||||
<string name="encryption_misconfigured">Шифрование неправильно настроено</string>
|
||||
<string name="room_member_override_nick_color">Изменить цвет отображаемого имени</string>
|
||||
<string name="room_member_override_nick_color">Изменить цвет имени</string>
|
||||
<string name="room_profile_section_restore_security">Восстановить шифрование</string>
|
||||
<string name="contact_admin_to_restore_encryption">Обратитесь к администратору, чтобы восстановить шифрование до рабочего состояния.</string>
|
||||
<string name="encryption_has_been_misconfigured">Шифрование настроено неправильно.</string>
|
||||
|
@ -2435,7 +2435,7 @@
|
|||
<string name="location_timeline_failed_to_load_map">Не удалось загрузить карту</string>
|
||||
<string name="a11y_static_map_image">Карта</string>
|
||||
<string name="labs_enable_thread_messages_desc">Примечание: приложение будет перезапущено</string>
|
||||
<string name="labs_enable_thread_messages">Включить обсуждения сообщений</string>
|
||||
<string name="labs_enable_thread_messages">Обсуждения сообщений</string>
|
||||
<string name="ftue_auth_use_case_connect_to_server">Подключиться к серверу</string>
|
||||
<string name="ftue_auth_use_case_join_existing_server">Хотите присоединиться к существующему серверу\?</string>
|
||||
<string name="ftue_auth_use_case_skip_partial">Пропустить вопрос</string>
|
||||
|
@ -2507,7 +2507,7 @@
|
|||
<string name="live_location_sharing_notification_description">Идёт отправка местоположения</string>
|
||||
<string name="location_share_live_remaining_time">Осталось %1$s</string>
|
||||
<string name="live_location_bottom_sheet_last_updated_at">Обновлено %1$s назад</string>
|
||||
<string name="labs_enable_live_location">Включить функцию \"Поделиться трансляцией местоположения\"</string>
|
||||
<string name="labs_enable_live_location">Функция \"Поделиться трансляцией местоположения\"</string>
|
||||
<string name="live_location_sharing_notification_title">${app_name} Трансляция местоположения</string>
|
||||
<string name="location_share_live_until">Транслировать до %1$s</string>
|
||||
<string name="location_share_live_ended">Трансляция завершена</string>
|
||||
|
@ -2665,8 +2665,8 @@
|
|||
<string name="settings_sessions_list">Сессии</string>
|
||||
<string name="a11y_create_message">Создать беседу или комнату</string>
|
||||
<string name="device_manager_settings_active_sessions_show_all">Показать все сессии (V2, в разработке)</string>
|
||||
<string name="room_list_filter_people">Люди</string>
|
||||
<string name="home_layout_preferences">Настройки макета</string>
|
||||
<string name="room_list_filter_people">ЛС</string>
|
||||
<string name="home_layout_preferences">Настройки вида</string>
|
||||
<string name="home_layout_preferences_filters">Фильтры</string>
|
||||
<string name="home_layout_preferences_recents">Недавние</string>
|
||||
<string name="room_list_filter_favourites">Избранные</string>
|
||||
|
@ -2676,7 +2676,7 @@
|
|||
<string name="home_layout_preferences_sort_activity">Активности</string>
|
||||
<string name="home_layout_preferences_sort_by">Сортировать по</string>
|
||||
<string name="explore_rooms">Обзор комнат</string>
|
||||
<string name="start_chat">Начать беседу</string>
|
||||
<string name="start_chat">Отправить ЛС</string>
|
||||
<string name="create_room">Создать комнату</string>
|
||||
<string name="device_manager_other_sessions_view_all">Посмотреть все (%1$d)</string>
|
||||
<string name="device_manager_header_section_security_recommendations_description">Повысьте безопасность учётной записи, следуя этим рекомендациям.</string>
|
||||
|
@ -2693,4 +2693,53 @@
|
|||
<string name="home_empty_no_rooms_title">Добро пожаловать в ${app_name},
|
||||
\n%s.</string>
|
||||
<string name="onboarding_new_app_layout_feedback_title">Оставить отзыв</string>
|
||||
</resources>
|
||||
<string name="device_manager_session_details_session_name">Название сессии</string>
|
||||
<string name="device_manager_filter_option_inactive">Неактивные</string>
|
||||
<string name="device_manager_session_details_device_ip_address">IP-адрес</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Последняя активность</string>
|
||||
<string name="device_manager_session_details_title">Сведения о сессии</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">Для лучшей безопасности выйдите из всех сессий, которые более не признаёте или не используете.</string>
|
||||
<string name="device_manager_filter_option_verified">Заверенные</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Все сессии</string>
|
||||
<string name="device_manager_session_last_activity">Последняя активность %1$s</string>
|
||||
<string name="device_manager_device_title">Устройство</string>
|
||||
<string name="device_manager_session_title">Сессия</string>
|
||||
<string name="device_manager_current_session_title">Текущая сессия</string>
|
||||
<string name="device_manager_verify_session">Заверить сессию</string>
|
||||
<string name="device_manager_view_details">Подробности</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">Эта сессия готова к безопасному обмену сообщениями.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_verified">Текущая сессия готова к безопасному обмену сообщениями.</string>
|
||||
<string name="a11y_device_manager_device_type_web">Веб-браузер</string>
|
||||
<string name="space_list_empty_message">Пространства — это новый способ организации комнат и людей. Создайте пространство, чтобы начать.</string>
|
||||
<string name="labs_enable_new_app_layout_title">Новый вид</string>
|
||||
<string name="home_empty_no_unreads_title">Нечего отображать.</string>
|
||||
<string name="home_empty_no_unreads_message">Здесь будут отображаться непрочитанные сообщения, когда таковые будут.</string>
|
||||
<string name="font_size_use_system">Присущий системе</string>
|
||||
<string name="change_space">Смена пространства</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Упрощённый Element с дополнительными вкладками</string>
|
||||
<string name="onboarding_new_app_layout_welcome_title">Добро пожаловать в новый вид!</string>
|
||||
<string name="home_empty_space_no_rooms_title">%s
|
||||
\nвыглядит слегка пустовато.</string>
|
||||
<string name="onboarding_new_app_layout_button_try">Попробовать</string>
|
||||
<string name="device_manager_session_details_description">Сведения о приложении, устройстве и активности.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">Подтвердите текущую сессию для более безопасного обмена сообщениями.</string>
|
||||
<string name="space_list_empty_title">Пока нет пространств.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">Подтвердите свои сессии для более безопасного обмена сообщениями или выйдите из тех, которые более не признаёте или не используете.</string>
|
||||
<string name="device_manager_unverified_sessions_description">Подтвердите или выйдите из незаверенных сессий.</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">Подтвердите или выйдите из этой сессии для лучшей безопасности и надёжности.</string>
|
||||
<string name="invites_empty_title">Ничего нового.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">Заверенных сессий не обнаружено.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">Незаверенных сессий не обнаружено.</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">Неактивных сессий не обнаружено.</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Очистить фильтр</string>
|
||||
<string name="device_manager_filter_option_unverified_description">Не готовы к безопасному обмену сообщениями</string>
|
||||
<string name="device_manager_filter_option_verified_description">Готовы к безопасному обмену сообщениями</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="one">Неактивны %1$d день или дольше</item>
|
||||
<item quantity="few">Неактивны %1$d дня или дольше</item>
|
||||
<item quantity="many">Неактивны %1$d дней или дольше</item>
|
||||
<item quantity="other">Неактивны %1$d дней или дольше</item>
|
||||
</plurals>
|
||||
<string name="device_manager_filter_option_unverified">Незаверенные</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Фильтр</string>
|
||||
</resources>
|
|
@ -2720,4 +2720,48 @@
|
|||
<string name="a11y_collapse_space_children">Zbaliť %s podpriestory</string>
|
||||
<string name="a11y_expand_space_children">Rozbaliť %s podpriestory</string>
|
||||
<string name="change_space">Zmeniť priestor</string>
|
||||
</resources>
|
||||
<string name="device_manager_session_details_device_ip_address">IP adresa</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Posledná aktivita</string>
|
||||
<string name="device_manager_session_details_session_name">Názov relácie</string>
|
||||
<string name="device_manager_session_details_description">Informácie o aplikácii, zariadení a činnosti.</string>
|
||||
<string name="device_manager_session_details_title">Podrobnosti o relácii</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Zrušiť filter</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">Nenašli sa žiadne neaktívne relácie.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">Nenašli sa žiadne neoverené relácie.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">Nenašli sa žiadne overené relácie.</string>
|
||||
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
|
||||
<item quantity="one">Zvážte odhlásenie zo starých relácií (%1$d deň alebo viac), ktoré už nepoužívate.</item>
|
||||
<item quantity="few">Zvážte odhlásenie zo starých relácií (%1$d dni alebo viac), ktoré už nepoužívate.</item>
|
||||
<item quantity="other">Zvážte odhlásenie zo starých relácií (%1$d dní alebo viac), ktoré už nepoužívate.</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">Neaktívne</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">Overte si relácie pre vylepšené bezpečné zasielanie správ alebo sa odhláste z tých, ktoré už nepoznáte alebo nepoužívate.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">Neoverené</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">V záujme čo najlepšieho zabezpečenia sa odhláste z každej relácie, ktorú už nepoznáte alebo nepoužívate.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">Overené</string>
|
||||
<string name="a11y_device_manager_filter">Filter</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="one">Neaktívny už %1$d deň alebo dlhšie</item>
|
||||
<item quantity="few">Neaktívny už %1$d dni alebo dlhšie</item>
|
||||
<item quantity="other">Neaktívny už %1$d dní alebo dlhšie</item>
|
||||
</plurals>
|
||||
<string name="device_manager_filter_option_inactive">Neaktívne</string>
|
||||
<string name="device_manager_filter_option_unverified_description">Nie je pripravené na bezpečné zasielanie správ</string>
|
||||
<string name="device_manager_filter_option_unverified">Neoverené</string>
|
||||
<string name="device_manager_filter_option_verified_description">Pripravené na bezpečné zasielanie správ</string>
|
||||
<string name="device_manager_filter_option_verified">Overené</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Všetky relácie</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Filter</string>
|
||||
<string name="device_manager_session_last_activity">Posledná aktivita %1$s</string>
|
||||
<string name="device_manager_device_title">Zariadenie</string>
|
||||
<string name="device_manager_session_title">Relácia</string>
|
||||
<string name="device_manager_current_session_title">Aktuálna relácia</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">V záujme čo najvyššej bezpečnosti a spoľahlivosti túto reláciu overte alebo sa z nej odhláste.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">Overte svoju aktuálnu reláciu pre vylepšené bezpečné zasielanie správ.</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">Táto relácia je pripravená na bezpečné zasielanie správ.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_verified">Vaša aktuálna relácia je pripravená na bezpečné zasielanie správ.</string>
|
||||
<string name="labs_enable_deferred_dm_summary">Vytvoriť priamu správu len pri prvej správe</string>
|
||||
<string name="labs_enable_deferred_dm_title">Povoliť odložené priame správy</string>
|
||||
<string name="labs_enable_new_app_layout_summary">Zjednodušený Element s voliteľnými kartami</string>
|
||||
<string name="labs_enable_new_app_layout_title">Zapnúť nové usporiadanie</string>
|
||||
</resources>
|
|
@ -818,7 +818,7 @@
|
|||
<string name="room_widget_permission_avatar_url">URL-адреса аватара</string>
|
||||
<string name="room_widget_permission_display_name">Ваше показуване ім\'я</string>
|
||||
<string name="room_widget_revoke_access">Скасувати доступ для мене</string>
|
||||
<string name="room_widget_open_in_browser">Відкрити в переглядачі</string>
|
||||
<string name="room_widget_open_in_browser">Відкрити у браузері</string>
|
||||
<string name="room_widget_reload">Перезавантажити віджет</string>
|
||||
<string name="room_widget_failed_to_load">Не вдалося завантажити віджет.
|
||||
\n%s</string>
|
||||
|
@ -1196,7 +1196,7 @@
|
|||
<string name="use_file">Використати файл</string>
|
||||
<string name="verification_cannot_access_other_session">Скористатись парольною фразою відновлення або ключем</string>
|
||||
<string name="keys_backup_restore_with_passphrase">Скористатись відновлювальними парольною фразою або ключем</string>
|
||||
<string name="use_other_session_content_description">Використовуйте найостаннішій ${app_name} на ваших інших пристроях, ${app_name} Web, ${app_name} для комп\'ютерів, ${app_name} iOS, ${app_name} для Android, або будь-який інший, здатний до перехресного підписування, Matrix-клієнт</string>
|
||||
<string name="use_other_session_content_description">Використовуйте найостаннішій ${app_name} на ваших інших пристроях, ${app_name} браузері, ${app_name} комп\'ютерах, ${app_name} iOS, ${app_name} Android, або будь-який інший, здатний до перехресного підписування, Matrix-клієнт</string>
|
||||
<string name="use_latest_app">Використовуйте найостаннішій ${app_name} на ваших інших пристроях:</string>
|
||||
<string name="verification_use_passphrase">Якщо ви не можете доступитись до чинного сеансу</string>
|
||||
<string name="verification_open_other_to_verify">Використайте чинний сеанс, щоб звірити цей сеанс, таким чином надавши йому доступ до зашифрованих повідомлень.</string>
|
||||
|
@ -2021,7 +2021,7 @@
|
|||
<string name="failed_to_access_secure_storage">Не вдалося отримати доступ до безпечного сховища</string>
|
||||
<string name="app_ios_android">${app_name} iOS
|
||||
\n${app_name} Android</string>
|
||||
<string name="app_desktop_web">${app_name} для переглядача
|
||||
<string name="app_desktop_web">${app_name} для браузера
|
||||
\n${app_name} для ПК</string>
|
||||
<string name="error_saving_media_file">Не вдалося зберегти медіафайл</string>
|
||||
<string name="bootstrap_invalid_recovery_key">Це не дійсний ключ відновлення</string>
|
||||
|
@ -2701,7 +2701,7 @@
|
|||
<string name="a11y_open_settings">Відкрити налаштування</string>
|
||||
<string name="all_chats">Усі бесіди</string>
|
||||
<string name="device_manager_settings_active_sessions_show_all">Показати всі сеанси (V2, WIP)</string>
|
||||
<string name="device_manager_sessions_other_description">Для найкращої безпеки перевірте свої сеанси та вийдіть з усіх сеансів, які ви більше не розпізнаєте або не використовуєте.</string>
|
||||
<string name="device_manager_sessions_other_description">Звірте свої сеанси та вийдіть з усіх сеансів, які ви більше не розпізнаєте або не використовуєте для кращої безпеки.</string>
|
||||
<string name="device_manager_sessions_other_title">Інші сеанси</string>
|
||||
<string name="settings_sessions_list">Сеанси</string>
|
||||
<string name="a11y_open_spaces">Відкрити список кімнат</string>
|
||||
|
@ -2772,4 +2772,50 @@
|
|||
<string name="a11y_collapse_space_children">Згорнути дочірні елементи %s</string>
|
||||
<string name="a11y_expand_space_children">Розгорнути дочірні елементи %s</string>
|
||||
<string name="change_space">Змінити простір</string>
|
||||
</resources>
|
||||
<string name="device_manager_session_details_device_ip_address">IP-адреса</string>
|
||||
<string name="device_manager_session_details_session_last_activity">Остання активність</string>
|
||||
<string name="device_manager_session_details_session_name">Назва сеансу</string>
|
||||
<string name="device_manager_session_details_description">Відомості про застосунок, пристрій та діяльність.</string>
|
||||
<string name="device_manager_session_details_title">Подробиці сеансу</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">Очистити фільтр</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">Неактивних сеансів не знайдено.</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">Не знайдено не звірених сеансів.</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">Знайдені не звірені сеанси.</string>
|
||||
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
|
||||
<item quantity="one">Подумайте про те, щоб вийти зі старих сеансів (%1$d день або довше), якими ви більше не користуєтесь.</item>
|
||||
<item quantity="few">Подумайте про те, щоб вийти зі старих сеансів (%1$d дні або довше), якими ви більше не користуєтесь.</item>
|
||||
<item quantity="many">Подумайте про те, щоб вийти зі старих сеансів (%1$d днів або довше), якими ви більше не користуєтесь.</item>
|
||||
<item quantity="other">Подумайте про те, щоб вийти зі старих сеансів (%1$d днів або довше), якими ви більше не користуєтесь.</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">Неактивний</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">Звірте свої сеанси для посилення безпеки обміну повідомленнями або вийдіть з тих, які ви більше не впізнаєте або не використовуєте.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">Не звірений</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">Для кращої безпеки виходьте з будь-якого сеансу, який ви більше не впізнаєте або не використовуєте.</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">Звірений</string>
|
||||
<string name="a11y_device_manager_filter">Фільтрувати</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="one">Неактивний %1$d день або довше</item>
|
||||
<item quantity="few">Неактивний %1$d дні або довше</item>
|
||||
<item quantity="many">Неактивний %1$d днів або довше</item>
|
||||
<item quantity="other">Неактивний %1$d днів або довше</item>
|
||||
</plurals>
|
||||
<string name="device_manager_filter_option_inactive">Неактивний</string>
|
||||
<string name="device_manager_filter_option_unverified_description">Не готовий до безпечного обміну повідомленнями</string>
|
||||
<string name="device_manager_filter_option_unverified">Не звірений</string>
|
||||
<string name="device_manager_filter_option_verified">Звірений</string>
|
||||
<string name="device_manager_filter_option_verified_description">Готовий до безпечного обміну повідомленнями</string>
|
||||
<string name="device_manager_filter_option_all_sessions">Усі сеанси</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">Фільтрувати</string>
|
||||
<string name="device_manager_session_last_activity">Остання активність %1$s</string>
|
||||
<string name="device_manager_device_title">Пристрій</string>
|
||||
<string name="device_manager_session_title">Сеанс</string>
|
||||
<string name="device_manager_current_session_title">Поточний сеанс</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">Звірте або вийдіть з цього сеансу для кращої безпеки та надійності.</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">Звірте свій поточний сеанс для посилення безпеки обміну повідомленнями.</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">Цей сеанс готовий до безпечного обміну повідомленнями.</string>
|
||||
<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_title">Увімкнути новий вигляд</string>
|
||||
</resources>
|
|
@ -2604,4 +2604,24 @@
|
|||
<string name="onboarding_new_app_layout_feedback_title">提供反馈</string>
|
||||
<string name="onboarding_new_app_layout_feedback_message">点击右上角查看反馈选项。</string>
|
||||
<string name="onboarding_new_app_layout_button_try">试用</string>
|
||||
</resources>
|
||||
<string name="space_list_empty_message">空间是对房间和人进行分组的新方式。创建一个空间来开始吧。</string>
|
||||
<string name="labs_enable_new_app_layout_title">启用新布局</string>
|
||||
<string name="device_manager_session_details_device_ip_address">IP地址</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">验证你的会话以增强消息传输的安全性,或从那些你不认识或不再使用的会话登出。</string>
|
||||
<string name="device_manager_filter_option_unverified_description">尚未准备好安全收发消息</string>
|
||||
<string name="device_manager_filter_option_verified_description">准备好安全收发消息</string>
|
||||
<string name="device_manager_filter_option_verified">已验证</string>
|
||||
<string name="device_manager_filter_option_all_sessions">全部会话</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">筛选</string>
|
||||
<string name="device_manager_session_last_activity">上次活跃%1$s</string>
|
||||
<string name="device_manager_device_title">设备</string>
|
||||
<string name="device_manager_session_title">会话</string>
|
||||
<string name="device_manager_current_session_title">当前会话</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">验证你的会话以增强消息传输的安全性。</string>
|
||||
<string name="onboarding_new_app_layout_spaces_message">访问你的空间(右下角)比以前更快、更容易。</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">此会话已准备好安全地收发消息。</string>
|
||||
<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>
|
||||
</resources>
|
|
@ -2616,4 +2616,44 @@
|
|||
<string name="a11y_collapse_space_children">折疊 %s 個子空間</string>
|
||||
<string name="a11y_expand_space_children">展開 %s 個子空間</string>
|
||||
<string name="change_space">變更空間</string>
|
||||
</resources>
|
||||
<string name="device_manager_session_details_device_ip_address">IP 位置</string>
|
||||
<string name="device_manager_session_details_session_last_activity">最後活動</string>
|
||||
<string name="device_manager_session_details_session_name">工作階段名稱</string>
|
||||
<string name="device_manager_session_details_description">應用程式、裝置與活動資訊。</string>
|
||||
<string name="device_manager_session_details_title">工作階段詳細資訊</string>
|
||||
<string name="device_manager_other_sessions_clear_filter">清除過濾條件</string>
|
||||
<string name="device_manager_other_sessions_no_inactive_sessions_found">找不到不活躍的工作階段。</string>
|
||||
<string name="device_manager_other_sessions_no_unverified_sessions_found">找不到未驗證的工作階段。</string>
|
||||
<string name="device_manager_other_sessions_no_verified_sessions_found">找不到已驗證的工作階段。</string>
|
||||
<plurals name="device_manager_filter_option_inactive_description">
|
||||
<item quantity="other">閒置%1$d天或更久</item>
|
||||
</plurals>
|
||||
<plurals name="device_manager_other_sessions_recommendation_description_inactive">
|
||||
<item quantity="other">考慮登出您不再使用的舊工作階段(%1$d天或更久)。</item>
|
||||
</plurals>
|
||||
<string name="device_manager_other_sessions_recommendation_title_inactive">不活躍</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_unverified">驗證您的工作階段以強化安全通訊或從您無法識別或不再使用的工作階段登出。</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_unverified">未驗證</string>
|
||||
<string name="device_manager_other_sessions_recommendation_description_verified">為取得最佳安全性,請從任何您無法識別或不再使用的工作階段登出。</string>
|
||||
<string name="device_manager_other_sessions_recommendation_title_verified">已驗證</string>
|
||||
<string name="a11y_device_manager_filter">過濾</string>
|
||||
<string name="device_manager_filter_option_inactive">不活躍</string>
|
||||
<string name="device_manager_filter_option_unverified_description">尚未準備好安全通訊</string>
|
||||
<string name="device_manager_filter_option_unverified">未驗證</string>
|
||||
<string name="device_manager_filter_option_verified_description">準備好安全通訊</string>
|
||||
<string name="device_manager_filter_option_verified">已驗證</string>
|
||||
<string name="device_manager_filter_option_all_sessions">所有工作階段</string>
|
||||
<string name="device_manager_filter_bottom_sheet_title">過濾</string>
|
||||
<string name="device_manager_session_last_activity">最後活動 %1$s</string>
|
||||
<string name="device_manager_device_title">裝置</string>
|
||||
<string name="device_manager_session_title">工作階段</string>
|
||||
<string name="device_manager_current_session_title">目前的工作階段</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_unverified">驗證或從此工作階段登出以取得最佳安全性與可靠性。</string>
|
||||
<string name="device_manager_verification_status_detail_current_session_unverified">驗證您目前的工作階段以強化安全通訊。</string>
|
||||
<string name="device_manager_verification_status_detail_other_session_verified">此工作階段已準備好安全通訊。</string>
|
||||
<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_title">啟用新佈局</string>
|
||||
</resources>
|
|
@ -284,8 +284,8 @@
|
|||
|
||||
<string name="notice_end_to_end_ok">%1$s turned on end-to-end encryption.</string>
|
||||
<string name="notice_end_to_end_ok_by_you">You turned on end-to-end encryption.</string>
|
||||
<string name="notice_end_to_end_unknown_algorithm">%1$s turned on end-to-end encryption (unrecognised algorithm %2$s).</string>
|
||||
<string name="notice_end_to_end_unknown_algorithm_by_you">You turned on end-to-end encryption (unrecognised algorithm %1$s).</string>
|
||||
<string name="notice_end_to_end_unknown_algorithm">%1$s turned on end-to-end encryption (unrecognized algorithm %2$s).</string>
|
||||
<string name="notice_end_to_end_unknown_algorithm_by_you">You turned on end-to-end encryption (unrecognized algorithm %1$s).</string>
|
||||
|
||||
<!-- theme -->
|
||||
<string name="system_theme">System Default</string>
|
||||
|
@ -406,6 +406,7 @@
|
|||
<string name="action_reset">Reset</string>
|
||||
<string name="action_learn_more">Learn more</string>
|
||||
<string name="action_next">Next</string>
|
||||
<string name="action_got_it">Got it</string>
|
||||
|
||||
<string name="copied_to_clipboard">Copied to clipboard</string>
|
||||
|
||||
|
@ -423,7 +424,7 @@
|
|||
|
||||
<!-- Bottom navigation buttons -->
|
||||
<string name="bottom_action_notification">Notifications</string>
|
||||
<string name="bottom_action_favourites">Favourites</string>
|
||||
<string name="bottom_action_favourites">Favorites</string>
|
||||
<string name="bottom_action_people">People</string>
|
||||
<string name="bottom_action_rooms">Rooms</string>
|
||||
|
||||
|
@ -773,7 +774,7 @@
|
|||
<string name="thread_list_modal_all_threads_subtitle">Shows all threads from current room</string>
|
||||
<string name="thread_list_modal_my_threads_title">My Threads</string>
|
||||
<string name="thread_list_modal_my_threads_subtitle">Shows all threads you’ve participated in</string>
|
||||
<string name="thread_list_empty_title">Keep discussions organised with threads</string>
|
||||
<string name="thread_list_empty_title">Keep discussions organized with threads</string>
|
||||
<string name="thread_list_empty_subtitle">Threads help keep your conversations on-topic and easy to track.</string>
|
||||
<!-- Parameter %s will be replaced by the value of string reply_in_thread -->
|
||||
<string name="thread_list_empty_notice">Tip: Long tap a message and use “%s”.</string>
|
||||
|
@ -818,7 +819,7 @@
|
|||
<string name="settings_app_info_link_summary">Show the application info in the system settings.</string>
|
||||
|
||||
<string name="settings_emails">Email addresses</string>
|
||||
<string name="settings_emails_empty">No email has been added to your account</string>
|
||||
<string name="settings_emails_empty">No email address has been added to your account</string>
|
||||
<string name="settings_phone_numbers">Phone numbers</string>
|
||||
<string name="settings_remove_three_pid_confirmation_content">Remove %s?</string>
|
||||
<string name="error_threepid_auth_failed">Ensure that you have clicked on the link in the email we have sent to you.</string>
|
||||
|
@ -827,7 +828,7 @@
|
|||
<string name="settings_notification_by_event">Notification importance by event</string>
|
||||
|
||||
<string name="settings_notification_emails_category">Email notification</string>
|
||||
<string name="settings_notification_emails_no_emails">To receive email with notification, please associate an email to your Matrix account</string>
|
||||
<string name="settings_notification_emails_no_emails">To receive email with notification, please associate an email address to your Matrix account</string>
|
||||
|
||||
<!-- The variable is a single email address, eg Enable email notifications for example@matrix.org -->
|
||||
<string name="settings_notification_emails_enable_for_email">Enable email notifications for %s</string>
|
||||
|
@ -1093,7 +1094,7 @@
|
|||
<string name="settings_unignore_user">Show all messages from %s?</string>
|
||||
|
||||
<string name="settings_emails_and_phone_numbers_title">Emails and phone numbers</string>
|
||||
<string name="settings_emails_and_phone_numbers_summary">Manage emails and phone numbers linked to your Matrix account</string>
|
||||
<string name="settings_emails_and_phone_numbers_summary">Manage email addresses and phone numbers linked to your Matrix account</string>
|
||||
|
||||
<string name="settings_select_country">Choose a country</string>
|
||||
|
||||
|
@ -1233,6 +1234,9 @@
|
|||
<string name="encryption_import_import">Import</string>
|
||||
<string name="encryption_never_send_to_unverified_devices_title">Encrypt to verified sessions only</string>
|
||||
<string name="encryption_never_send_to_unverified_devices_summary">Never send encrypted messages to unverified sessions from this session.</string>
|
||||
<string name="encryption_never_send_to_unverified_devices_in_room">Never send encrypted messages to unverified sessions in this room.</string>
|
||||
<string name="some_devices_will_not_be_able_to_decrypt">⚠ There are unverified devices in this room, they won’t be able to decrypt messages you send.</string>
|
||||
<string name="room_settings_global_block_unverified_info_text">🔒 You have enabled encrypt to verified sessions only for all rooms in Security Settings.</string>
|
||||
<plurals name="encryption_import_room_keys_success">
|
||||
<item quantity="one">%1$d/%2$d key imported with success.</item>
|
||||
<item quantity="other">%1$d/%2$d keys imported with success.</item>
|
||||
|
@ -1641,7 +1645,7 @@
|
|||
|
||||
<string name="room_list_filter_all">All</string>
|
||||
<string name="room_list_filter_unreads">Unreads</string>
|
||||
<string name="room_list_filter_favourites">Favourites</string>
|
||||
<string name="room_list_filter_favourites">Favorites</string>
|
||||
<string name="room_list_filter_people">People</string>
|
||||
|
||||
<string name="title_activity_emoji_reaction_picker">Reactions</string>
|
||||
|
@ -1800,20 +1804,20 @@
|
|||
<string name="settings_discovery_identity_server_info">You are currently using %1$s to discover and be discoverable by existing contacts you know.</string>
|
||||
<string name="settings_discovery_identity_server_info_none">You are not currently using an identity server. To discover and be discoverable by existing contacts you know, configure one below.</string>
|
||||
<string name="settings_discovery_emails_title">Discoverable email addresses</string>
|
||||
<string name="settings_discovery_no_mails">Discovery options will appear once you have added an email.</string>
|
||||
<string name="settings_discovery_no_mails">Discovery options will appear once you have added an email address.</string>
|
||||
<string name="settings_discovery_no_msisdn">Discovery options will appear once you have added a phone number.</string>
|
||||
<string name="settings_discovery_disconnect_identity_server_info">Disconnecting from your identity server will mean you won’t be discoverable by other users and you won’t be able to invite others by email or phone.</string>
|
||||
<string name="settings_discovery_msisdn_title">Discoverable phone numbers</string>
|
||||
<string name="settings_discovery_confirm_mail">We sent you a confirm email to %s, check your email and click on the confirmation link</string>
|
||||
<string name="settings_discovery_confirm_mail_not_clicked">We sent you a confirm email to %s, please first check your email and click on the confirmation link</string>
|
||||
<string name="settings_discovery_confirm_mail">We sent an email to %s, check your email and click on the confirmation link</string>
|
||||
<string name="settings_discovery_confirm_mail_not_clicked">We sent an email to %s, please first check your email and click on the confirmation link</string>
|
||||
<string name="settings_discovery_consent_title">Send emails and phone numbers</string>
|
||||
<string name="settings_discovery_consent_notice_on">You have given your consent to send emails and phone numbers to this identity server to discover other users from your contacts.</string>
|
||||
<string name="settings_discovery_consent_notice_on">You have given your consent to send email addresses and phone numbers to this identity server to discover other users from your contacts.</string>
|
||||
<string name="settings_discovery_consent_notice_off_2">Your contacts are private. To discover users from your contacts, we need your permission to send contact info to your identity server.</string>
|
||||
<string name="settings_discovery_consent_action_revoke">Revoke my consent</string>
|
||||
<string name="settings_discovery_consent_action_give_consent">Give consent</string>
|
||||
|
||||
<string name="identity_server_consent_dialog_title_2">Send emails and phone numbers to %s</string>
|
||||
<string name="identity_server_consent_dialog_content_3">To discover existing contacts, you need to send contact info (emails and phone numbers) to your identity server. We hash your data before sending for privacy.</string>
|
||||
<string name="identity_server_consent_dialog_title_2">Send email addresses and phone numbers to %s</string>
|
||||
<string name="identity_server_consent_dialog_content_3">To discover existing contacts, you need to send contact info (email addresses and phone numbers) to your identity server. We hash your data before sending for privacy.</string>
|
||||
<string name="identity_server_consent_dialog_content_question">Do you agree to send this info?</string>
|
||||
|
||||
<string name="settings_discovery_enter_identity_server">Enter an identity server URL</string>
|
||||
|
@ -1843,7 +1847,7 @@
|
|||
<string name="a11y_create_menu_close">Close the create room menu…</string>
|
||||
<string name="a11y_create_direct_message">Create a new direct conversation</string>
|
||||
<string name="a11y_create_message">Create a new conversation or room</string>
|
||||
<string name="a11y_create_room">Create a new room</string> <!-- TODO TO BE REMOVED -->
|
||||
<string name="a11y_create_room">Create a new room</string>
|
||||
<string name="a11y_open_spaces">Open spaces list</string>
|
||||
<string name="a11y_close_keys_backup_banner">Close keys backup banner</string>
|
||||
<string name="a11y_jump_to_bottom">Jump to bottom</string>
|
||||
|
@ -1871,6 +1875,7 @@
|
|||
<string name="attachment_type_sticker">"Sticker"</string>
|
||||
<string name="attachment_type_poll">Poll</string>
|
||||
<string name="attachment_type_location">Location</string>
|
||||
<string name="attachment_type_voice_broadcast">Voice Broadcast</string>
|
||||
<string name="rotate_and_crop_screen_title">Rotate and crop</string>
|
||||
<string name="error_handling_incoming_share">Couldn\'t handle share data</string>
|
||||
|
||||
|
@ -2037,7 +2042,7 @@
|
|||
<string name="login_splash_title">It\'s your conversation. Own it.</string>
|
||||
<string name="login_splash_text1">Chat with people directly or in groups</string>
|
||||
<string name="login_splash_text2">Keep conversations private with encryption</string>
|
||||
<string name="login_splash_text3">Extend & customise your experience</string>
|
||||
<string name="login_splash_text3">Extend & customize your experience</string>
|
||||
<string name="login_splash_submit">Get started</string>
|
||||
<string name="login_splash_create_account">Create account</string>
|
||||
<string name="login_splash_already_have_account">I already have an account</string>
|
||||
|
@ -2080,7 +2085,7 @@
|
|||
<string name="login_registration_disabled">Sorry, this server isn’t accepting new accounts.</string>
|
||||
<string name="login_registration_not_supported">The application is not able to create an account on this homeserver.\n\nDo you want to signup using a web client?</string>
|
||||
|
||||
<string name="login_login_with_email_error">This email is not associated to any account.</string>
|
||||
<string name="login_login_with_email_error">This email address is not associated to any account.</string>
|
||||
|
||||
<!-- Replaced string is the homeserver url -->
|
||||
<string name="login_reset_password_on">Reset password on %1$s</string>
|
||||
|
@ -2093,7 +2098,7 @@
|
|||
<string name="login_reset_password_warning_content">Changing your password will reset any end-to-end encryption keys on all of your sessions, making encrypted chat history unreadable. Set up Key Backup or export your room keys from another session before resetting your password.</string>
|
||||
<string name="login_reset_password_warning_submit">Continue</string>
|
||||
|
||||
<string name="login_reset_password_error_not_found">This email is not linked to any account</string>
|
||||
<string name="login_reset_password_error_not_found">This email address is not linked to any account</string>
|
||||
|
||||
<string name="login_reset_password_mail_confirmation_title">Check your inbox</string>
|
||||
<!-- Replaced string is an email -->
|
||||
|
@ -2110,7 +2115,7 @@
|
|||
<string name="login_reset_password_cancel_confirmation_content">Your password is not yet changed.\n\nStop the password change process?</string>
|
||||
|
||||
<string name="login_set_email_title">Set email address</string>
|
||||
<string name="login_set_email_notice">Set an email to recover your account. Later, you can optionally allow people you know to discover you by your email.</string>
|
||||
<string name="login_set_email_notice">Set an email address to recover your account. Later, you can optionally allow people you know to discover you by your this address.</string>
|
||||
<string name="login_set_email_mandatory_hint">Email</string>
|
||||
<string name="login_set_email_optional_hint">Email (optional)</string>
|
||||
<string name="login_set_email_submit">Next</string>
|
||||
|
@ -2261,8 +2266,8 @@
|
|||
<string name="sent_live_location">Shared their live location</string>
|
||||
|
||||
<string name="verification_request_waiting">Waiting…</string>
|
||||
<string name="verification_request_other_cancelled">%s cancelled</string>
|
||||
<string name="verification_request_you_cancelled">You cancelled</string>
|
||||
<string name="verification_request_other_cancelled">%s canceled</string>
|
||||
<string name="verification_request_you_cancelled">You canceled</string>
|
||||
<string name="verification_request_other_accepted">%s accepted</string>
|
||||
<string name="verification_request_you_accepted">You accepted</string>
|
||||
<string name="verification_sent">Verification Sent</string>
|
||||
|
@ -2366,9 +2371,6 @@
|
|||
<string name="settings_active_sessions_manage">Manage Sessions</string>
|
||||
<string name="settings_active_sessions_signout_device">Sign out of this session</string>
|
||||
<string name="settings_sessions_list">Sessions</string>
|
||||
<string name="device_manager_sessions_other_title">Other sessions</string>
|
||||
<string name="device_manager_sessions_other_description">For best security, verify your sessions and sign out from any session that you don’t recognize or use anymore.</string>
|
||||
|
||||
<string name="settings_server_name">Server name</string>
|
||||
<string name="settings_server_version">Server version</string>
|
||||
<string name="settings_server_upload_size_title">Server file upload limit</string>
|
||||
|
@ -2407,7 +2409,7 @@
|
|||
|
||||
<string name="verification_profile_device_verified_because">This session is trusted for secure messaging because %1$s (%2$s) verified it:</string>
|
||||
<string name="verification_profile_device_new_signing">%1$s (%2$s) signed in using a new session:</string>
|
||||
<string name="verification_profile_device_untrust_info">Until this user trusts this session, messages sent to and from it are labelled with warnings. Alternatively, you can manually verify it.</string>
|
||||
<string name="verification_profile_device_untrust_info">Until this user trusts this session, messages sent to and from it are labeled with warnings. Alternatively, you can manually verify it.</string>
|
||||
|
||||
|
||||
<string name="initialize_cross_signing">Initialize CrossSigning</string>
|
||||
|
@ -2476,9 +2478,9 @@
|
|||
One of the following may be compromised:\n\n- Your password\n- Your homeserver\n- This device, or the other device\n- The internet connection either device is using\n\nWe recommend you change your password & recovery key in Settings immediately.
|
||||
</string>
|
||||
|
||||
<string name="verify_cancelled_notice">Verification has been cancelled. You can start verification again.</string>
|
||||
<string name="verify_cancelled_notice">Verification has been canceled. You can start verification again.</string>
|
||||
<string name="verify_invalid_qr_notice">This QR code looks malformed. Please try to verify with another method.</string>
|
||||
<string name="verification_cancelled">Verification Cancelled</string>
|
||||
<string name="verification_cancelled">Verification Canceled</string>
|
||||
|
||||
<string name="recovery_passphrase">Recovery Passphrase</string>
|
||||
<string name="message_key">Message Key</string>
|
||||
|
@ -2579,6 +2581,9 @@
|
|||
<string name="settings_security_prevent_screenshots_title">Prevent screenshots of the application</string>
|
||||
<string name="settings_security_prevent_screenshots_summary">Enabling this setting adds the FLAG_SECURE to all Activities. Restart the application for the change to take effect.</string>
|
||||
|
||||
<string name="settings_security_incognito_keyboard_title">Incognito keyboard</string>
|
||||
<string name="settings_security_incognito_keyboard_summary">"Request that the keyboard should not update any personalized data such as typing history and dictionary based on what you've typed in conversations. Notice that some keyboards may not respect this setting."</string>
|
||||
|
||||
<string name="error_saving_media_file">Could not save media file</string>
|
||||
<string name="change_password_summary">Set a new account password…</string>
|
||||
|
||||
|
@ -2675,7 +2680,7 @@
|
|||
<string name="identity_server_error_no_identity_server_configured">Please first configure an identity server.</string>
|
||||
<string name="identity_server_error_terms_not_signed">Please first accepts the terms of the identity server in the settings.</string>
|
||||
<!-- Note to translators: the translation MUST contain the string "${app_name}", which will be replaced by the application name -->
|
||||
<string name="identity_server_error_bulk_sha256_not_supported">For your privacy, ${app_name} only supports sending hashed user emails and phone number.</string>
|
||||
<string name="identity_server_error_bulk_sha256_not_supported">For your privacy, ${app_name} only supports sending hashed user email addresses and phone numbers.</string>
|
||||
<string name="identity_server_error_binding_error">The association has failed.</string>
|
||||
<string name="identity_server_error_no_current_binding_error">There is no current association with this identifier.</string>
|
||||
<string name="identity_server_user_consent_not_provided">The user consent has not been provided.</string>
|
||||
|
@ -2914,7 +2919,7 @@
|
|||
<string name="create_spaces_who_are_you_working_with">Who are you working with?</string>
|
||||
<string name="create_spaces_make_sure_access">Make sure the right people have access to %s.</string>
|
||||
<string name="create_spaces_just_me">Just me</string>
|
||||
<string name="create_spaces_organise_rooms">A private space to organise your rooms</string>
|
||||
<string name="create_spaces_organise_rooms">A private space to organize your rooms</string>
|
||||
<string name="create_spaces_me_and_teammates">Me and teammates</string>
|
||||
<string name="create_spaces_private_teammates">A private space for you & your teammates</string>
|
||||
<string name="space_type_public">Public</string>
|
||||
|
@ -3072,7 +3077,7 @@
|
|||
<!-- %s will be replaced by an email at runtime -->
|
||||
<string name="this_invite_to_this_space_was_sent">This invite to this space was sent to %s which is not associated with your account</string>
|
||||
|
||||
<string name="link_this_email_settings_link">Link this email with your account</string>
|
||||
<string name="link_this_email_settings_link">Link this email address with your account</string>
|
||||
<!-- %s will be replaced by the value of link_this_email_settings_link and styled as a link -->
|
||||
<string name="link_this_email_with_your_account">%s in Settings to receive invites directly in ${app_name}.</string>
|
||||
|
||||
|
@ -3179,6 +3184,7 @@
|
|||
<string name="tooltip_attachment_contact">Open contacts</string>
|
||||
<string name="tooltip_attachment_poll">Create poll</string>
|
||||
<string name="tooltip_attachment_location">Share location</string>
|
||||
<string name="tooltip_attachment_voice_broadcast">Start a voice broadcast</string>
|
||||
|
||||
<string name="message_reaction_show_less">Show less</string>
|
||||
<plurals name="message_reaction_show_more">
|
||||
|
@ -3229,6 +3235,8 @@
|
|||
|
||||
<!-- Device Manager -->
|
||||
<string name="device_manager_settings_active_sessions_show_all">Show All Sessions (V2, WIP)</string>
|
||||
<string name="device_manager_sessions_other_title">Other sessions</string>
|
||||
<string name="device_manager_sessions_other_description">For best security, verify your sessions and sign out from any session that you don’t recognize or use anymore.</string>
|
||||
<string name="a11y_device_manager_device_type_mobile">Mobile</string>
|
||||
<string name="a11y_device_manager_device_type_web">Web</string>
|
||||
<string name="a11y_device_manager_device_type_desktop">Desktop</string>
|
||||
|
@ -3302,6 +3310,14 @@
|
|||
<string name="device_manager_session_rename_edit_hint">Session name</string>
|
||||
<string name="device_manager_session_rename_description">Custom session names can help you recognize your devices more easily.</string>
|
||||
<string name="device_manager_session_rename_warning">Please be aware that session names are also visible to people you communicate with.</string>
|
||||
<string name="device_manager_learn_more_sessions_inactive_title">Inactive sessions</string>
|
||||
<string name="device_manager_learn_more_sessions_inactive">Inactive sessions are sessions you have not used in some time, but they continue to receive encryption keys.\n\nRemoving inactive sessions improves security and performance, and makes it easier for you to identify if a new session is suspicious.</string>
|
||||
<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>
|
||||
<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>
|
||||
|
||||
<!-- Note to translators: %s will be replaces with selected space name -->
|
||||
<string name="home_empty_space_no_rooms_title">%s\nis looking a little empty.</string>
|
||||
|
|
|
@ -50,9 +50,9 @@
|
|||
|
||||
|
||||
<dimen name="chat_bubble_margin_start">28dp</dimen>
|
||||
<dimen name="chat_bubble_margin_end">62dp</dimen>
|
||||
<dimen name="chat_bubble_fixed_size">300dp</dimen>
|
||||
<dimen name="chat_bubble_corner_radius">12dp</dimen>
|
||||
<dimen name="chat_bubble_margin_end">6dp</dimen>
|
||||
<dimen name="chat_bubble_fixed_size">350sp</dimen>
|
||||
<dimen name="chat_bubble_corner_radius">8dp</dimen>
|
||||
|
||||
<!-- Onboarding -->
|
||||
<item name="ftue_auth_gutter_start_percent" format="float" type="dimen">0.05</item>
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
<declare-styleable name="SessionsListHeaderView">
|
||||
<attr name="sessionsListHeaderTitle" format="string" />
|
||||
<attr name="sessionsListHeaderDescription" format="string" />
|
||||
<attr name="sessionsListHeaderHasLearnMoreLink" format="boolean" />
|
||||
</declare-styleable>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -313,7 +313,7 @@ class CryptoTestHelper(val testHelper: CommonTestHelper) {
|
|||
val incomingRequest = bobVerificationService.getExistingVerificationRequests(alice.myUserId).first {
|
||||
it.requestInfo?.fromDevice == alice.sessionParams.deviceId
|
||||
}
|
||||
bobVerificationService.readyPendingVerification(listOf(VerificationMethod.SAS), alice.myUserId, incomingRequest.transactionId!!)
|
||||
bobVerificationService.readyPendingVerificationInDMs(listOf(VerificationMethod.SAS), alice.myUserId, roomId, incomingRequest.transactionId!!)
|
||||
|
||||
var requestID: String? = null
|
||||
// wait for it to be readied
|
||||
|
@ -365,7 +365,7 @@ class CryptoTestHelper(val testHelper: CommonTestHelper) {
|
|||
}
|
||||
|
||||
testHelper.retryPeriodically {
|
||||
alice.cryptoService().crossSigningService().isUserTrusted(bob.myUserId)
|
||||
bob.cryptoService().crossSigningService().isUserTrusted(alice.myUserId)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,132 @@
|
|||
/*
|
||||
* 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
|
||||
|
||||
import androidx.test.filters.LargeTest
|
||||
import org.amshove.kluent.shouldBe
|
||||
import org.junit.FixMethodOrder
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.junit.runners.JUnit4
|
||||
import org.junit.runners.MethodSorters
|
||||
import org.matrix.android.sdk.InstrumentedTest
|
||||
import org.matrix.android.sdk.api.session.crypto.MXCryptoError
|
||||
import org.matrix.android.sdk.api.session.getRoom
|
||||
import org.matrix.android.sdk.api.session.room.timeline.getLastMessageContent
|
||||
import org.matrix.android.sdk.common.CommonTestHelper.Companion.runCryptoTest
|
||||
|
||||
@RunWith(JUnit4::class)
|
||||
@FixMethodOrder(MethodSorters.JVM)
|
||||
@LargeTest
|
||||
class E2eeConfigTest : InstrumentedTest {
|
||||
|
||||
@Test
|
||||
fun testBlacklistUnverifiedDefault() = runCryptoTest(context()) { cryptoTestHelper, _ ->
|
||||
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoom(true)
|
||||
|
||||
cryptoTestData.firstSession.cryptoService().getGlobalBlacklistUnverifiedDevices() shouldBe false
|
||||
cryptoTestData.firstSession.cryptoService().isRoomBlacklistUnverifiedDevices(cryptoTestData.roomId) shouldBe false
|
||||
cryptoTestData.secondSession!!.cryptoService().getGlobalBlacklistUnverifiedDevices() shouldBe false
|
||||
cryptoTestData.secondSession!!.cryptoService().isRoomBlacklistUnverifiedDevices(cryptoTestData.roomId) shouldBe false
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testCantDecryptIfGlobalUnverified() = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
|
||||
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoom(true)
|
||||
|
||||
cryptoTestData.firstSession.cryptoService().setGlobalBlacklistUnverifiedDevices(true)
|
||||
|
||||
val roomAlicePOV = cryptoTestData.firstSession.roomService().getRoom(cryptoTestData.roomId)!!
|
||||
|
||||
val sentMessage = testHelper.sendTextMessage(roomAlicePOV, "you are blocked", 1).first()
|
||||
|
||||
val roomBobPOV = cryptoTestData.secondSession!!.roomService().getRoom(cryptoTestData.roomId)!!
|
||||
// ensure other received
|
||||
testHelper.retryPeriodically {
|
||||
roomBobPOV.timelineService().getTimelineEvent(sentMessage.eventId) != null
|
||||
}
|
||||
|
||||
cryptoTestHelper.ensureCannotDecrypt(listOf(sentMessage.eventId), cryptoTestData.secondSession!!, cryptoTestData.roomId)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testCanDecryptIfGlobalUnverifiedAndUserTrusted() = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
|
||||
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoom(true)
|
||||
|
||||
cryptoTestHelper.initializeCrossSigning(cryptoTestData.firstSession)
|
||||
cryptoTestHelper.initializeCrossSigning(cryptoTestData.secondSession!!)
|
||||
|
||||
cryptoTestHelper.verifySASCrossSign(cryptoTestData.firstSession, cryptoTestData.secondSession!!, cryptoTestData.roomId)
|
||||
|
||||
cryptoTestData.firstSession.cryptoService().setGlobalBlacklistUnverifiedDevices(true)
|
||||
|
||||
val roomAlicePOV = cryptoTestData.firstSession.roomService().getRoom(cryptoTestData.roomId)!!
|
||||
|
||||
val sentMessage = testHelper.sendTextMessage(roomAlicePOV, "you can read", 1).first()
|
||||
|
||||
val roomBobPOV = cryptoTestData.secondSession!!.roomService().getRoom(cryptoTestData.roomId)!!
|
||||
// ensure other received
|
||||
testHelper.retryPeriodically {
|
||||
roomBobPOV.timelineService().getTimelineEvent(sentMessage.eventId) != null
|
||||
}
|
||||
|
||||
cryptoTestHelper.ensureCanDecrypt(
|
||||
listOf(sentMessage.eventId),
|
||||
cryptoTestData.secondSession!!,
|
||||
cryptoTestData.roomId,
|
||||
listOf(sentMessage.getLastMessageContent()!!.body)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testCantDecryptIfPerRoomUnverified() = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
|
||||
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoom(true)
|
||||
|
||||
val roomAlicePOV = cryptoTestData.firstSession.roomService().getRoom(cryptoTestData.roomId)!!
|
||||
|
||||
val beforeMessage = testHelper.sendTextMessage(roomAlicePOV, "you can read", 1).first()
|
||||
|
||||
val roomBobPOV = cryptoTestData.secondSession!!.roomService().getRoom(cryptoTestData.roomId)!!
|
||||
// ensure other received
|
||||
testHelper.retryPeriodically {
|
||||
roomBobPOV.timelineService().getTimelineEvent(beforeMessage.eventId) != null
|
||||
}
|
||||
|
||||
cryptoTestHelper.ensureCanDecrypt(
|
||||
listOf(beforeMessage.eventId),
|
||||
cryptoTestData.secondSession!!,
|
||||
cryptoTestData.roomId,
|
||||
listOf(beforeMessage.getLastMessageContent()!!.body)
|
||||
)
|
||||
|
||||
cryptoTestData.firstSession.cryptoService().setRoomBlockUnverifiedDevices(cryptoTestData.roomId, true)
|
||||
|
||||
val afterMessage = testHelper.sendTextMessage(roomAlicePOV, "you are blocked", 1).first()
|
||||
|
||||
// ensure received
|
||||
testHelper.retryPeriodically {
|
||||
cryptoTestData.secondSession?.getRoom(cryptoTestData.roomId)?.timelineService()?.getTimelineEvent(afterMessage.eventId)?.root != null
|
||||
}
|
||||
|
||||
cryptoTestHelper.ensureCannotDecrypt(
|
||||
listOf(afterMessage.eventId),
|
||||
cryptoTestData.secondSession!!,
|
||||
cryptoTestData.roomId,
|
||||
MXCryptoError.ErrorType.KEYS_WITHHELD
|
||||
)
|
||||
}
|
||||
}
|
|
@ -33,6 +33,10 @@ import org.junit.runner.RunWith
|
|||
import org.junit.runners.JUnit4
|
||||
import org.junit.runners.MethodSorters
|
||||
import org.matrix.android.sdk.InstrumentedTest
|
||||
import org.matrix.android.sdk.api.auth.UIABaseAuth
|
||||
import org.matrix.android.sdk.api.auth.UserInteractiveAuthInterceptor
|
||||
import org.matrix.android.sdk.api.auth.UserPasswordAuth
|
||||
import org.matrix.android.sdk.api.auth.registration.RegistrationFlowResponse
|
||||
import org.matrix.android.sdk.api.crypto.MXCryptoConfig
|
||||
import org.matrix.android.sdk.api.session.Session
|
||||
import org.matrix.android.sdk.api.session.crypto.MXCryptoError
|
||||
|
@ -61,7 +65,10 @@ import org.matrix.android.sdk.common.CommonTestHelper
|
|||
import org.matrix.android.sdk.common.CommonTestHelper.Companion.runCryptoTest
|
||||
import org.matrix.android.sdk.common.CommonTestHelper.Companion.runSessionTest
|
||||
import org.matrix.android.sdk.common.SessionTestParams
|
||||
import org.matrix.android.sdk.common.TestConstants
|
||||
import org.matrix.android.sdk.mustFail
|
||||
import timber.log.Timber
|
||||
import kotlin.coroutines.Continuation
|
||||
import kotlin.coroutines.resume
|
||||
|
||||
// @Ignore("This test fails with an unhandled exception thrown from a coroutine which terminates the entire test run.")
|
||||
|
@ -607,6 +614,85 @@ class E2eeSanityTests : InstrumentedTest {
|
|||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun test_EncryptionDoesNotHinderVerification() = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
|
||||
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoom()
|
||||
|
||||
val aliceSession = cryptoTestData.firstSession
|
||||
val bobSession = cryptoTestData.secondSession
|
||||
|
||||
val aliceAuthParams = UserPasswordAuth(
|
||||
user = aliceSession.myUserId,
|
||||
password = TestConstants.PASSWORD
|
||||
)
|
||||
val bobAuthParams = UserPasswordAuth(
|
||||
user = bobSession!!.myUserId,
|
||||
password = TestConstants.PASSWORD
|
||||
)
|
||||
|
||||
testHelper.waitForCallback {
|
||||
aliceSession.cryptoService().crossSigningService().initializeCrossSigning(object : UserInteractiveAuthInterceptor {
|
||||
override fun performStage(flowResponse: RegistrationFlowResponse, errCode: String?, promise: Continuation<UIABaseAuth>) {
|
||||
promise.resume(aliceAuthParams)
|
||||
}
|
||||
}, it)
|
||||
}
|
||||
|
||||
testHelper.waitForCallback {
|
||||
bobSession.cryptoService().crossSigningService().initializeCrossSigning(object : UserInteractiveAuthInterceptor {
|
||||
override fun performStage(flowResponse: RegistrationFlowResponse, errCode: String?, promise: Continuation<UIABaseAuth>) {
|
||||
promise.resume(bobAuthParams)
|
||||
}
|
||||
}, it)
|
||||
}
|
||||
|
||||
// add a second session for bob but not cross signed
|
||||
|
||||
val secondBobSession = testHelper.logIntoAccount(bobSession.myUserId, SessionTestParams(true))
|
||||
|
||||
aliceSession.cryptoService().setGlobalBlacklistUnverifiedDevices(true)
|
||||
|
||||
// The two bob session should not be able to decrypt any message
|
||||
|
||||
val roomFromAlicePOV = aliceSession.getRoom(cryptoTestData.roomId)!!
|
||||
Timber.v("#TEST: Send a first message that should be withheld")
|
||||
val sentEvent = sendMessageInRoom(testHelper, roomFromAlicePOV, "Hello")!!
|
||||
|
||||
// wait for it to be synced back the other side
|
||||
Timber.v("#TEST: Wait for message to be synced back")
|
||||
testHelper.retryPeriodically {
|
||||
bobSession.roomService().getRoom(cryptoTestData.roomId)?.timelineService()?.getTimelineEvent(sentEvent) != null
|
||||
}
|
||||
|
||||
testHelper.retryPeriodically {
|
||||
secondBobSession.roomService().getRoom(cryptoTestData.roomId)?.timelineService()?.getTimelineEvent(sentEvent) != null
|
||||
}
|
||||
|
||||
// bob should not be able to decrypt
|
||||
Timber.v("#TEST: Ensure cannot be decrytped")
|
||||
cryptoTestHelper.ensureCannotDecrypt(listOf(sentEvent), bobSession, cryptoTestData.roomId)
|
||||
cryptoTestHelper.ensureCannotDecrypt(listOf(sentEvent), secondBobSession, cryptoTestData.roomId)
|
||||
|
||||
// let's try to verify, it should work even if bob devices are untrusted
|
||||
Timber.v("#TEST: Do the verification")
|
||||
cryptoTestHelper.verifySASCrossSign(aliceSession, bobSession, cryptoTestData.roomId)
|
||||
|
||||
Timber.v("#TEST: Send a second message, outbound session should have rotated and only bob 1rst session should decrypt")
|
||||
|
||||
val secondEvent = sendMessageInRoom(testHelper, roomFromAlicePOV, "World")!!
|
||||
Timber.v("#TEST: Wait for message to be synced back")
|
||||
testHelper.retryPeriodically {
|
||||
bobSession.roomService().getRoom(cryptoTestData.roomId)?.timelineService()?.getTimelineEvent(secondEvent) != null
|
||||
}
|
||||
|
||||
testHelper.retryPeriodically {
|
||||
secondBobSession.roomService().getRoom(cryptoTestData.roomId)?.timelineService()?.getTimelineEvent(secondEvent) != null
|
||||
}
|
||||
|
||||
cryptoTestHelper.ensureCanDecrypt(listOf(secondEvent), bobSession, cryptoTestData.roomId, listOf("World"))
|
||||
cryptoTestHelper.ensureCannotDecrypt(listOf(secondEvent), secondBobSession, cryptoTestData.roomId)
|
||||
}
|
||||
|
||||
private suspend fun VerificationService.readOldVerificationCodeAsync(scope: CoroutineScope, userId: String): Deferred<String> {
|
||||
return scope.async {
|
||||
suspendCancellableCoroutine { continuation ->
|
||||
|
|
|
@ -25,7 +25,6 @@ import org.junit.Assert.assertNull
|
|||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Assert.fail
|
||||
import org.junit.FixMethodOrder
|
||||
import org.junit.Ignore
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.junit.runners.MethodSorters
|
||||
|
@ -42,13 +41,13 @@ import org.matrix.android.sdk.common.CommonTestHelper.Companion.runCryptoTest
|
|||
import org.matrix.android.sdk.common.CommonTestHelper.Companion.runSessionTest
|
||||
import org.matrix.android.sdk.common.SessionTestParams
|
||||
import org.matrix.android.sdk.common.TestConstants
|
||||
import timber.log.Timber
|
||||
import kotlin.coroutines.Continuation
|
||||
import kotlin.coroutines.resume
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||
@LargeTest
|
||||
@Ignore
|
||||
class XSigningTest : InstrumentedTest {
|
||||
|
||||
@Test
|
||||
|
@ -214,4 +213,104 @@ class XSigningTest : InstrumentedTest {
|
|||
val result = aliceSession.cryptoService().crossSigningService().checkDeviceTrust(bobUserId, bobSecondDeviceId, null)
|
||||
assertTrue("Bob second device should be trusted from alice POV", result.isCrossSignedVerified())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testWarnOnCrossSigningReset() = runCryptoTest(context()) { cryptoTestHelper, testHelper ->
|
||||
val cryptoTestData = cryptoTestHelper.doE2ETestWithAliceAndBobInARoom()
|
||||
|
||||
val aliceSession = cryptoTestData.firstSession
|
||||
val bobSession = cryptoTestData.secondSession
|
||||
|
||||
val aliceAuthParams = UserPasswordAuth(
|
||||
user = aliceSession.myUserId,
|
||||
password = TestConstants.PASSWORD
|
||||
)
|
||||
val bobAuthParams = UserPasswordAuth(
|
||||
user = bobSession!!.myUserId,
|
||||
password = TestConstants.PASSWORD
|
||||
)
|
||||
|
||||
testHelper.waitForCallback<Unit> {
|
||||
aliceSession.cryptoService().crossSigningService().initializeCrossSigning(object : UserInteractiveAuthInterceptor {
|
||||
override fun performStage(flowResponse: RegistrationFlowResponse, errCode: String?, promise: Continuation<UIABaseAuth>) {
|
||||
promise.resume(aliceAuthParams)
|
||||
}
|
||||
}, it)
|
||||
}
|
||||
testHelper.waitForCallback<Unit> {
|
||||
bobSession.cryptoService().crossSigningService().initializeCrossSigning(object : UserInteractiveAuthInterceptor {
|
||||
override fun performStage(flowResponse: RegistrationFlowResponse, errCode: String?, promise: Continuation<UIABaseAuth>) {
|
||||
promise.resume(bobAuthParams)
|
||||
}
|
||||
}, it)
|
||||
}
|
||||
|
||||
cryptoTestHelper.verifySASCrossSign(aliceSession, bobSession, cryptoTestData.roomId)
|
||||
|
||||
testHelper.retryPeriodically {
|
||||
aliceSession.cryptoService().crossSigningService().isUserTrusted(bobSession.myUserId)
|
||||
}
|
||||
|
||||
testHelper.retryPeriodically {
|
||||
aliceSession.cryptoService().crossSigningService().checkUserTrust(bobSession.myUserId).isVerified()
|
||||
}
|
||||
|
||||
aliceSession.cryptoService()
|
||||
// Ensure also that bob device is trusted
|
||||
testHelper.retryPeriodically {
|
||||
val deviceInfo = aliceSession.cryptoService().getUserDevices(bobSession.myUserId).firstOrNull()
|
||||
Timber.v("#TEST device:${deviceInfo?.shortDebugString()} trust ${deviceInfo?.trustLevel}")
|
||||
deviceInfo?.trustLevel?.crossSigningVerified == true
|
||||
}
|
||||
|
||||
val currentBobMSK = aliceSession.cryptoService().crossSigningService()
|
||||
.getUserCrossSigningKeys(bobSession.myUserId)!!
|
||||
.masterKey()!!.unpaddedBase64PublicKey!!
|
||||
|
||||
testHelper.waitForCallback<Unit> {
|
||||
bobSession.cryptoService().crossSigningService().initializeCrossSigning(object : UserInteractiveAuthInterceptor {
|
||||
override fun performStage(flowResponse: RegistrationFlowResponse, errCode: String?, promise: Continuation<UIABaseAuth>) {
|
||||
promise.resume(bobAuthParams)
|
||||
}
|
||||
}, it)
|
||||
}
|
||||
|
||||
testHelper.retryPeriodically {
|
||||
val newBobMsk = aliceSession.cryptoService().crossSigningService()
|
||||
.getUserCrossSigningKeys(bobSession.myUserId)
|
||||
?.masterKey()?.unpaddedBase64PublicKey
|
||||
newBobMsk != null && newBobMsk != currentBobMSK
|
||||
}
|
||||
|
||||
// trick to force event to sync
|
||||
bobSession.roomService().getRoom(cryptoTestData.roomId)!!.typingService().userIsTyping()
|
||||
|
||||
// assert that bob is not trusted anymore from alice s
|
||||
testHelper.retryPeriodically {
|
||||
val trust = aliceSession.cryptoService().crossSigningService().checkUserTrust(bobSession.myUserId)
|
||||
!trust.isVerified()
|
||||
}
|
||||
|
||||
// trick to force event to sync
|
||||
bobSession.roomService().getRoom(cryptoTestData.roomId)!!.typingService().userStopsTyping()
|
||||
bobSession.roomService().getRoom(cryptoTestData.roomId)!!.typingService().userIsTyping()
|
||||
|
||||
testHelper.retryPeriodically {
|
||||
val info = aliceSession.cryptoService().crossSigningService().getUserCrossSigningKeys(bobSession.myUserId)
|
||||
info?.wasTrustedOnce == true
|
||||
}
|
||||
|
||||
// trick to force event to sync
|
||||
bobSession.roomService().getRoom(cryptoTestData.roomId)!!.typingService().userStopsTyping()
|
||||
bobSession.roomService().getRoom(cryptoTestData.roomId)!!.typingService().userIsTyping()
|
||||
|
||||
testHelper.retryPeriodically {
|
||||
!aliceSession.cryptoService().crossSigningService().isUserTrusted(bobSession.myUserId)
|
||||
}
|
||||
|
||||
// Ensure also that bob device are not trusted
|
||||
testHelper.retryPeriodically {
|
||||
aliceSession.cryptoService().getUserDevices(bobSession.myUserId).first().trustLevel?.crossSigningVerified != true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,6 +61,8 @@ interface CryptoService {
|
|||
|
||||
fun isRoomBlacklistUnverifiedDevices(roomId: String?): Boolean
|
||||
|
||||
fun getLiveBlockUnverifiedDevices(roomId: String): LiveData<Boolean>
|
||||
|
||||
fun setWarnOnUnknownDevices(warn: Boolean)
|
||||
|
||||
fun setDeviceVerification(trustLevel: DeviceTrustLevel, userId: String, deviceId: String)
|
||||
|
@ -77,6 +79,8 @@ interface CryptoService {
|
|||
|
||||
fun setGlobalBlacklistUnverifiedDevices(block: Boolean)
|
||||
|
||||
fun getLiveGlobalCryptoConfig(): LiveData<GlobalCryptoConfig>
|
||||
|
||||
/**
|
||||
* Enable or disable key gossiping.
|
||||
* Default is true.
|
||||
|
@ -100,7 +104,7 @@ interface CryptoService {
|
|||
*/
|
||||
fun isShareKeysOnInviteEnabled(): Boolean
|
||||
|
||||
fun setRoomUnBlacklistUnverifiedDevices(roomId: String)
|
||||
fun setRoomUnBlockUnverifiedDevices(roomId: String)
|
||||
|
||||
fun getDeviceTrackingStatus(userId: String): Int
|
||||
|
||||
|
@ -112,7 +116,7 @@ interface CryptoService {
|
|||
|
||||
suspend fun exportRoomKeys(password: String): ByteArray
|
||||
|
||||
fun setRoomBlacklistUnverifiedDevices(roomId: String)
|
||||
fun setRoomBlockUnverifiedDevices(roomId: String, block: Boolean)
|
||||
|
||||
fun getCryptoDeviceInfo(userId: String, deviceId: String?): CryptoDeviceInfo?
|
||||
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* 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.session.crypto
|
||||
|
||||
data class GlobalCryptoConfig(
|
||||
val globalBlockUnverifiedDevices: Boolean,
|
||||
val globalEnableKeyGossiping: Boolean,
|
||||
val enableKeyForwardingOnInvite: Boolean,
|
||||
)
|
|
@ -18,7 +18,8 @@ package org.matrix.android.sdk.api.session.crypto.crosssigning
|
|||
|
||||
data class MXCrossSigningInfo(
|
||||
val userId: String,
|
||||
val crossSigningKeys: List<CryptoCrossSigningKey>
|
||||
val crossSigningKeys: List<CryptoCrossSigningKey>,
|
||||
val wasTrustedOnce: Boolean
|
||||
) {
|
||||
|
||||
fun isTrusted(): Boolean = masterKey()?.trustLevel?.isVerified() == true &&
|
||||
|
|
|
@ -52,9 +52,17 @@ data class DeviceInfo(
|
|||
* The last ip address.
|
||||
*/
|
||||
@Json(name = "last_seen_ip")
|
||||
val lastSeenIp: String? = null
|
||||
val lastSeenIp: String? = null,
|
||||
|
||||
@Json(name = "org.matrix.msc3852.last_seen_user_agent")
|
||||
val unstableLastSeenUserAgent: String? = null,
|
||||
|
||||
@Json(name = "last_seen_user_agent")
|
||||
val lastSeenUserAgent: String? = null,
|
||||
) : DatedObject {
|
||||
|
||||
override val date: Long
|
||||
get() = lastSeenTs ?: 0
|
||||
|
||||
fun getBestLastSeenUserAgent() = lastSeenUserAgent ?: unstableLastSeenUserAgent
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* 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.session.crypto.model
|
||||
|
||||
enum class UserVerificationLevel {
|
||||
|
||||
VERIFIED_ALL_DEVICES_TRUSTED,
|
||||
|
||||
VERIFIED_WITH_DEVICES_UNTRUSTED,
|
||||
|
||||
UNVERIFIED_BUT_WAS_PREVIOUSLY,
|
||||
|
||||
WAS_NEVER_VERIFIED,
|
||||
}
|
|
@ -128,4 +128,17 @@ object EventType {
|
|||
type == CALL_REJECT ||
|
||||
type == CALL_REPLACES
|
||||
}
|
||||
|
||||
fun isVerificationEvent(type: String): Boolean {
|
||||
return when (type) {
|
||||
KEY_VERIFICATION_START,
|
||||
KEY_VERIFICATION_ACCEPT,
|
||||
KEY_VERIFICATION_KEY,
|
||||
KEY_VERIFICATION_MAC,
|
||||
KEY_VERIFICATION_CANCEL,
|
||||
KEY_VERIFICATION_DONE,
|
||||
KEY_VERIFICATION_READY -> true
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ import org.matrix.android.sdk.api.failure.Failure
|
|||
import org.matrix.android.sdk.api.listeners.ProgressListener
|
||||
import org.matrix.android.sdk.api.logger.LoggerTag
|
||||
import org.matrix.android.sdk.api.session.crypto.CryptoService
|
||||
import org.matrix.android.sdk.api.session.crypto.GlobalCryptoConfig
|
||||
import org.matrix.android.sdk.api.session.crypto.MXCryptoError
|
||||
import org.matrix.android.sdk.api.session.crypto.NewSessionListener
|
||||
import org.matrix.android.sdk.api.session.crypto.OutgoingKeyRequest
|
||||
|
@ -1163,6 +1164,10 @@ internal class DefaultCryptoService @Inject constructor(
|
|||
return cryptoStore.getGlobalBlacklistUnverifiedDevices()
|
||||
}
|
||||
|
||||
override fun getLiveGlobalCryptoConfig(): LiveData<GlobalCryptoConfig> {
|
||||
return cryptoStore.getLiveGlobalCryptoConfig()
|
||||
}
|
||||
|
||||
/**
|
||||
* Tells whether the client should encrypt messages only for the verified devices
|
||||
* in this room.
|
||||
|
@ -1171,39 +1176,28 @@ internal class DefaultCryptoService @Inject constructor(
|
|||
* @param roomId the room id
|
||||
* @return true if the client should encrypt messages only for the verified devices.
|
||||
*/
|
||||
// TODO add this info in CryptoRoomEntity?
|
||||
override fun isRoomBlacklistUnverifiedDevices(roomId: String?): Boolean {
|
||||
return roomId?.let { cryptoStore.getRoomsListBlacklistUnverifiedDevices().contains(it) }
|
||||
return roomId?.let { cryptoStore.getBlockUnverifiedDevices(roomId) }
|
||||
?: false
|
||||
}
|
||||
|
||||
/**
|
||||
* Manages the room black-listing for unverified devices.
|
||||
* A live status regarding sharing keys for unverified devices in this room.
|
||||
*
|
||||
* @param roomId the room id
|
||||
* @param add true to add the room id to the list, false to remove it.
|
||||
* @return Live status
|
||||
*/
|
||||
private fun setRoomBlacklistUnverifiedDevices(roomId: String, add: Boolean) {
|
||||
val roomIds = cryptoStore.getRoomsListBlacklistUnverifiedDevices().toMutableList()
|
||||
|
||||
if (add) {
|
||||
if (roomId !in roomIds) {
|
||||
roomIds.add(roomId)
|
||||
}
|
||||
} else {
|
||||
roomIds.remove(roomId)
|
||||
}
|
||||
|
||||
cryptoStore.setRoomsListBlacklistUnverifiedDevices(roomIds)
|
||||
override fun getLiveBlockUnverifiedDevices(roomId: String): LiveData<Boolean> {
|
||||
return cryptoStore.getLiveBlockUnverifiedDevices(roomId)
|
||||
}
|
||||
|
||||
/**
|
||||
* Add this room to the ones which don't encrypt messages to unverified devices.
|
||||
*
|
||||
* @param roomId the room id
|
||||
* @param block if true will block sending keys to unverified devices
|
||||
*/
|
||||
override fun setRoomBlacklistUnverifiedDevices(roomId: String) {
|
||||
setRoomBlacklistUnverifiedDevices(roomId, true)
|
||||
override fun setRoomBlockUnverifiedDevices(roomId: String, block: Boolean) {
|
||||
cryptoStore.blockUnverifiedDevicesInRoom(roomId, block)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1211,8 +1205,8 @@ internal class DefaultCryptoService @Inject constructor(
|
|||
*
|
||||
* @param roomId the room id
|
||||
*/
|
||||
override fun setRoomUnBlacklistUnverifiedDevices(roomId: String) {
|
||||
setRoomBlacklistUnverifiedDevices(roomId, false)
|
||||
override fun setRoomUnBlockUnverifiedDevices(roomId: String) {
|
||||
setRoomBlockUnverifiedDevices(roomId, false)
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -31,6 +31,8 @@ import org.matrix.android.sdk.api.session.events.model.Content
|
|||
import org.matrix.android.sdk.api.session.events.model.EventType
|
||||
import org.matrix.android.sdk.api.session.events.model.content.RoomKeyWithHeldContent
|
||||
import org.matrix.android.sdk.api.session.events.model.content.WithHeldCode
|
||||
import org.matrix.android.sdk.api.session.room.model.message.MessageContent
|
||||
import org.matrix.android.sdk.api.session.room.model.message.MessageType
|
||||
import org.matrix.android.sdk.internal.crypto.DeviceListManager
|
||||
import org.matrix.android.sdk.internal.crypto.InboundGroupSessionHolder
|
||||
import org.matrix.android.sdk.internal.crypto.MXOlmDevice
|
||||
|
@ -92,7 +94,18 @@ internal class MXMegolmEncryption(
|
|||
): Content {
|
||||
val ts = clock.epochMillis()
|
||||
Timber.tag(loggerTag.value).v("encryptEventContent : getDevicesInRoom")
|
||||
val devices = getDevicesInRoom(userIds)
|
||||
|
||||
/**
|
||||
* When using in-room messages and the room has encryption enabled,
|
||||
* clients should ensure that encryption does not hinder the verification.
|
||||
* For example, if the verification messages are encrypted, clients must ensure that all the recipient’s
|
||||
* unverified devices receive the keys necessary to decrypt the messages,
|
||||
* even if they would normally not be given the keys to decrypt messages in the room.
|
||||
*/
|
||||
val shouldSendToUnverified = isVerificationEvent(eventType, eventContent)
|
||||
|
||||
val devices = getDevicesInRoom(userIds, forceDistributeToUnverified = shouldSendToUnverified)
|
||||
|
||||
Timber.tag(loggerTag.value).d("encrypt event in room=$roomId - devices count in room ${devices.allowedDevices.toDebugCount()}")
|
||||
Timber.tag(loggerTag.value).v("encryptEventContent ${clock.epochMillis() - ts}: getDevicesInRoom ${devices.allowedDevices.toDebugString()}")
|
||||
val outboundSession = ensureOutboundSession(devices.allowedDevices)
|
||||
|
@ -107,6 +120,11 @@ internal class MXMegolmEncryption(
|
|||
}
|
||||
}
|
||||
|
||||
private fun isVerificationEvent(eventType: String, eventContent: Content) =
|
||||
EventType.isVerificationEvent(eventType) ||
|
||||
(eventType == EventType.MESSAGE &&
|
||||
eventContent.get(MessageContent.MSG_TYPE_JSON_KEY) == MessageType.MSGTYPE_VERIFICATION_REQUEST)
|
||||
|
||||
private fun notifyWithheldForSession(devices: MXUsersDevicesMap<WithHeldCode>, outboundSession: MXOutboundSessionInfo) {
|
||||
// offload to computation thread
|
||||
cryptoCoroutineScope.launch(coroutineDispatchers.computation) {
|
||||
|
@ -416,15 +434,17 @@ internal class MXMegolmEncryption(
|
|||
* This method must be called in getDecryptingThreadHandler() thread.
|
||||
*
|
||||
* @param userIds the user ids whose devices must be checked.
|
||||
* @param forceDistributeToUnverified If true the unverified devices will be included in valid recipients even if
|
||||
* such devices are blocked in crypto settings
|
||||
*/
|
||||
private suspend fun getDevicesInRoom(userIds: List<String>): DeviceInRoomInfo {
|
||||
private suspend fun getDevicesInRoom(userIds: List<String>, forceDistributeToUnverified: Boolean = false): DeviceInRoomInfo {
|
||||
// We are happy to use a cached version here: we assume that if we already
|
||||
// have a list of the user's devices, then we already share an e2e room
|
||||
// with them, which means that they will have announced any new devices via
|
||||
// an m.new_device.
|
||||
val keys = deviceListManager.downloadKeys(userIds, false)
|
||||
val encryptToVerifiedDevicesOnly = cryptoStore.getGlobalBlacklistUnverifiedDevices() ||
|
||||
cryptoStore.getRoomsListBlacklistUnverifiedDevices().contains(roomId)
|
||||
cryptoStore.getBlockUnverifiedDevices(roomId)
|
||||
|
||||
val devicesInRoom = DeviceInRoomInfo()
|
||||
val unknownDevices = MXUsersDevicesMap<CryptoDeviceInfo>()
|
||||
|
@ -444,7 +464,7 @@ internal class MXMegolmEncryption(
|
|||
continue
|
||||
}
|
||||
|
||||
if (!deviceInfo.isVerified && encryptToVerifiedDevicesOnly) {
|
||||
if (!deviceInfo.isVerified && encryptToVerifiedDevicesOnly && !forceDistributeToUnverified) {
|
||||
devicesInRoom.withHeldDevices.setObject(userId, deviceId, WithHeldCode.UNVERIFIED)
|
||||
continue
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ import javax.inject.Inject
|
|||
|
||||
@SessionScope
|
||||
internal class DefaultCrossSigningService @Inject constructor(
|
||||
@UserId private val userId: String,
|
||||
@UserId private val myUserId: String,
|
||||
@SessionId private val sessionId: String,
|
||||
private val cryptoStore: IMXCryptoStore,
|
||||
private val deviceListManager: DeviceListManager,
|
||||
|
@ -127,7 +127,7 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
}
|
||||
|
||||
// Recover local trust in case private key are there?
|
||||
setUserKeysAsTrusted(userId, checkUserTrust(userId).isVerified())
|
||||
setUserKeysAsTrusted(myUserId, checkUserTrust(myUserId).isVerified())
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
// Mmm this kind of a big issue
|
||||
|
@ -167,9 +167,13 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
}
|
||||
|
||||
override fun onSuccess(data: InitializeCrossSigningTask.Result) {
|
||||
val crossSigningInfo = MXCrossSigningInfo(userId, listOf(data.masterKeyInfo, data.userKeyInfo, data.selfSignedKeyInfo))
|
||||
val crossSigningInfo = MXCrossSigningInfo(
|
||||
myUserId,
|
||||
listOf(data.masterKeyInfo, data.userKeyInfo, data.selfSignedKeyInfo),
|
||||
true
|
||||
)
|
||||
cryptoStore.setMyCrossSigningInfo(crossSigningInfo)
|
||||
setUserKeysAsTrusted(userId, true)
|
||||
setUserKeysAsTrusted(myUserId, true)
|
||||
cryptoStore.storePrivateKeysInfo(data.masterKeyPK, data.userKeyPK, data.selfSigningKeyPK)
|
||||
crossSigningOlm.masterPkSigning = OlmPkSigning().apply { initWithSeed(data.masterKeyPK.fromBase64()) }
|
||||
crossSigningOlm.userPkSigning = OlmPkSigning().apply { initWithSeed(data.userKeyPK.fromBase64()) }
|
||||
|
@ -266,7 +270,7 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
uskKeyPrivateKey: String?,
|
||||
sskPrivateKey: String?
|
||||
): UserTrustResult {
|
||||
val mxCrossSigningInfo = getMyCrossSigningKeys() ?: return UserTrustResult.CrossSigningNotConfigured(userId)
|
||||
val mxCrossSigningInfo = getMyCrossSigningKeys() ?: return UserTrustResult.CrossSigningNotConfigured(myUserId)
|
||||
|
||||
var masterKeyIsTrusted = false
|
||||
var userKeyIsTrusted = false
|
||||
|
@ -330,7 +334,7 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
val checkSelfTrust = checkSelfTrust()
|
||||
if (checkSelfTrust.isVerified()) {
|
||||
cryptoStore.storePrivateKeysInfo(masterKeyPrivateKey, uskKeyPrivateKey, sskPrivateKey)
|
||||
setUserKeysAsTrusted(userId, true)
|
||||
setUserKeysAsTrusted(myUserId, true)
|
||||
}
|
||||
return checkSelfTrust
|
||||
}
|
||||
|
@ -351,7 +355,7 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
* .
|
||||
*/
|
||||
override fun isUserTrusted(otherUserId: String): Boolean {
|
||||
return cryptoStore.getCrossSigningInfo(userId)?.isTrusted() == true
|
||||
return cryptoStore.getCrossSigningInfo(otherUserId)?.isTrusted() == true
|
||||
}
|
||||
|
||||
override fun isCrossSigningVerified(): Boolean {
|
||||
|
@ -363,7 +367,7 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
*/
|
||||
override fun checkUserTrust(otherUserId: String): UserTrustResult {
|
||||
Timber.v("## CrossSigning checkUserTrust for $otherUserId")
|
||||
if (otherUserId == userId) {
|
||||
if (otherUserId == myUserId) {
|
||||
return checkSelfTrust()
|
||||
}
|
||||
// I trust a user if I trust his master key
|
||||
|
@ -371,16 +375,14 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
// TODO what if the master key is signed by a device key that i have verified
|
||||
|
||||
// First let's get my user key
|
||||
val myCrossSigningInfo = cryptoStore.getCrossSigningInfo(userId)
|
||||
val myCrossSigningInfo = cryptoStore.getCrossSigningInfo(myUserId)
|
||||
|
||||
checkOtherMSKTrusted(myCrossSigningInfo, cryptoStore.getCrossSigningInfo(otherUserId))
|
||||
|
||||
return UserTrustResult.Success
|
||||
return checkOtherMSKTrusted(myCrossSigningInfo, cryptoStore.getCrossSigningInfo(otherUserId))
|
||||
}
|
||||
|
||||
fun checkOtherMSKTrusted(myCrossSigningInfo: MXCrossSigningInfo?, otherInfo: MXCrossSigningInfo?): UserTrustResult {
|
||||
val myUserKey = myCrossSigningInfo?.userKey()
|
||||
?: return UserTrustResult.CrossSigningNotConfigured(userId)
|
||||
?: return UserTrustResult.CrossSigningNotConfigured(myUserId)
|
||||
|
||||
if (!myCrossSigningInfo.isTrusted()) {
|
||||
return UserTrustResult.KeysNotTrusted(myCrossSigningInfo)
|
||||
|
@ -391,7 +393,7 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
?: return UserTrustResult.UnknownCrossSignatureInfo(otherInfo?.userId ?: "")
|
||||
|
||||
val masterKeySignaturesMadeByMyUserKey = otherMasterKey.signatures
|
||||
?.get(userId) // Signatures made by me
|
||||
?.get(myUserId) // Signatures made by me
|
||||
?.get("ed25519:${myUserKey.unpaddedBase64PublicKey}")
|
||||
|
||||
if (masterKeySignaturesMadeByMyUserKey.isNullOrBlank()) {
|
||||
|
@ -417,9 +419,9 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
// Special case when it's me,
|
||||
// I have to check that MSK -> USK -> SSK
|
||||
// and that MSK is trusted (i know the private key, or is signed by a trusted device)
|
||||
val myCrossSigningInfo = cryptoStore.getCrossSigningInfo(userId)
|
||||
val myCrossSigningInfo = cryptoStore.getCrossSigningInfo(myUserId)
|
||||
|
||||
return checkSelfTrust(myCrossSigningInfo, cryptoStore.getUserDeviceList(userId))
|
||||
return checkSelfTrust(myCrossSigningInfo, cryptoStore.getUserDeviceList(myUserId))
|
||||
}
|
||||
|
||||
fun checkSelfTrust(myCrossSigningInfo: MXCrossSigningInfo?, myDevices: List<CryptoDeviceInfo>?): UserTrustResult {
|
||||
|
@ -429,7 +431,7 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
// val myCrossSigningInfo = cryptoStore.getCrossSigningInfo(userId)
|
||||
|
||||
val myMasterKey = myCrossSigningInfo?.masterKey()
|
||||
?: return UserTrustResult.CrossSigningNotConfigured(userId)
|
||||
?: return UserTrustResult.CrossSigningNotConfigured(myUserId)
|
||||
|
||||
// Is the master key trusted
|
||||
// 1) check if I know the private key
|
||||
|
@ -453,7 +455,7 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
olmPkSigning?.releaseSigning()
|
||||
} else {
|
||||
// Maybe it's signed by a locally trusted device?
|
||||
myMasterKey.signatures?.get(userId)?.forEach { (key, value) ->
|
||||
myMasterKey.signatures?.get(myUserId)?.forEach { (key, value) ->
|
||||
val potentialDeviceId = key.removePrefix("ed25519:")
|
||||
val potentialDevice = myDevices?.firstOrNull { it.deviceId == potentialDeviceId } // cryptoStore.getUserDevice(userId, potentialDeviceId)
|
||||
if (potentialDevice != null && potentialDevice.isVerified) {
|
||||
|
@ -475,14 +477,14 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
}
|
||||
|
||||
val myUserKey = myCrossSigningInfo.userKey()
|
||||
?: return UserTrustResult.CrossSigningNotConfigured(userId)
|
||||
?: return UserTrustResult.CrossSigningNotConfigured(myUserId)
|
||||
|
||||
val userKeySignaturesMadeByMyMasterKey = myUserKey.signatures
|
||||
?.get(userId) // Signatures made by me
|
||||
?.get(myUserId) // Signatures made by me
|
||||
?.get("ed25519:${myMasterKey.unpaddedBase64PublicKey}")
|
||||
|
||||
if (userKeySignaturesMadeByMyMasterKey.isNullOrBlank()) {
|
||||
Timber.d("## CrossSigning checkUserTrust false for $userId, USK not signed by MSK")
|
||||
Timber.d("## CrossSigning checkUserTrust false for $myUserId, USK not signed by MSK")
|
||||
return UserTrustResult.KeyNotSigned(myUserKey)
|
||||
}
|
||||
|
||||
|
@ -498,14 +500,14 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
}
|
||||
|
||||
val mySSKey = myCrossSigningInfo.selfSigningKey()
|
||||
?: return UserTrustResult.CrossSigningNotConfigured(userId)
|
||||
?: return UserTrustResult.CrossSigningNotConfigured(myUserId)
|
||||
|
||||
val ssKeySignaturesMadeByMyMasterKey = mySSKey.signatures
|
||||
?.get(userId) // Signatures made by me
|
||||
?.get(myUserId) // Signatures made by me
|
||||
?.get("ed25519:${myMasterKey.unpaddedBase64PublicKey}")
|
||||
|
||||
if (ssKeySignaturesMadeByMyMasterKey.isNullOrBlank()) {
|
||||
Timber.d("## CrossSigning checkUserTrust false for $userId, SSK not signed by MSK")
|
||||
Timber.d("## CrossSigning checkUserTrust false for $myUserId, SSK not signed by MSK")
|
||||
return UserTrustResult.KeyNotSigned(mySSKey)
|
||||
}
|
||||
|
||||
|
@ -555,14 +557,14 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
|
||||
override fun trustUser(otherUserId: String, callback: MatrixCallback<Unit>) {
|
||||
cryptoCoroutineScope.launch(coroutineDispatchers.crypto) {
|
||||
Timber.d("## CrossSigning - Mark user $userId as trusted ")
|
||||
Timber.d("## CrossSigning - Mark user $otherUserId as trusted ")
|
||||
// We should have this user keys
|
||||
val otherMasterKeys = getUserCrossSigningKeys(otherUserId)?.masterKey()
|
||||
if (otherMasterKeys == null) {
|
||||
callback.onFailure(Throwable("## CrossSigning - Other master signing key is not known"))
|
||||
return@launch
|
||||
}
|
||||
val myKeys = getUserCrossSigningKeys(userId)
|
||||
val myKeys = getUserCrossSigningKeys(myUserId)
|
||||
if (myKeys == null) {
|
||||
callback.onFailure(Throwable("## CrossSigning - CrossSigning is not setup for this account"))
|
||||
return@launch
|
||||
|
@ -586,16 +588,22 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
}
|
||||
|
||||
cryptoStore.setUserKeysAsTrusted(otherUserId, true)
|
||||
// TODO update local copy with new signature directly here? kind of local echo of trust?
|
||||
|
||||
Timber.d("## CrossSigning - Upload signature of $userId MSK signed by USK")
|
||||
Timber.d("## CrossSigning - Upload signature of $otherUserId MSK signed by USK")
|
||||
val uploadQuery = UploadSignatureQueryBuilder()
|
||||
.withSigningKeyInfo(otherMasterKeys.copyForSignature(userId, userPubKey, newSignature))
|
||||
.withSigningKeyInfo(otherMasterKeys.copyForSignature(myUserId, userPubKey, newSignature))
|
||||
.build()
|
||||
uploadSignaturesTask.configureWith(UploadSignaturesTask.Params(uploadQuery)) {
|
||||
this.executionThread = TaskThread.CRYPTO
|
||||
this.callback = callback
|
||||
}.executeBy(taskExecutor)
|
||||
|
||||
// Local echo for device cross trust, to avoid having to wait for a notification of key change
|
||||
cryptoStore.getUserDeviceList(otherUserId)?.forEach { device ->
|
||||
val updatedTrust = checkDeviceTrust(device.userId, device.deviceId, device.trustLevel?.isLocallyVerified() ?: false)
|
||||
Timber.v("## CrossSigning - update trust for device ${device.deviceId} of user $otherUserId , verified=$updatedTrust")
|
||||
cryptoStore.setDeviceTrust(device.userId, device.deviceId, updatedTrust.isCrossSignedVerified(), updatedTrust.isLocallyVerified())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -604,20 +612,20 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
cryptoStore.markMyMasterKeyAsLocallyTrusted(true)
|
||||
checkSelfTrust()
|
||||
// re-verify all trusts
|
||||
onUsersDeviceUpdate(listOf(userId))
|
||||
onUsersDeviceUpdate(listOf(myUserId))
|
||||
}
|
||||
}
|
||||
|
||||
override fun trustDevice(deviceId: String, callback: MatrixCallback<Unit>) {
|
||||
cryptoCoroutineScope.launch(coroutineDispatchers.crypto) {
|
||||
// This device should be yours
|
||||
val device = cryptoStore.getUserDevice(userId, deviceId)
|
||||
val device = cryptoStore.getUserDevice(myUserId, deviceId)
|
||||
if (device == null) {
|
||||
callback.onFailure(IllegalArgumentException("This device [$deviceId] is not known, or not yours"))
|
||||
return@launch
|
||||
}
|
||||
|
||||
val myKeys = getUserCrossSigningKeys(userId)
|
||||
val myKeys = getUserCrossSigningKeys(myUserId)
|
||||
if (myKeys == null) {
|
||||
callback.onFailure(Throwable("CrossSigning is not setup for this account"))
|
||||
return@launch
|
||||
|
@ -639,7 +647,7 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
}
|
||||
val toUpload = device.copy(
|
||||
signatures = mapOf(
|
||||
userId
|
||||
myUserId
|
||||
to
|
||||
mapOf(
|
||||
"ed25519:$ssPubKey" to newSignature
|
||||
|
@ -661,8 +669,8 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
val otherDevice = cryptoStore.getUserDevice(otherUserId, otherDeviceId)
|
||||
?: return DeviceTrustResult.UnknownDevice(otherDeviceId)
|
||||
|
||||
val myKeys = getUserCrossSigningKeys(userId)
|
||||
?: return legacyFallbackTrust(locallyTrusted, DeviceTrustResult.CrossSigningNotConfigured(userId))
|
||||
val myKeys = getUserCrossSigningKeys(myUserId)
|
||||
?: return legacyFallbackTrust(locallyTrusted, DeviceTrustResult.CrossSigningNotConfigured(myUserId))
|
||||
|
||||
if (!myKeys.isTrusted()) return legacyFallbackTrust(locallyTrusted, DeviceTrustResult.KeysNotTrusted(myKeys))
|
||||
|
||||
|
@ -717,7 +725,7 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
|
||||
fun checkDeviceTrust(myKeys: MXCrossSigningInfo?, otherKeys: MXCrossSigningInfo?, otherDevice: CryptoDeviceInfo): DeviceTrustResult {
|
||||
val locallyTrusted = otherDevice.trustLevel?.isLocallyVerified()
|
||||
myKeys ?: return legacyFallbackTrust(locallyTrusted, DeviceTrustResult.CrossSigningNotConfigured(userId))
|
||||
myKeys ?: return legacyFallbackTrust(locallyTrusted, DeviceTrustResult.CrossSigningNotConfigured(myUserId))
|
||||
|
||||
if (!myKeys.isTrusted()) return legacyFallbackTrust(locallyTrusted, DeviceTrustResult.KeysNotTrusted(myKeys))
|
||||
|
||||
|
@ -805,7 +813,7 @@ internal class DefaultCrossSigningService @Inject constructor(
|
|||
cryptoStore.setUserKeysAsTrusted(otherUserId, trusted)
|
||||
// If it's me, recheck trust of all users and devices?
|
||||
val users = ArrayList<String>()
|
||||
if (otherUserId == userId && currentTrust != trusted) {
|
||||
if (otherUserId == myUserId && currentTrust != trusted) {
|
||||
// notify key requester
|
||||
outgoingKeyRequestManager.onSelfCrossSigningTrustChanged(trusted)
|
||||
cryptoStore.updateUsersTrust {
|
||||
|
|
|
@ -161,6 +161,7 @@ internal class UpdateTrustWorker(context: Context, params: WorkerParameters, ses
|
|||
// i have all the new trusts, update DB
|
||||
trusts.forEach {
|
||||
val verified = it.value?.isVerified() == true
|
||||
Timber.v("[$myUserId] ## CrossSigning - Updating user trust: ${it.key} to $verified")
|
||||
updateCrossSigningKeysTrust(cryptoRealm, it.key, verified)
|
||||
}
|
||||
|
||||
|
@ -259,21 +260,27 @@ internal class UpdateTrustWorker(context: Context, params: WorkerParameters, ses
|
|||
cryptoRealm.where(CrossSigningInfoEntity::class.java)
|
||||
.equalTo(CrossSigningInfoEntityFields.USER_ID, userId)
|
||||
.findFirst()
|
||||
?.crossSigningKeys
|
||||
?.forEach { info ->
|
||||
// optimization to avoid trigger updates when there is no change..
|
||||
if (info.trustLevelEntity?.isVerified() != verified) {
|
||||
Timber.d("## CrossSigning - Trust change for $userId : $verified")
|
||||
val level = info.trustLevelEntity
|
||||
if (level == null) {
|
||||
info.trustLevelEntity = cryptoRealm.createObject(TrustLevelEntity::class.java).also {
|
||||
it.locallyVerified = verified
|
||||
it.crossSignedVerified = verified
|
||||
?.let { userKeyInfo ->
|
||||
userKeyInfo
|
||||
.crossSigningKeys
|
||||
.forEach { key ->
|
||||
// optimization to avoid trigger updates when there is no change..
|
||||
if (key.trustLevelEntity?.isVerified() != verified) {
|
||||
Timber.d("## CrossSigning - Trust change for $userId : $verified")
|
||||
val level = key.trustLevelEntity
|
||||
if (level == null) {
|
||||
key.trustLevelEntity = cryptoRealm.createObject(TrustLevelEntity::class.java).also {
|
||||
it.locallyVerified = verified
|
||||
it.crossSignedVerified = verified
|
||||
}
|
||||
} else {
|
||||
level.locallyVerified = verified
|
||||
level.crossSignedVerified = verified
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
level.locallyVerified = verified
|
||||
level.crossSignedVerified = verified
|
||||
}
|
||||
if (verified) {
|
||||
userKeyInfo.wasUserVerifiedOnce = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -299,8 +306,18 @@ internal class UpdateTrustWorker(context: Context, params: WorkerParameters, ses
|
|||
getCrossSigningInfo(cryptoRealm, userId)?.isTrusted() == true
|
||||
}
|
||||
|
||||
val resetTrust = listToCheck
|
||||
.filter { userId ->
|
||||
val crossSigningInfo = getCrossSigningInfo(cryptoRealm, userId)
|
||||
crossSigningInfo?.isTrusted() != true && crossSigningInfo?.wasTrustedOnce == true
|
||||
}
|
||||
|
||||
return if (allTrustedUserIds.isEmpty()) {
|
||||
RoomEncryptionTrustLevel.Default
|
||||
if (resetTrust.isEmpty()) {
|
||||
RoomEncryptionTrustLevel.Default
|
||||
} else {
|
||||
RoomEncryptionTrustLevel.Warning
|
||||
}
|
||||
} else {
|
||||
// If one of the verified user as an untrusted device -> warning
|
||||
// If all devices of all verified users are trusted -> green
|
||||
|
@ -327,11 +344,15 @@ internal class UpdateTrustWorker(context: Context, params: WorkerParameters, ses
|
|||
if (hasWarning) {
|
||||
RoomEncryptionTrustLevel.Warning
|
||||
} else {
|
||||
if (listToCheck.size == allTrustedUserIds.size) {
|
||||
// all users are trusted and all devices are verified
|
||||
RoomEncryptionTrustLevel.Trusted
|
||||
if (resetTrust.isEmpty()) {
|
||||
if (listToCheck.size == allTrustedUserIds.size) {
|
||||
// all users are trusted and all devices are verified
|
||||
RoomEncryptionTrustLevel.Trusted
|
||||
} else {
|
||||
RoomEncryptionTrustLevel.Default
|
||||
}
|
||||
} else {
|
||||
RoomEncryptionTrustLevel.Default
|
||||
RoomEncryptionTrustLevel.Warning
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -344,7 +365,8 @@ internal class UpdateTrustWorker(context: Context, params: WorkerParameters, ses
|
|||
userId = userId,
|
||||
crossSigningKeys = xsignInfo.crossSigningKeys.mapNotNull {
|
||||
crossSigningKeysMapper.map(userId, it)
|
||||
}
|
||||
},
|
||||
wasTrustedOnce = xsignInfo.wasUserVerifiedOnce
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ package org.matrix.android.sdk.internal.crypto.store
|
|||
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.paging.PagedList
|
||||
import org.matrix.android.sdk.api.session.crypto.GlobalCryptoConfig
|
||||
import org.matrix.android.sdk.api.session.crypto.NewSessionListener
|
||||
import org.matrix.android.sdk.api.session.crypto.OutgoingKeyRequest
|
||||
import org.matrix.android.sdk.api.session.crypto.OutgoingRoomKeyRequestState
|
||||
|
@ -120,11 +121,26 @@ internal interface IMXCryptoStore {
|
|||
fun getRoomsListBlacklistUnverifiedDevices(): List<String>
|
||||
|
||||
/**
|
||||
* Updates the rooms ids list in which the messages are not encrypted for the unverified devices.
|
||||
* A live status regarding sharing keys for unverified devices in this room.
|
||||
*
|
||||
* @param roomIds the room ids list
|
||||
* @return Live status
|
||||
*/
|
||||
fun setRoomsListBlacklistUnverifiedDevices(roomIds: List<String>)
|
||||
fun getLiveBlockUnverifiedDevices(roomId: String): LiveData<Boolean>
|
||||
|
||||
/**
|
||||
* Tell if unverified devices should be blacklisted when sending keys.
|
||||
*
|
||||
* @return true if should not send keys to unverified devices
|
||||
*/
|
||||
fun getBlockUnverifiedDevices(roomId: String): Boolean
|
||||
|
||||
/**
|
||||
* Define if encryption keys should be sent to unverified devices in this room.
|
||||
*
|
||||
* @param roomId the roomId
|
||||
* @param block if true will not send keys to unverified devices
|
||||
*/
|
||||
fun blockUnverifiedDevicesInRoom(roomId: String, block: Boolean)
|
||||
|
||||
/**
|
||||
* Get the current keys backup version.
|
||||
|
@ -516,6 +532,9 @@ internal interface IMXCryptoStore {
|
|||
fun getCrossSigningPrivateKeys(): PrivateKeysInfo?
|
||||
fun getLiveCrossSigningPrivateKeys(): LiveData<Optional<PrivateKeysInfo>>
|
||||
|
||||
fun getGlobalCryptoConfig(): GlobalCryptoConfig
|
||||
fun getLiveGlobalCryptoConfig(): LiveData<GlobalCryptoConfig>
|
||||
|
||||
fun saveBackupRecoveryKey(recoveryKey: String?, version: String?)
|
||||
fun getKeyBackupRecoveryKeyInfo(): SavedKeyBackupKeyInfo?
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ import io.realm.kotlin.where
|
|||
import org.matrix.android.sdk.api.crypto.MXCRYPTO_ALGORITHM_MEGOLM
|
||||
import org.matrix.android.sdk.api.extensions.tryOrNull
|
||||
import org.matrix.android.sdk.api.logger.LoggerTag
|
||||
import org.matrix.android.sdk.api.session.crypto.GlobalCryptoConfig
|
||||
import org.matrix.android.sdk.api.session.crypto.NewSessionListener
|
||||
import org.matrix.android.sdk.api.session.crypto.OutgoingKeyRequest
|
||||
import org.matrix.android.sdk.api.session.crypto.OutgoingRoomKeyRequestState
|
||||
|
@ -445,6 +446,38 @@ internal class RealmCryptoStore @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
override fun getGlobalCryptoConfig(): GlobalCryptoConfig {
|
||||
return doWithRealm(realmConfiguration) { realm ->
|
||||
realm.where<CryptoMetadataEntity>().findFirst()
|
||||
?.let {
|
||||
GlobalCryptoConfig(
|
||||
globalBlockUnverifiedDevices = it.globalBlacklistUnverifiedDevices,
|
||||
globalEnableKeyGossiping = it.globalEnableKeyGossiping,
|
||||
enableKeyForwardingOnInvite = it.enableKeyForwardingOnInvite
|
||||
)
|
||||
} ?: GlobalCryptoConfig(false, false, false)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getLiveGlobalCryptoConfig(): LiveData<GlobalCryptoConfig> {
|
||||
val liveData = monarchy.findAllMappedWithChanges(
|
||||
{ realm: Realm ->
|
||||
realm
|
||||
.where<CryptoMetadataEntity>()
|
||||
},
|
||||
{
|
||||
GlobalCryptoConfig(
|
||||
globalBlockUnverifiedDevices = it.globalBlacklistUnverifiedDevices,
|
||||
globalEnableKeyGossiping = it.globalEnableKeyGossiping,
|
||||
enableKeyForwardingOnInvite = it.enableKeyForwardingOnInvite
|
||||
)
|
||||
}
|
||||
)
|
||||
return Transformations.map(liveData) {
|
||||
it.firstOrNull() ?: GlobalCryptoConfig(false, false, false)
|
||||
}
|
||||
}
|
||||
|
||||
override fun storePrivateKeysInfo(msk: String?, usk: String?, ssk: String?) {
|
||||
Timber.v("## CRYPTO | *** storePrivateKeysInfo ${msk != null}, ${usk != null}, ${ssk != null}")
|
||||
doRealmTransaction(realmConfiguration) { realm ->
|
||||
|
@ -1053,25 +1086,6 @@ internal class RealmCryptoStore @Inject constructor(
|
|||
} ?: false
|
||||
}
|
||||
|
||||
override fun setRoomsListBlacklistUnverifiedDevices(roomIds: List<String>) {
|
||||
doRealmTransaction(realmConfiguration) {
|
||||
// Reset all
|
||||
it.where<CryptoRoomEntity>()
|
||||
.findAll()
|
||||
.forEach { room ->
|
||||
room.blacklistUnverifiedDevices = false
|
||||
}
|
||||
|
||||
// Enable those in the list
|
||||
it.where<CryptoRoomEntity>()
|
||||
.`in`(CryptoRoomEntityFields.ROOM_ID, roomIds.toTypedArray())
|
||||
.findAll()
|
||||
.forEach { room ->
|
||||
room.blacklistUnverifiedDevices = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getRoomsListBlacklistUnverifiedDevices(): List<String> {
|
||||
return doWithRealm(realmConfiguration) {
|
||||
it.where<CryptoRoomEntity>()
|
||||
|
@ -1083,6 +1097,37 @@ internal class RealmCryptoStore @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
override fun getLiveBlockUnverifiedDevices(roomId: String): LiveData<Boolean> {
|
||||
val liveData = monarchy.findAllMappedWithChanges(
|
||||
{ realm: Realm ->
|
||||
realm.where<CryptoRoomEntity>()
|
||||
.equalTo(CryptoRoomEntityFields.ROOM_ID, roomId)
|
||||
},
|
||||
{
|
||||
it.blacklistUnverifiedDevices
|
||||
}
|
||||
)
|
||||
return Transformations.map(liveData) {
|
||||
it.firstOrNull() ?: false
|
||||
}
|
||||
}
|
||||
|
||||
override fun getBlockUnverifiedDevices(roomId: String): Boolean {
|
||||
return doWithRealm(realmConfiguration) { realm ->
|
||||
realm.where<CryptoRoomEntity>()
|
||||
.equalTo(CryptoRoomEntityFields.ROOM_ID, roomId)
|
||||
.findFirst()
|
||||
?.blacklistUnverifiedDevices ?: false
|
||||
}
|
||||
}
|
||||
|
||||
override fun blockUnverifiedDevicesInRoom(roomId: String, block: Boolean) {
|
||||
doRealmTransaction(realmConfiguration) { realm ->
|
||||
CryptoRoomEntity.getById(realm, roomId)
|
||||
?.blacklistUnverifiedDevices = block
|
||||
}
|
||||
}
|
||||
|
||||
override fun getDeviceTrackingStatuses(): Map<String, Int> {
|
||||
return doWithRealm(realmConfiguration) {
|
||||
it.where<UserEntity>()
|
||||
|
@ -1611,7 +1656,8 @@ internal class RealmCryptoStore @Inject constructor(
|
|||
userId = userId,
|
||||
crossSigningKeys = xsignInfo.crossSigningKeys.mapNotNull {
|
||||
crossSigningKeysMapper.map(userId, it)
|
||||
}
|
||||
},
|
||||
wasTrustedOnce = xsignInfo.wasUserVerifiedOnce
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@ import org.matrix.android.sdk.internal.crypto.store.db.migration.MigrateCryptoTo
|
|||
import org.matrix.android.sdk.internal.crypto.store.db.migration.MigrateCryptoTo016
|
||||
import org.matrix.android.sdk.internal.crypto.store.db.migration.MigrateCryptoTo017
|
||||
import org.matrix.android.sdk.internal.crypto.store.db.migration.MigrateCryptoTo018
|
||||
import org.matrix.android.sdk.internal.crypto.store.db.migration.MigrateCryptoTo019
|
||||
import org.matrix.android.sdk.internal.util.database.MatrixRealmMigration
|
||||
import org.matrix.android.sdk.internal.util.time.Clock
|
||||
import javax.inject.Inject
|
||||
|
@ -49,7 +50,7 @@ internal class RealmCryptoStoreMigration @Inject constructor(
|
|||
private val clock: Clock,
|
||||
) : MatrixRealmMigration(
|
||||
dbName = "Crypto",
|
||||
schemaVersion = 18L,
|
||||
schemaVersion = 19L,
|
||||
) {
|
||||
/**
|
||||
* Forces all RealmCryptoStoreMigration instances to be equal.
|
||||
|
@ -77,5 +78,6 @@ internal class RealmCryptoStoreMigration @Inject constructor(
|
|||
if (oldVersion < 16) MigrateCryptoTo016(realm).perform()
|
||||
if (oldVersion < 17) MigrateCryptoTo017(realm).perform()
|
||||
if (oldVersion < 18) MigrateCryptoTo018(realm).perform()
|
||||
if (oldVersion < 19) MigrateCryptoTo019(realm).perform()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* 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.crypto.store.db.migration
|
||||
|
||||
import io.realm.DynamicRealm
|
||||
import io.realm.DynamicRealmObject
|
||||
import org.matrix.android.sdk.api.session.crypto.crosssigning.KeyUsage
|
||||
import org.matrix.android.sdk.internal.crypto.store.db.model.CrossSigningInfoEntityFields
|
||||
import org.matrix.android.sdk.internal.crypto.store.db.model.KeyInfoEntityFields
|
||||
import org.matrix.android.sdk.internal.crypto.store.db.model.TrustLevelEntityFields
|
||||
import org.matrix.android.sdk.internal.util.database.RealmMigrator
|
||||
|
||||
/**
|
||||
* This migration is adding support for trusted flags on megolm sessions.
|
||||
* We can't really assert the trust of existing keys, so for the sake of simplicity we are going to
|
||||
* mark existing keys as safe.
|
||||
* This migration can take long depending on the account
|
||||
*/
|
||||
internal class MigrateCryptoTo019(realm: DynamicRealm) : RealmMigrator(realm, 18) {
|
||||
|
||||
override fun doMigrate(realm: DynamicRealm) {
|
||||
realm.schema.get("CrossSigningInfoEntity")
|
||||
?.addField(CrossSigningInfoEntityFields.WAS_USER_VERIFIED_ONCE, Boolean::class.java)
|
||||
?.transform { dynamicObject ->
|
||||
|
||||
val knowKeys = dynamicObject.getList(CrossSigningInfoEntityFields.CROSS_SIGNING_KEYS.`$`)
|
||||
val msk = knowKeys.firstOrNull {
|
||||
it.getList(KeyInfoEntityFields.USAGES.`$`, String::class.java).orEmpty().contains(KeyUsage.MASTER.value)
|
||||
}
|
||||
val ssk = knowKeys.firstOrNull {
|
||||
it.getList(KeyInfoEntityFields.USAGES.`$`, String::class.java).orEmpty().contains(KeyUsage.SELF_SIGNING.value)
|
||||
}
|
||||
val isTrusted = isDynamicKeyInfoTrusted(msk?.get<DynamicRealmObject>(KeyInfoEntityFields.TRUST_LEVEL_ENTITY.`$`)) &&
|
||||
isDynamicKeyInfoTrusted(ssk?.get<DynamicRealmObject>(KeyInfoEntityFields.TRUST_LEVEL_ENTITY.`$`))
|
||||
|
||||
dynamicObject.setBoolean(CrossSigningInfoEntityFields.WAS_USER_VERIFIED_ONCE, isTrusted)
|
||||
}
|
||||
}
|
||||
|
||||
private fun isDynamicKeyInfoTrusted(keyInfo: DynamicRealmObject?): Boolean {
|
||||
if (keyInfo == null) return false
|
||||
return !keyInfo.isNull(TrustLevelEntityFields.CROSS_SIGNED_VERIFIED) && keyInfo.getBoolean(TrustLevelEntityFields.CROSS_SIGNED_VERIFIED) &&
|
||||
!keyInfo.isNull(TrustLevelEntityFields.LOCALLY_VERIFIED) && keyInfo.getBoolean(TrustLevelEntityFields.LOCALLY_VERIFIED)
|
||||
}
|
||||
}
|
|
@ -25,6 +25,7 @@ import org.matrix.android.sdk.internal.extensions.clearWith
|
|||
internal open class CrossSigningInfoEntity(
|
||||
@PrimaryKey
|
||||
var userId: String? = null,
|
||||
var wasUserVerifiedOnce: Boolean = false,
|
||||
var crossSigningKeys: RealmList<KeyInfoEntity> = RealmList()
|
||||
) : RealmObject() {
|
||||
|
||||
|
|
|
@ -70,6 +70,7 @@ const signOff = "Signed-off-by:"
|
|||
|
||||
// Please add new names following the alphabetical order.
|
||||
const allowList = [
|
||||
"amitkma",
|
||||
"aringenbach",
|
||||
"BillCarsonFr",
|
||||
"bmarty",
|
||||
|
|
|
@ -410,7 +410,7 @@ dependencies {
|
|||
androidTestImplementation libs.mockk.mockkAndroid
|
||||
androidTestUtil libs.androidx.orchestrator
|
||||
androidTestImplementation libs.androidx.fragmentTesting
|
||||
androidTestImplementation "org.jetbrains.kotlin:kotlin-reflect:1.7.10"
|
||||
androidTestImplementation "org.jetbrains.kotlin:kotlin-reflect:1.7.20"
|
||||
debugImplementation libs.androidx.fragmentTesting
|
||||
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
|
||||
}
|
||||
|
|
|
@ -34,18 +34,18 @@ class RoomSettingsRobot {
|
|||
|
||||
fun crawl() {
|
||||
// Room settings
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 3)
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 4)
|
||||
navigateToRoomParameters()
|
||||
pressBack()
|
||||
|
||||
// Notifications
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 5)
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 6)
|
||||
pressBack()
|
||||
|
||||
assertDisplayed(R.id.roomProfileAvatarView)
|
||||
|
||||
// People
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 7)
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 8)
|
||||
assertDisplayed(R.id.inviteUsersButton)
|
||||
navigateToRoomPeople()
|
||||
// Fab
|
||||
|
@ -56,7 +56,7 @@ class RoomSettingsRobot {
|
|||
assertDisplayed(R.id.roomProfileAvatarView)
|
||||
|
||||
// Uploads
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 9)
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 10)
|
||||
// File tab
|
||||
clickOn(R.string.uploads_files_title)
|
||||
waitUntilViewVisible(withText(R.string.uploads_media_title))
|
||||
|
@ -73,12 +73,12 @@ class RoomSettingsRobot {
|
|||
// Advanced
|
||||
// Room addresses
|
||||
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 15)
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 16)
|
||||
waitUntilViewVisible(withText(R.string.room_alias_published_alias_title))
|
||||
pressBack()
|
||||
|
||||
// Room permissions
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 17)
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 18)
|
||||
waitUntilViewVisible(withText(R.string.room_permissions_change_room_avatar))
|
||||
clickOn(R.string.room_permissions_change_room_avatar)
|
||||
waitUntilDialogVisible(withId(android.R.id.button2))
|
||||
|
@ -95,7 +95,7 @@ class RoomSettingsRobot {
|
|||
}
|
||||
|
||||
private fun leaveRoom(block: DialogRobot.() -> Unit) {
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 13)
|
||||
clickListItem(R.id.matrixProfileRecyclerView, 14)
|
||||
waitUntilDialogVisible(withId(android.R.id.button2))
|
||||
val dialogRobot = DialogRobot()
|
||||
block(dialogRobot)
|
||||
|
|
|
@ -90,6 +90,11 @@ class DebugFeaturesStateFactory @Inject constructor(
|
|||
key = DebugFeatureKeys.newDeviceManagementEnabled,
|
||||
factory = VectorFeatures::isNewDeviceManagementEnabled
|
||||
),
|
||||
createBooleanFeature(
|
||||
label = "Enable Voice Broadcast",
|
||||
key = DebugFeatureKeys.voiceBroadcastEnabled,
|
||||
factory = VectorFeatures::isVoiceBroadcastEnabled
|
||||
),
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -79,6 +79,9 @@ class DebugVectorFeatures(
|
|||
override fun isNewDeviceManagementEnabled(): Boolean = read(DebugFeatureKeys.newDeviceManagementEnabled)
|
||||
?: vectorFeatures.isNewDeviceManagementEnabled()
|
||||
|
||||
override fun isVoiceBroadcastEnabled(): Boolean = read(DebugFeatureKeys.voiceBroadcastEnabled)
|
||||
?: vectorFeatures.isVoiceBroadcastEnabled()
|
||||
|
||||
fun <T> override(value: T?, key: Preferences.Key<T>) = updatePreferences {
|
||||
if (value == null) {
|
||||
it.remove(key)
|
||||
|
@ -140,4 +143,5 @@ object DebugFeatureKeys {
|
|||
val startDmOnFirstMsg = booleanPreferencesKey("start-dm-on-first-msg")
|
||||
val newAppLayoutEnabled = booleanPreferencesKey("new-app-layout-enabled")
|
||||
val newDeviceManagementEnabled = booleanPreferencesKey("new-device-management-enabled")
|
||||
val voiceBroadcastEnabled = booleanPreferencesKey("voice-broadcast-enabled")
|
||||
}
|
||||
|
|
|
@ -27,9 +27,9 @@ sealed interface Analytics {
|
|||
object Disabled : Analytics
|
||||
|
||||
/**
|
||||
* Analytics integration via PostHog.
|
||||
* Analytics integration via PostHog and Sentry.
|
||||
*/
|
||||
data class PostHog(
|
||||
data class Enabled(
|
||||
/**
|
||||
* The PostHog instance url.
|
||||
*/
|
||||
|
@ -44,5 +44,15 @@ sealed interface Analytics {
|
|||
* A URL to more information about the analytics collection.
|
||||
*/
|
||||
val policyLink: String,
|
||||
|
||||
/**
|
||||
* The Sentry DSN url.
|
||||
*/
|
||||
val sentryDSN: String,
|
||||
|
||||
/**
|
||||
* Environment for Sentry.
|
||||
*/
|
||||
val sentryEnvironment: String
|
||||
) : Analytics
|
||||
}
|
||||
|
|
|
@ -68,25 +68,29 @@ object Config {
|
|||
* The analytics configuration to use for the Debug build type.
|
||||
* Can be disabled by providing Analytics.Disabled
|
||||
*/
|
||||
val DEBUG_ANALYTICS_CONFIG = Analytics.PostHog(
|
||||
val DEBUG_ANALYTICS_CONFIG = Analytics.Enabled(
|
||||
postHogHost = "https://posthog.element.dev",
|
||||
postHogApiKey = "phc_VtA1L35nw3aeAtHIx1ayrGdzGkss7k1xINeXcoIQzXN",
|
||||
policyLink = "https://element.io/cookie-policy",
|
||||
sentryDSN = "https://f6acc9cfc2024641b28c87ad95e73e66@sentry.tools.element.io/49",
|
||||
sentryEnvironment = "DEBUG"
|
||||
)
|
||||
|
||||
/**
|
||||
* The analytics configuration to use for the Release build type.
|
||||
* Can be disabled by providing Analytics.Disabled
|
||||
*/
|
||||
val RELEASE_ANALYTICS_CONFIG = Analytics.PostHog(
|
||||
val RELEASE_ANALYTICS_CONFIG = Analytics.Enabled(
|
||||
postHogHost = "https://posthog.hss.element.io",
|
||||
postHogApiKey = "phc_Jzsm6DTm6V2705zeU5dcNvQDlonOR68XvX2sh1sEOHO",
|
||||
policyLink = "https://element.io/cookie-policy",
|
||||
sentryDSN = "https://f6acc9cfc2024641b28c87ad95e73e66@sentry.tools.element.io/49",
|
||||
sentryEnvironment = "RELEASE"
|
||||
)
|
||||
|
||||
/**
|
||||
* The analytics configuration to use for the Nightly build type.
|
||||
* Can be disabled by providing Analytics.Disabled
|
||||
*/
|
||||
val NIGHTLY_ANALYTICS_CONFIG = RELEASE_ANALYTICS_CONFIG
|
||||
val NIGHTLY_ANALYTICS_CONFIG = RELEASE_ANALYTICS_CONFIG.copy(sentryEnvironment = "NIGHTLY")
|
||||
}
|
||||
|
|
|
@ -183,6 +183,7 @@ dependencies {
|
|||
}
|
||||
implementation libs.markwon.core
|
||||
implementation libs.markwon.extLatex
|
||||
implementation libs.markwon.imageGlide
|
||||
implementation libs.markwon.inlineParser
|
||||
implementation libs.markwon.html
|
||||
implementation 'com.googlecode.htmlcompressor:htmlcompressor:1.5.2'
|
||||
|
@ -230,6 +231,7 @@ dependencies {
|
|||
implementation('com.posthog.android:posthog:1.1.2') {
|
||||
exclude group: 'com.android.support', module: 'support-annotations'
|
||||
}
|
||||
implementation libs.sentry.sentryAndroid
|
||||
|
||||
// UnifiedPush
|
||||
implementation 'com.github.UnifiedPush:android-connector:2.1.0'
|
||||
|
@ -289,6 +291,7 @@ dependencies {
|
|||
testImplementation libs.tests.junit
|
||||
testImplementation libs.tests.kluent
|
||||
testImplementation libs.mockk.mockk
|
||||
testImplementation libs.androidx.coreTesting
|
||||
// Plant Timber tree for test
|
||||
testImplementation libs.tests.timberJunitRule
|
||||
testImplementation libs.airbnb.mavericksTesting
|
||||
|
@ -317,5 +320,5 @@ dependencies {
|
|||
androidTestImplementation libs.mockk.mockkAndroid
|
||||
androidTestUtil libs.androidx.orchestrator
|
||||
debugImplementation libs.androidx.fragmentTesting
|
||||
androidTestImplementation "org.jetbrains.kotlin:kotlin-reflect:1.7.10"
|
||||
androidTestImplementation "org.jetbrains.kotlin:kotlin-reflect:1.7.20"
|
||||
}
|
||||
|
|
|
@ -0,0 +1,128 @@
|
|||
/*
|
||||
* Copyright (c) 2022 New Vector Ltd
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package im.vector.app.features
|
||||
|
||||
import com.airbnb.mvrx.Success
|
||||
import im.vector.app.core.epoxy.profiles.ProfileMatrixItemWithPowerLevelWithPresence
|
||||
import im.vector.app.features.roomprofile.members.RoomMemberListCategories
|
||||
import im.vector.app.features.roomprofile.members.RoomMemberListController
|
||||
import im.vector.app.features.roomprofile.members.RoomMemberListViewState
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.amshove.kluent.shouldBeEqualTo
|
||||
import org.junit.Test
|
||||
import org.matrix.android.sdk.api.session.crypto.model.UserVerificationLevel
|
||||
import org.matrix.android.sdk.api.session.room.model.Membership
|
||||
import org.matrix.android.sdk.api.session.room.model.RoomMemberSummary
|
||||
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||
import kotlin.coroutines.resume
|
||||
import kotlin.coroutines.suspendCoroutine
|
||||
|
||||
class RoomMemberListControllerTest {
|
||||
|
||||
@Test
|
||||
fun testControllerUserVerificationLevel() = runTest {
|
||||
val roomListController = RoomMemberListController(
|
||||
avatarRenderer = mockk {
|
||||
},
|
||||
stringProvider = mockk {
|
||||
every { getString(any()) } answers {
|
||||
this.args[0].toString()
|
||||
}
|
||||
},
|
||||
colorProvider = mockk {
|
||||
every { getColorFromAttribute(any()) } returns 0x0
|
||||
},
|
||||
roomMemberSummaryFilter = mockk(relaxed = true) {
|
||||
every { test(any()) } returns true
|
||||
}
|
||||
)
|
||||
|
||||
val fakeRoomSummary = RoomSummary(
|
||||
roomId = "!roomId",
|
||||
displayName = "Fake Room",
|
||||
topic = "A topic",
|
||||
isEncrypted = true,
|
||||
encryptionEventTs = 0,
|
||||
typingUsers = emptyList(),
|
||||
)
|
||||
|
||||
val state = RoomMemberListViewState(
|
||||
roomId = "!roomId",
|
||||
roomSummary = Success(fakeRoomSummary),
|
||||
areAllMembersLoaded = true,
|
||||
roomMemberSummaries = Success(
|
||||
listOf(
|
||||
RoomMemberListCategories.USER to listOf(
|
||||
RoomMemberSummary(
|
||||
membership = Membership.JOIN,
|
||||
userId = "@alice:example.com"
|
||||
),
|
||||
RoomMemberSummary(
|
||||
membership = Membership.JOIN,
|
||||
userId = "@bob:example.com"
|
||||
),
|
||||
RoomMemberSummary(
|
||||
membership = Membership.JOIN,
|
||||
userId = "@carl:example.com"
|
||||
),
|
||||
RoomMemberSummary(
|
||||
membership = Membership.JOIN,
|
||||
userId = "@massy:example.com"
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
trustLevelMap = Success(
|
||||
mapOf(
|
||||
"@alice:example.com" to UserVerificationLevel.UNVERIFIED_BUT_WAS_PREVIOUSLY,
|
||||
"@bob:example.com" to UserVerificationLevel.VERIFIED_ALL_DEVICES_TRUSTED,
|
||||
"@carl:example.com" to UserVerificationLevel.WAS_NEVER_VERIFIED,
|
||||
"@massy:example.com" to UserVerificationLevel.VERIFIED_WITH_DEVICES_UNTRUSTED,
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
suspendCoroutine { continuation ->
|
||||
roomListController.setData(state)
|
||||
roomListController.addModelBuildListener {
|
||||
continuation.resume(it)
|
||||
}
|
||||
}
|
||||
|
||||
val models = roomListController.adapter.copyOfModels
|
||||
|
||||
val profileItems = models.filterIsInstance<ProfileMatrixItemWithPowerLevelWithPresence>()
|
||||
|
||||
profileItems.firstOrNull {
|
||||
it.matrixItem.id == "@alice:example.com"
|
||||
}!!.userVerificationLevel shouldBeEqualTo UserVerificationLevel.UNVERIFIED_BUT_WAS_PREVIOUSLY
|
||||
|
||||
profileItems.firstOrNull {
|
||||
it.matrixItem.id == "@bob:example.com"
|
||||
}!!.userVerificationLevel shouldBeEqualTo UserVerificationLevel.VERIFIED_ALL_DEVICES_TRUSTED
|
||||
|
||||
profileItems.firstOrNull {
|
||||
it.matrixItem.id == "@carl:example.com"
|
||||
}!!.userVerificationLevel shouldBeEqualTo UserVerificationLevel.WAS_NEVER_VERIFIED
|
||||
|
||||
profileItems.firstOrNull {
|
||||
it.matrixItem.id == "@massy:example.com"
|
||||
}!!.userVerificationLevel shouldBeEqualTo UserVerificationLevel.VERIFIED_WITH_DEVICES_UNTRUSTED
|
||||
}
|
||||
}
|
|
@ -18,6 +18,7 @@ package im.vector.app.features.html
|
|||
|
||||
import androidx.core.text.toSpannable
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import im.vector.app.core.di.ActiveSessionHolder
|
||||
import im.vector.app.core.resources.ColorProvider
|
||||
import im.vector.app.core.utils.toTestSpan
|
||||
import im.vector.app.features.settings.VectorPreferences
|
||||
|
@ -36,11 +37,13 @@ class EventHtmlRendererTest {
|
|||
private val fakeVectorPreferences = mockk<VectorPreferences>().also {
|
||||
every { it.latexMathsIsEnabled() } returns false
|
||||
}
|
||||
private val fakeSessionHolder = mockk<ActiveSessionHolder>()
|
||||
|
||||
private val renderer = EventHtmlRenderer(
|
||||
MatrixHtmlPluginConfigure(ColorProvider(context), context.resources),
|
||||
context,
|
||||
fakeVectorPreferences
|
||||
fakeVectorPreferences,
|
||||
fakeSessionHolder,
|
||||
)
|
||||
|
||||
@Test
|
||||
|
|
|
@ -35,14 +35,6 @@
|
|||
<!-- To be able to install APK from the application -->
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
|
||||
<!-- Jitsi libs adds CALENDAR permissions, but we can remove them safely according to https://github.com/jitsi/jitsi-meet/issues/4068#issuecomment-480482481 -->
|
||||
<uses-permission
|
||||
android:name="android.permission.READ_CALENDAR"
|
||||
tools:node="remove" />
|
||||
<uses-permission
|
||||
android:name="android.permission.WRITE_CALENDAR"
|
||||
tools:node="remove" />
|
||||
|
||||
<!-- Location Sharing -->
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
|
@ -77,6 +69,9 @@
|
|||
|
||||
<application android:supportsRtl="true">
|
||||
|
||||
<!-- Sentry auto-initialization disable -->
|
||||
<meta-data android:name="io.sentry.auto-init" android:value="false" />
|
||||
|
||||
<!-- No limit for screen ratio: avoid black strips -->
|
||||
<meta-data
|
||||
android:name="android.max_aspect"
|
||||
|
|
|
@ -22,6 +22,7 @@ import im.vector.app.core.di.ActiveSessionHolder
|
|||
import im.vector.app.core.utils.BehaviorDataSource
|
||||
import im.vector.app.features.analytics.AnalyticsTracker
|
||||
import im.vector.app.features.analytics.plan.UserProperties
|
||||
import im.vector.app.features.analytics.plan.ViewRoom
|
||||
import im.vector.app.features.session.coroutineScope
|
||||
import im.vector.app.features.settings.VectorPreferences
|
||||
import im.vector.app.features.ui.UiStateRepository
|
||||
|
@ -82,6 +83,13 @@ class SpaceStateHandlerImpl @Inject constructor(
|
|||
return
|
||||
}
|
||||
|
||||
analyticsTracker.capture(
|
||||
ViewRoom(
|
||||
isDM = false,
|
||||
isSpace = true,
|
||||
)
|
||||
)
|
||||
|
||||
if (isForwardNavigation) {
|
||||
addToBackstack(spaceToLeave, spaceToSet)
|
||||
}
|
||||
|
|
|
@ -44,12 +44,14 @@ object ConfigurationModule {
|
|||
else -> throw IllegalStateException("Unhandled build type: ${BuildConfig.BUILD_TYPE}")
|
||||
}
|
||||
return when (config) {
|
||||
Analytics.Disabled -> AnalyticsConfig(isEnabled = false, "", "", "")
|
||||
is Analytics.PostHog -> AnalyticsConfig(
|
||||
Analytics.Disabled -> AnalyticsConfig(isEnabled = false, "", "", "", "", "")
|
||||
is Analytics.Enabled -> AnalyticsConfig(
|
||||
isEnabled = true,
|
||||
postHogHost = config.postHogHost,
|
||||
postHogApiKey = config.postHogApiKey,
|
||||
policyLink = config.policyLink
|
||||
policyLink = config.policyLink,
|
||||
sentryDSN = config.sentryDSN,
|
||||
sentryEnvironment = config.sentryEnvironment
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -89,6 +89,7 @@ import im.vector.app.features.settings.crosssigning.CrossSigningSettingsViewMode
|
|||
import im.vector.app.features.settings.devices.DeviceVerificationInfoBottomSheetViewModel
|
||||
import im.vector.app.features.settings.devices.DevicesViewModel
|
||||
import im.vector.app.features.settings.devices.v2.details.SessionDetailsViewModel
|
||||
import im.vector.app.features.settings.devices.v2.more.SessionLearnMoreViewModel
|
||||
import im.vector.app.features.settings.devices.v2.othersessions.OtherSessionsViewModel
|
||||
import im.vector.app.features.settings.devices.v2.overview.SessionOverviewViewModel
|
||||
import im.vector.app.features.settings.devices.v2.rename.RenameSessionViewModel
|
||||
|
@ -659,4 +660,9 @@ interface MavericksViewModelModule {
|
|||
@IntoMap
|
||||
@MavericksViewModelKey(RenameSessionViewModel::class)
|
||||
fun renameSessionViewModelFactory(factory: RenameSessionViewModel.Factory): MavericksAssistedViewModelFactory<*, *>
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
@MavericksViewModelKey(SessionLearnMoreViewModel::class)
|
||||
fun sessionLearnMoreViewModelFactory(factory: SessionLearnMoreViewModel.Factory): MavericksAssistedViewModelFactory<*, *>
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ import im.vector.app.core.epoxy.onClick
|
|||
import im.vector.app.core.extensions.setTextOrHide
|
||||
import im.vector.app.features.displayname.getBestName
|
||||
import im.vector.app.features.home.AvatarRenderer
|
||||
import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel
|
||||
import org.matrix.android.sdk.api.session.crypto.model.UserVerificationLevel
|
||||
import org.matrix.android.sdk.api.util.MatrixItem
|
||||
|
||||
abstract class BaseProfileMatrixItem<T : ProfileMatrixItem.Holder>(@LayoutRes layoutId: Int) : VectorEpoxyModel<T>(layoutId) {
|
||||
|
@ -35,7 +35,7 @@ abstract class BaseProfileMatrixItem<T : ProfileMatrixItem.Holder>(@LayoutRes la
|
|||
@EpoxyAttribute var editable: Boolean = true
|
||||
|
||||
@EpoxyAttribute
|
||||
var userEncryptionTrustLevel: RoomEncryptionTrustLevel? = null
|
||||
var userVerificationLevel: UserVerificationLevel? = null
|
||||
|
||||
@EpoxyAttribute(EpoxyAttribute.Option.DoNotHash)
|
||||
var clickListener: ClickListener? = null
|
||||
|
@ -53,6 +53,6 @@ abstract class BaseProfileMatrixItem<T : ProfileMatrixItem.Holder>(@LayoutRes la
|
|||
holder.subtitleView.setTextOrHide(matrixId)
|
||||
holder.editableView.isVisible = editable
|
||||
avatarRenderer.render(matrixItem, holder.avatarImageView)
|
||||
holder.avatarDecorationImageView.render(userEncryptionTrustLevel)
|
||||
holder.avatarDecorationImageView.renderUser(userVerificationLevel)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ import androidx.core.view.isVisible
|
|||
import im.vector.app.R
|
||||
import im.vector.app.features.home.room.detail.timeline.item.E2EDecoration
|
||||
import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel
|
||||
import org.matrix.android.sdk.api.session.crypto.model.UserVerificationLevel
|
||||
|
||||
class ShieldImageView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
|
@ -102,6 +103,35 @@ class ShieldImageView @JvmOverloads constructor(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun renderUser(userVerificationLevel: UserVerificationLevel?, borderLess: Boolean = false) {
|
||||
isVisible = userVerificationLevel != null
|
||||
when (userVerificationLevel) {
|
||||
UserVerificationLevel.VERIFIED_ALL_DEVICES_TRUSTED -> {
|
||||
contentDescription = context.getString(R.string.a11y_trust_level_trusted)
|
||||
setImageResource(
|
||||
if (borderLess) R.drawable.ic_shield_trusted_no_border
|
||||
else R.drawable.ic_shield_trusted
|
||||
)
|
||||
}
|
||||
UserVerificationLevel.UNVERIFIED_BUT_WAS_PREVIOUSLY,
|
||||
UserVerificationLevel.VERIFIED_WITH_DEVICES_UNTRUSTED -> {
|
||||
contentDescription = context.getString(R.string.a11y_trust_level_warning)
|
||||
setImageResource(
|
||||
if (borderLess) R.drawable.ic_shield_warning_no_border
|
||||
else R.drawable.ic_shield_warning
|
||||
)
|
||||
}
|
||||
UserVerificationLevel.WAS_NEVER_VERIFIED -> {
|
||||
contentDescription = context.getString(R.string.a11y_trust_level_default)
|
||||
setImageResource(
|
||||
if (borderLess) R.drawable.ic_shield_black_no_border
|
||||
else R.drawable.ic_shield_black
|
||||
)
|
||||
}
|
||||
null -> Unit
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DrawableRes
|
||||
|
|
|
@ -42,6 +42,7 @@ val PERMISSIONS_FOR_ROOM_AVATAR = listOf(Manifest.permission.CAMERA)
|
|||
val PERMISSIONS_FOR_WRITING_FILES = listOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
||||
val PERMISSIONS_FOR_PICKING_CONTACT = listOf(Manifest.permission.READ_CONTACTS)
|
||||
val PERMISSIONS_FOR_FOREGROUND_LOCATION_SHARING = listOf(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION)
|
||||
val PERMISSIONS_FOR_VOICE_BROADCAST = listOf(Manifest.permission.RECORD_AUDIO)
|
||||
|
||||
// This is not ideal to store the value like that, but it works
|
||||
private var permissionDialogDisplayed = false
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue