Merge branch 'develop' into feature-oled-black

This commit is contained in:
Timur Gilfanov 2026-04-14 10:13:46 +04:00 committed by GitHub
commit f7cfa6cda8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
428 changed files with 5680 additions and 2018 deletions

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_analytics_settings_help_us_improve">"問題発見のため、匿名の使用データの共有にご協力ください。"</string>
<string name="screen_analytics_settings_read_terms">"利用規約の全文を%1$sから確認することができます。"</string>
<string name="screen_analytics_settings_read_terms_content_link">"こちら"</string>
<string name="screen_analytics_settings_share_data">"使用データを共有"</string>
</resources>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_analytics_settings_help_us_improve">"Dalinkitės anoniminiais naudojimo duomenimis ir padėkite mums nustatyti problemas."</string>
<string name="screen_analytics_settings_help_us_improve">"Bendrinkite anoniminius naudojimo duomenis, kad padėtumėte mums nustatyti problemas."</string>
<string name="screen_analytics_settings_read_terms">"Galite perskaityti visas mūsų sąlygas %1$s."</string>
<string name="screen_analytics_settings_read_terms_content_link">"čia"</string>
<string name="screen_analytics_settings_share_data">"Dalytis analitiniais duomenimis"</string>
<string name="screen_analytics_settings_share_data">"Bendrinti analitinius duomenis"</string>
</resources>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_analytics_settings_help_us_improve">"Chia sẻ dữ liệu sử dụng ẩn danh để giúp chúng tôi xác định vấn đề."</string>
<string name="screen_analytics_settings_read_terms">"Bạn có thể xem tất cả điều khoản của chúng tôi tại %1$s"</string>
<string name="screen_analytics_settings_read_terms_content_link">"tại đây"</string>
<string name="screen_analytics_settings_share_data">"Chia sẻ dữ liệu phân tích"</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_analytics_prompt_data_usage">"いかなる個人情報も記録, 分析されることはありません"</string>
<string name="screen_analytics_prompt_help_us_improve">"問題発見のため、匿名の使用データの共有にご協力ください。"</string>
<string name="screen_analytics_prompt_read_terms">"利用規約の全文を%1$sから確認することができます。"</string>
<string name="screen_analytics_prompt_read_terms_content_link">"こちら"</string>
<string name="screen_analytics_prompt_settings">"いつでも設定は変更できます"</string>
<string name="screen_analytics_prompt_third_party_sharing">"情報が第三者に共有されることはありません"</string>
<string name="screen_analytics_prompt_title">"%1$s の改善にご協力ください"</string>
</resources>

View file

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_analytics_prompt_data_usage">"Mes nekaupsime ir neprofiliuosime jokių asmens duomenų"</string>
<string name="screen_analytics_prompt_help_us_improve">"Dalinkitės anoniminiais naudojimo duomenimis ir padėkite mums nustatyti problemas."</string>
<string name="screen_analytics_prompt_data_usage">"Mes neįrašysime ar neprofiliuosime jokių asmeninių duomenų."</string>
<string name="screen_analytics_prompt_help_us_improve">"Bendrinkite anoniminius naudojimo duomenis, kad padėtumėte mums nustatyti problemas."</string>
<string name="screen_analytics_prompt_read_terms">"Galite perskaityti visas mūsų sąlygas %1$s."</string>
<string name="screen_analytics_prompt_read_terms_content_link">"čia"</string>
<string name="screen_analytics_prompt_settings">"Tai galite bet kada išjungti"</string>
<string name="screen_analytics_prompt_third_party_sharing">"Mes nesidalinsime Jūsų duomenimis su trečiosiomis šalimis"</string>
<string name="screen_analytics_prompt_title">"Padėkite pagerinti %1$s"</string>
<string name="screen_analytics_prompt_settings">"Tai galite išjungti bet kuriuo metu."</string>
<string name="screen_analytics_prompt_third_party_sharing">"Mes nebendrinsime jūsų duomenų su trečiosiomis šalimis."</string>
<string name="screen_analytics_prompt_title">"Padėkite patobulinti „%1$s“"</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_analytics_prompt_data_usage">"Chúng tôi sẽ không ghi lại hoặc lập hồ sơ bất kỳ dữ liệu cá nhân nào."</string>
<string name="screen_analytics_prompt_help_us_improve">"Chia sẻ dữ liệu sử dụng ẩn danh để giúp chúng tôi xác định vấn đề."</string>
<string name="screen_analytics_prompt_read_terms">"Bạn có thể xem tất cả điều khoản của chúng tôi tại %1$s"</string>
<string name="screen_analytics_prompt_read_terms_content_link">"tại đây"</string>
<string name="screen_analytics_prompt_settings">"Bạn có thể tắt tính năng này bất cứ lúc nào"</string>
<string name="screen_analytics_prompt_third_party_sharing">"Chúng tôi sẽ không chia sẻ dữ liệu của bạn với bên thứ ba."</string>
<string name="screen_analytics_prompt_title">"Giúp cải thiện %1$s"</string>
</resources>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_space_announcement_item1">"作成または参加したスペースを表示できます"</string>
<string name="screen_space_announcement_item2">"スペースへの招待を受諾または拒否できます"</string>
<string name="screen_space_announcement_item3">"スペース内の参加可能なルームを検索できます"</string>
<string name="screen_space_announcement_item4">"公開スペースに参加できます"</string>
<string name="screen_space_announcement_item5">"参加したスペースを退出できます"</string>
<string name="screen_space_announcement_notice">"スペースの作成や管理, フィルター検索は近日実装予定です。"</string>
<string name="screen_space_announcement_subtitle">"ベータ版のスペースにようこそ。この最新のバージョンでは:"</string>
<string name="screen_space_announcement_title">"スペースの紹介"</string>
</resources>

View file

@ -6,6 +6,6 @@
<string name="screen_space_announcement_item4">"加入公共空间"</string>
<string name="screen_space_announcement_item5">"离开你加入的所有空间"</string>
<string name="screen_space_announcement_notice">"筛选、创建及管理空间功能即将上线。"</string>
<string name="screen_space_announcement_subtitle">"欢迎使用 Spaces 测试版!使用首个版本,您可以:"</string>
<string name="screen_space_announcement_title">"Spaces 简介"</string>
<string name="screen_space_announcement_subtitle">"欢迎使用空间测试版!使用首个版本,您可以:"</string>
<string name="screen_space_announcement_title">"空间简介"</string>
</resources>

View file

@ -73,7 +73,7 @@ dependencies {
implementation(projects.libraries.core)
implementation(projects.libraries.designsystem)
implementation(projects.libraries.featureflag.api)
implementation(projects.libraries.matrix.impl)
implementation(projects.libraries.matrix.api)
implementation(projects.libraries.matrixmedia.api)
implementation(projects.libraries.network)
implementation(projects.libraries.preferences.api)

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="call_foreground_service_channel_title_android">"通話中"</string>
<string name="call_foreground_service_message_android">"タップして通話に戻る"</string>
<string name="call_foreground_service_title_android">"☎️ 通話中"</string>
<string name="call_invalid_audio_device_bluetooth_devices_disabled">"Element CallはこのAndroidバージョンにおいて、Bluetoothオーディオデバイスの使用をサポートしていません。別のオーディオデバイスを選択してください。"</string>
<string name="screen_incoming_call_subtitle_android">"Element Call の着信"</string>
</resources>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="call_foreground_service_channel_title_android">"Cuộc gọi đang diễn ra"</string>
<string name="call_foreground_service_message_android">"Nhấn để quay lại cuộc gọi."</string>
<string name="call_foreground_service_title_android">"☎️ Cuộc gọi đang diễn ra"</string>
<string name="call_invalid_audio_device_bluetooth_devices_disabled">"Ứng dụng Element Call không hỗ trợ sử dụng thiết bị âm thanh Bluetooth trên phiên bản Android này. Vui lòng chọn thiết bị âm thanh khác."</string>
<string name="screen_incoming_call_subtitle_android">"Cuộc gọi Element đến"</string>
</resources>

View file

@ -6,9 +6,8 @@
* Please see LICENSE files in the repository root for full details.
*/
package io.element.android.features.call.test
package io.element.android.features.call.impl.notifications
import io.element.android.features.call.impl.notifications.CallNotificationData
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.SessionId

View file

@ -15,11 +15,11 @@ import androidx.test.platform.app.InstrumentationRegistry
import com.google.common.truth.Truth.assertThat
import io.element.android.features.call.api.CallType
import io.element.android.features.call.impl.notifications.RingingCallNotificationCreator
import io.element.android.features.call.impl.notifications.aCallNotificationData
import io.element.android.features.call.impl.utils.ActiveCall
import io.element.android.features.call.impl.utils.CallState
import io.element.android.features.call.impl.utils.DefaultActiveCallManager
import io.element.android.features.call.impl.utils.DefaultCurrentCallService
import io.element.android.features.call.test.aCallNotificationData
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.SessionId

View file

@ -20,7 +20,6 @@ dependencies {
implementation(projects.libraries.core)
api(projects.features.call.api)
implementation(projects.features.call.impl)
implementation(projects.libraries.matrix.api)
implementation(projects.libraries.matrix.test)
implementation(projects.tests.testutils)

View file

@ -39,7 +39,6 @@ dependencies {
implementation(projects.libraries.mediaupload.api)
implementation(projects.libraries.permissions.api)
implementation(projects.libraries.previewutils)
implementation(projects.libraries.usersearch.impl)
implementation(projects.services.analytics.api)
implementation(libs.coil.compose)
implementation(projects.libraries.featureflag.api)
@ -52,7 +51,6 @@ dependencies {
testImplementation(projects.libraries.mediapickers.test)
testImplementation(projects.libraries.mediaupload.test)
testImplementation(projects.libraries.permissions.test)
testImplementation(projects.libraries.usersearch.test)
testImplementation(projects.features.startchat.test)
testImplementation(projects.libraries.featureflag.test)
}

View file

@ -84,7 +84,6 @@ class ConfigureRoomPresenter(
@Composable
override fun present(): ConfigureRoomState {
val canAddRoomToSpace by featureFlagService.isFeatureEnabledFlow(FeatureFlags.CreateSpaces).collectAsState(false)
val cameraPermissionState = cameraPermissionPresenter.present()
val createRoomConfig by dataStore.getCreateRoomConfigFlow().collectAsState()
val homeserverName = remember { matrixClient.userIdServerName() }
@ -113,12 +112,8 @@ class ConfigureRoomPresenter(
}
var spaces by remember { mutableStateOf<ImmutableList<SpaceRoom>>(persistentListOf()) }
LaunchedEffect(canAddRoomToSpace) {
spaces = if (canAddRoomToSpace) {
matrixClient.spaceService.editableSpaces().getOrElse { emptyList() }.toImmutableList()
} else {
persistentListOf()
}
LaunchedEffect(Unit) {
spaces = matrixClient.spaceService.editableSpaces().getOrElse { emptyList() }.toImmutableList()
val parentSpace = spaces.find { it.roomId == initialParentSpaceId }
parentSpace?.let {
dataStore.setParentSpace(parentSpace = parentSpace, updateVisibility = true)

View file

@ -3,14 +3,34 @@
<string name="screen_create_room_action_create_room">"Nuova stanza"</string>
<string name="screen_create_room_add_people_title">"Invita persone"</string>
<string name="screen_create_room_error_creating_room">"Si è verificato un errore durante la creazione della stanza"</string>
<string name="screen_create_room_private_option_description">"Solo le persone invitate possono accedere a questa stanza. Tutti i messaggi sono cifrati end-to-end."</string>
<string name="screen_create_room_error_creating_space">"Non è stato possibile creare lo spazio a causa di un errore sconosciuto. Riprova più tardi."</string>
<string name="screen_create_room_name_placeholder">"Aggiungi nome…"</string>
<string name="screen_create_room_new_room_title">"Nuova stanza"</string>
<string name="screen_create_room_new_space_title">"Nuovo spazio"</string>
<string name="screen_create_room_private_option_description">"Possono partecipare solo le persone invitate."</string>
<string name="screen_create_room_private_option_title">"Privato"</string>
<string name="screen_create_room_public_option_description">"Chiunque può trovare questa stanza.
Puoi modificarlo in qualsiasi momento nelle impostazioni della stanza."</string>
<string name="screen_create_room_room_access_section_knocking_option_description">"Chiunque può chiedere di entrare nella stanza, ma un amministratore o un moderatore dovrà accettare la richiesta"</string>
<string name="screen_create_room_room_access_section_knocking_option_title">"Chiedi di entrare"</string>
<string name="screen_create_room_room_access_section_public_option_description">"Chiunque può entrare in questa stanza"</string>
<string name="screen_create_room_room_address_section_footer">"Affinché questa stanza sia visibile nell\'elenco delle stanze pubbliche, è necessario un indirizzo della stanza."</string>
<string name="screen_create_room_room_address_section_title">"Indirizzo della stanza"</string>
<string name="screen_create_room_public_option_short_description">"Chiunque può partecipare."</string>
<string name="screen_create_room_public_option_title">"Pubblico"</string>
<string name="screen_create_room_room_access_section_knocking_option_description">"Chiunque può chiedere di partecipare, ma un amministratore o un moderatore deve accettare la richiesta."</string>
<string name="screen_create_room_room_access_section_knocking_option_title">"Consenti di chiedere di partecipare"</string>
<string name="screen_create_room_room_access_section_knocking_restricted_option_description">"Chiunque sia membro di %1$s può partecipare, mentre tutti gli altri devono richiedere l\'accesso."</string>
<string name="screen_create_room_room_access_section_knocking_restricted_option_title">"Richiedi accesso"</string>
<string name="screen_create_room_room_access_section_private_option_description">"Possono partecipare solo le persone invitate."</string>
<string name="screen_create_room_room_access_section_private_option_title">"Privato"</string>
<string name="screen_create_room_room_access_section_public_option_description">"Chiunque può partecipare."</string>
<string name="screen_create_room_room_access_section_public_option_title">"Pubblico"</string>
<string name="screen_create_room_room_access_section_restricted_option_description">"Chiunque in %1$s può unirsi."</string>
<string name="screen_create_room_room_access_section_restricted_option_title">"Standard"</string>
<string name="screen_create_room_room_access_section_title">"Chi ha accesso"</string>
<string name="screen_create_room_room_address_section_footer">"Avrai bisogno di un indirizzo per renderlo visibile nella directory pubblica."</string>
<string name="screen_create_room_room_address_section_title">"Indirizzo"</string>
<string name="screen_create_room_room_visibility_section_title">"Visibilità della stanza"</string>
<string name="screen_create_room_space_selection_no_space_description">"(nessuno spazio)"</string>
<string name="screen_create_room_space_selection_no_space_option">"Non aggiungere a uno spazio"</string>
<string name="screen_create_room_space_selection_no_space_title">"Nessuno spazio selezionato"</string>
<string name="screen_create_room_space_selection_sheet_title">"Aggiungi allo spazio"</string>
<string name="screen_create_room_topic_label">"Argomento (facoltativo)"</string>
<string name="screen_create_room_topic_placeholder">"Aggiungi descrizione…"</string>
</resources>

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_create_room_action_create_room">"新しいルーム"</string>
<string name="screen_create_room_add_people_title">"ユーザーを招待"</string>
<string name="screen_create_room_error_creating_room">"ルームの作成中に問題が発生しました"</string>
<string name="screen_create_room_error_creating_space">"不明な問題のためスペースを作成できませんでした。再度お試しください。"</string>
<string name="screen_create_room_name_placeholder">"名前を追加…"</string>
<string name="screen_create_room_new_room_title">"新しいルーム"</string>
<string name="screen_create_room_new_space_title">"新しいスペース"</string>
<string name="screen_create_room_private_option_description">"招待されたユーザーのみ参加できます。"</string>
<string name="screen_create_room_private_option_title">"非公開"</string>
<string name="screen_create_room_public_option_description">"ルームは全世界に公開されます。
ルーム設定でいつでも変更できます。"</string>
<string name="screen_create_room_public_option_short_description">"誰でも参加できます。"</string>
<string name="screen_create_room_public_option_title">"公開"</string>
<string name="screen_create_room_room_access_section_knocking_option_description">"誰でも参加できますが、管理者またはモデレーターの承認が必要です。"</string>
<string name="screen_create_room_room_access_section_knocking_option_title">"参加の要求を許可"</string>
<string name="screen_create_room_room_access_section_knocking_restricted_option_description">"%1$s にいる全員が参加することができますが、事前に参加の要求をする必要があります。"</string>
<string name="screen_create_room_room_access_section_knocking_restricted_option_title">"参加を要求"</string>
<string name="screen_create_room_room_access_section_private_option_description">"招待されたユーザーのみが参加できます。"</string>
<string name="screen_create_room_room_access_section_private_option_title">"非公開"</string>
<string name="screen_create_room_room_access_section_public_option_description">"誰でも参加できます。"</string>
<string name="screen_create_room_room_access_section_public_option_title">"公開"</string>
<string name="screen_create_room_room_access_section_restricted_option_description">"%1$s にいる全員が参加することができます。"</string>
<string name="screen_create_room_room_access_section_restricted_option_title">"スタンダード"</string>
<string name="screen_create_room_room_access_section_title">"参加できるユーザー"</string>
<string name="screen_create_room_room_address_section_footer">"公開ディレクトリで自分を見つけられるようにするには、アドレスが必要です。"</string>
<string name="screen_create_room_room_address_section_title">"アドレス"</string>
<string name="screen_create_room_room_visibility_section_title">"ルームの公開度"</string>
<string name="screen_create_room_space_selection_no_space_description">"(スペースなし)"</string>
<string name="screen_create_room_space_selection_no_space_option">"スペースに追加しない"</string>
<string name="screen_create_room_space_selection_no_space_title">"スペースが選択されていません"</string>
<string name="screen_create_room_space_selection_sheet_title">"スペースに追加"</string>
<string name="screen_create_room_topic_label">"トピック (任意)"</string>
<string name="screen_create_room_topic_placeholder">"説明を追加…"</string>
</resources>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_create_room_action_create_room">"Phòng mới"</string>
<string name="screen_create_room_add_people_title">"Mời ai đó"</string>
<string name="screen_create_room_error_creating_room">"Đã xảy ra lỗi khi tạo phòng."</string>
<string name="screen_create_room_private_option_description">"Chỉ những người được mời mới có thể tham gia."</string>
<string name="screen_create_room_public_option_description">"Bất kỳ ai cũng có thể tìm thấy phòng này.
Bạn có thể thay đổi cài đặt phòng bất cứ lúc nào."</string>
<string name="screen_create_room_topic_label">"Chủ đề (tùy chọn)"</string>
<string name="screen_create_room_topic_placeholder">"Thêm mô tả…"</string>
</resources>

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_deactivate_account_confirmation_dialog_content">"アカウントを無効化することを再度確認します。この操作は元に戻せません。"</string>
<string name="screen_deactivate_account_delete_all_messages">"メッセージをすべて削除"</string>
<string name="screen_deactivate_account_delete_all_messages_notice">"注意: 新しいユーザーには断片的な会話が表示されます"</string>
<string name="screen_deactivate_account_description">"アカウントを無効化することは %1$s であり、次の変化が生じます:"</string>
<string name="screen_deactivate_account_description_bold_part">"不可逆"</string>
<string name="screen_deactivate_account_list_item_1">"アカウントを %1$s (再度ログイン不可, 同一のIDを再利用不可)"</string>
<string name="screen_deactivate_account_list_item_1_bold_part">"恒久的に無効化する"</string>
<string name="screen_deactivate_account_list_item_2">"すべてのチャットルームから退出します。"</string>
<string name="screen_deactivate_account_list_item_3">"アカウント提供元サーバーからアカウント情報を削除します。"</string>
<string name="screen_deactivate_account_list_item_4">"あなたの会話は、既存ユーザーには引き続き表示されますが、新規ユーザーには表示されなくなります。"</string>
<string name="screen_deactivate_account_title">"アカウントを無効化"</string>
</resources>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_deactivate_account_delete_all_messages">"Xóa tất cả tin nhắn của tôi"</string>
<string name="screen_deactivate_account_delete_all_messages_notice">"Cảnh báo: Người dùng sau này có thể thấy các cuộc trò chuyện chưa hoàn chỉnh."</string>
<string name="screen_deactivate_account_list_item_4">"Tin nhắn của bạn vẫn sẽ hiển thị cho người dùng đã đăng ký nhưng sẽ không hiển thị cho người dùng mới hoặc chưa đăng ký nếu bạn chọn xóa chúng."</string>
<string name="screen_deactivate_account_title">"Vô hiệu hóa tài khoản"</string>
</resources>

View file

@ -2,8 +2,8 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_identity_confirmation_cannot_confirm">"Nemůžete potvrdit?"</string>
<string name="screen_identity_confirmation_create_new_recovery_key">"Vytvoření nového klíče pro obnovení"</string>
<string name="screen_identity_confirmation_subtitle">"Ověřte toto zařízení a nastavte zabezpečené zasílání zpráv."</string>
<string name="screen_identity_confirmation_title">"Potvrďte, že jste to vy"</string>
<string name="screen_identity_confirmation_subtitle">"Vyberte způsob ověření pro nastavení zabezpečeného zasílání zpráv."</string>
<string name="screen_identity_confirmation_title">"Potvrďte svou digitální identitu"</string>
<string name="screen_identity_confirmation_use_another_device">"Použít jiné zařízení"</string>
<string name="screen_identity_confirmation_use_recovery_key">"Použít klíč pro obnovení"</string>
<string name="screen_identity_confirmed_subtitle">"Nyní můžete bezpečně číst nebo odesílat zprávy, a kdokoli, s kým chatujete, může tomuto zařízení důvěřovat."</string>

View file

@ -2,8 +2,8 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_identity_confirmation_cannot_confirm">"Non puoi confermare?"</string>
<string name="screen_identity_confirmation_create_new_recovery_key">"Crea una nuova chiave di recupero"</string>
<string name="screen_identity_confirmation_subtitle">"Verifica questo dispositivo per segnare i tuoi messaggi come sicuri."</string>
<string name="screen_identity_confirmation_title">"Conferma la tua identità"</string>
<string name="screen_identity_confirmation_subtitle">"Scegli come effettuare la verifica per configurare la messaggistica sicura."</string>
<string name="screen_identity_confirmation_title">"Conferma la tua identità digitale"</string>
<string name="screen_identity_confirmation_use_another_device">"Usa un altro dispositivo"</string>
<string name="screen_identity_confirmation_use_recovery_key">"Usa la chiave di recupero"</string>
<string name="screen_identity_confirmed_subtitle">"Ora puoi leggere o inviare messaggi in tutta sicurezza e anche chi chatta con te può fidarsi di questo dispositivo."</string>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_identity_confirmation_cannot_confirm">"認証できませんか?"</string>
<string name="screen_identity_confirmation_create_new_recovery_key">"回復鍵を新規作成します"</string>
<string name="screen_identity_confirmation_subtitle">"安全なメッセージを設定するための検証方法を選択してください。"</string>
<string name="screen_identity_confirmation_title">"デジタルIDの認証"</string>
<string name="screen_identity_confirmation_use_another_device">"他の端末を使用"</string>
<string name="screen_identity_confirmation_use_recovery_key">"回復鍵を使用"</string>
<string name="screen_identity_confirmed_subtitle">"メッセージのやり取りを安全に行えるようになりました。他のユーザーはこの端末を信頼できます。"</string>
<string name="screen_identity_confirmed_title">"検証済みの端末"</string>
<string name="screen_identity_use_another_device">"他の端末を使用"</string>
<string name="screen_identity_waiting_on_other_device">"一方の端末を待機中…"</string>
<string name="screen_notification_optin_subtitle">"設定は後で変更することができます。"</string>
<string name="screen_notification_optin_title">"メッセージを見逃さないため通知を許可"</string>
</resources>

View file

@ -2,7 +2,7 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_identity_confirmation_cannot_confirm">"Не можете подтвердить?"</string>
<string name="screen_identity_confirmation_create_new_recovery_key">"Создайте новый ключ восстановления"</string>
<string name="screen_identity_confirmation_subtitle">"Подтвердите это устройство, чтобы настроить безопасный обмен сообщениями."</string>
<string name="screen_identity_confirmation_subtitle">"Выберите способ подтверждения для настройки защищенного обмена сообщениями."</string>
<string name="screen_identity_confirmation_title">"Подтвердите личность"</string>
<string name="screen_identity_confirmation_use_another_device">"Использовать другое устройство"</string>
<string name="screen_identity_confirmation_use_recovery_key">"Использовать ключ восстановления"</string>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_identity_confirmation_subtitle">"Chọn phương thức xác minh để bật nhắn tin bảo mật."</string>
<string name="screen_identity_confirmation_title">"Xác nhận danh tính kỹ thuật số của bạn"</string>
<string name="screen_identity_confirmed_subtitle">"Giờ đây bạn có thể đọc và gửi tin nhắn một cách an toàn, và những người bạn trò chuyện cũng có thể tin tưởng thiết bị này."</string>
<string name="screen_identity_confirmed_title">"Thiết bị được xác thực"</string>
<string name="screen_identity_waiting_on_other_device">"Đang chờ trên thiết bị khác…"</string>
<string name="screen_notification_optin_subtitle">"Bạn có thể thay đổi cài đặt sau."</string>
<string name="screen_notification_optin_title">"Cho phép thông báo để không bỏ lỡ bất kỳ tin nhắn nào"</string>
</resources>

View file

@ -2,8 +2,8 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_identity_confirmation_cannot_confirm">"无法确认?"</string>
<string name="screen_identity_confirmation_create_new_recovery_key">"创建新的恢复密钥"</string>
<string name="screen_identity_confirmation_subtitle">"验证此设备以开始安全地收发消息。"</string>
<string name="screen_identity_confirmation_title">"确认这是你"</string>
<string name="screen_identity_confirmation_subtitle">"选择验证方式以设置安全的消息传输。"</string>
<string name="screen_identity_confirmation_title">"确认您的数字身份"</string>
<string name="screen_identity_confirmation_use_another_device">"使用其他设备"</string>
<string name="screen_identity_confirmation_use_recovery_key">"使用恢复密钥"</string>
<string name="screen_identity_confirmed_subtitle">"现在,您可以安全地阅读或发送消息,与您聊天的人也会信任此设备。"</string>

View file

@ -94,12 +94,6 @@ class HomePresenter(
}
}
LaunchedEffect(homeSpacesState.canCreateSpaces, homeSpacesState.spaceRooms.isEmpty()) {
// If the flag to create spaces is disabled and the last space is left, ensure that the Chat view is rendered.
if (!homeSpacesState.canCreateSpaces && homeSpacesState.spaceRooms.isEmpty()) {
currentHomeNavigationBarItemOrdinal = HomeNavigationBarItem.Chats.ordinal
}
}
val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState()
return HomeState(
currentUserAndNeighbors = currentUserAndNeighbors,

View file

@ -34,5 +34,4 @@ data class HomeState(
) {
val isBackHandlerEnabled = currentHomeNavigationBarItem != HomeNavigationBarItem.Chats || roomListState.spaceFiltersState is SpaceFiltersState.Selected
val displayRoomListFilters = currentHomeNavigationBarItem == HomeNavigationBarItem.Chats && roomListState.displayFilters
val showNavigationBar = homeSpacesState.canCreateSpaces || homeSpacesState.spaceRooms.isNotEmpty()
}

View file

@ -199,50 +199,41 @@ private fun HomeScaffold(
)
},
floatingActionButton = {
if (state.showNavigationBar) {
val coroutineScope = rememberCoroutineScope()
HomeBottomBar(
currentHomeNavigationBarItem = state.currentHomeNavigationBarItem,
onItemClick = { item ->
// scroll to top if selecting the same item
if (item == state.currentHomeNavigationBarItem) {
val lazyListStateTarget = when (item) {
HomeNavigationBarItem.Chats -> roomsLazyListState
HomeNavigationBarItem.Spaces -> spacesLazyListState
}
coroutineScope.launch {
if (lazyListStateTarget.firstVisibleItemIndex > 10) {
lazyListStateTarget.scrollToItem(10)
}
// Also reset the scrollBehavior height offset as it's not triggered by programmatic scrolls
scrollBehavior.state.heightOffset = 0f
lazyListStateTarget.animateScrollToItem(0)
}
} else {
state.eventSink(HomeEvent.SelectHomeNavigationBarItem(item))
val coroutineScope = rememberCoroutineScope()
HomeBottomBar(
currentHomeNavigationBarItem = state.currentHomeNavigationBarItem,
onItemClick = { item ->
// scroll to top if selecting the same item
if (item == state.currentHomeNavigationBarItem) {
val lazyListStateTarget = when (item) {
HomeNavigationBarItem.Chats -> roomsLazyListState
HomeNavigationBarItem.Spaces -> spacesLazyListState
}
},
floatingActionButton = when (state.currentHomeNavigationBarItem) {
coroutineScope.launch {
if (lazyListStateTarget.firstVisibleItemIndex > 10) {
lazyListStateTarget.scrollToItem(10)
}
// Also reset the scrollBehavior height offset as it's not triggered by programmatic scrolls
scrollBehavior.state.heightOffset = 0f
lazyListStateTarget.animateScrollToItem(0)
}
} else {
state.eventSink(HomeEvent.SelectHomeNavigationBarItem(item))
}
},
floatingActionButton = {
when (state.currentHomeNavigationBarItem) {
HomeNavigationBarItem.Chats -> {
{
HomeFloatingActionButton(onStartChatClick, CommonStrings.action_create_room)
}
HomeFloatingActionButton(onStartChatClick, CommonStrings.action_create_room)
}
HomeNavigationBarItem.Spaces -> if (state.homeSpacesState.canCreateSpaces) {
{
HomeFloatingActionButton(onCreateSpaceClick, CommonStrings.action_create_space)
}
} else {
// No FAB for spaces if we cannot create spaces
null
HomeNavigationBarItem.Spaces -> {
HomeFloatingActionButton(onCreateSpaceClick, CommonStrings.action_create_space)
}
},
)
} else {
HomeFloatingActionButton(onStartChatClick, CommonStrings.action_create_room)
}
}
},
)
},
floatingActionButtonPosition = if (state.showNavigationBar) FabPosition.Center else FabPosition.End,
floatingActionButtonPosition = FabPosition.Center,
content = { padding ->
val contentPadding = PaddingValues(
bottom = 96.dp,

View file

@ -17,8 +17,6 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import dev.zacsweers.metro.Inject
import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.featureflag.api.FeatureFlagService
import io.element.android.libraries.featureflag.api.FeatureFlags
import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.spaces.SpaceServiceFilter
import kotlinx.collections.immutable.persistentListOf
@ -27,20 +25,15 @@ import kotlinx.coroutines.flow.map
@Inject
class SpaceFiltersPresenter(
private val featureFlagService: FeatureFlagService,
private val matrixClient: MatrixClient,
) : Presenter<SpaceFiltersState> {
@Composable
override fun present(): SpaceFiltersState {
val isFeatureEnabled by featureFlagService
.isFeatureEnabledFlow(FeatureFlags.RoomListSpaceFilters)
.collectAsState(initial = false)
val availableFilters by remember {
matrixClient.spaceService.spaceFiltersFlow.map { it.toImmutableList() }
}.collectAsState(initial = persistentListOf())
if (!isFeatureEnabled || availableFilters.isEmpty()) {
if (availableFilters.isEmpty()) {
return SpaceFiltersState.Disabled
}

View file

@ -15,8 +15,6 @@ import androidx.compose.runtime.remember
import dev.zacsweers.metro.Inject
import io.element.android.features.invite.api.SeenInvitesStore
import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.featureflag.api.FeatureFlagService
import io.element.android.libraries.featureflag.api.FeatureFlags
import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.ui.safety.rememberHideInvitesAvatar
import kotlinx.collections.immutable.persistentListOf
@ -29,11 +27,9 @@ import kotlinx.coroutines.flow.map
class HomeSpacesPresenter(
private val client: MatrixClient,
private val seenInvitesStore: SeenInvitesStore,
private val featureFlagsService: FeatureFlagService,
) : Presenter<HomeSpacesState> {
@Composable
override fun present(): HomeSpacesState {
val canCreateSpaces by featureFlagsService.isFeatureEnabledFlow(FeatureFlags.CreateSpaces).collectAsState(false)
val hideInvitesAvatar by client.rememberHideInvitesAvatar()
val spaceRooms by remember {
client.spaceService.topLevelSpacesFlow.map { it.toImmutableList() }
@ -52,7 +48,6 @@ class HomeSpacesPresenter(
spaceRooms = spaceRooms,
seenSpaceInvites = seenSpaceInvites,
hideInvitesAvatar = hideInvitesAvatar,
canCreateSpaces = canCreateSpaces,
// TODO enable once we can link to the screen to explore public spaces
canExploreSpaces = false,
eventSink = ::handleEvent,

View file

@ -18,7 +18,6 @@ data class HomeSpacesState(
val spaceRooms: ImmutableList<SpaceRoom>,
val seenSpaceInvites: ImmutableSet<RoomId>,
val hideInvitesAvatar: Boolean,
val canCreateSpaces: Boolean,
val canExploreSpaces: Boolean,
val eventSink: (HomeSpacesEvents) -> Unit,
)

View file

@ -30,17 +30,9 @@ open class HomeSpacesStateProvider : PreviewParameterProvider<HomeSpacesState> {
),
spaceRooms = aListOfSpaceRooms(),
),
aHomeSpacesState(
space = CurrentSpace.Space(
spaceRoom = aSpaceRoom(roomId = RoomId("!mySpace:example.com"))
),
spaceRooms = aListOfSpaceRooms(),
canCreateSpaces = false,
),
aHomeSpacesState(
space = CurrentSpace.Root,
spaceRooms = emptyList(),
canCreateSpaces = true,
),
)
}
@ -50,7 +42,6 @@ internal fun aHomeSpacesState(
spaceRooms: List<SpaceRoom> = aListOfSpaceRooms(),
seenSpaceInvites: Set<RoomId> = emptySet(),
hideInvitesAvatar: Boolean = false,
canCreateSpaces: Boolean = true,
canExploreSpaces: Boolean = true,
eventSink: (HomeSpacesEvents) -> Unit = {},
) = HomeSpacesState(
@ -58,7 +49,6 @@ internal fun aHomeSpacesState(
spaceRooms = spaceRooms.toImmutableList(),
seenSpaceInvites = seenSpaceInvites.toImmutableSet(),
hideInvitesAvatar = hideInvitesAvatar,
canCreateSpaces = canCreateSpaces,
canExploreSpaces = canExploreSpaces,
eventSink = eventSink,
)

View file

@ -55,7 +55,7 @@ fun HomeSpacesView(
onExploreClick: () -> Unit,
modifier: Modifier = Modifier,
) {
if (state.canCreateSpaces && state.spaceRooms.isEmpty()) {
if (state.spaceRooms.isEmpty()) {
EmptySpaceHomeView(
modifier = modifier.padding(contentPadding),
onCreateSpaceClick = onCreateSpaceClick,

View file

@ -5,9 +5,9 @@
<string name="banner_battery_optimization_title_android">"Nepřicházejí vám oznámení?"</string>
<string name="banner_new_sound_message">"Váš zvuk oznámení byl aktualizován je jasnější, rychlejší a méně rušivý."</string>
<string name="banner_new_sound_title">"Aktualizovali jsme vaše zvuky"</string>
<string name="banner_set_up_recovery_content">"Vygenerujte nový klíč pro obnovení, který lze použít k obnovení historie šifrovaných zpráv v případě, že ztratíte přístup ke svým zařízením."</string>
<string name="banner_set_up_recovery_submit">"Nastavení obnovy"</string>
<string name="banner_set_up_recovery_title">"Nastavení obnovy"</string>
<string name="banner_set_up_recovery_content">"Vaše chaty jsou automaticky zálohovány pomocí koncového šifrování. Chcete-li tuto zálohu obnovit a zachovat si svou digitální identitu v případě, že ztratíte přístup ke všem svým zařízením, budete potřebovat svůj klíč pro obnovení."</string>
<string name="banner_set_up_recovery_submit">"Získat klíč pro obnovení"</string>
<string name="banner_set_up_recovery_title">"Zálohujte své chaty"</string>
<string name="confirm_recovery_key_banner_message">"Potvrďte klíč pro obnovení, abyste zachovali přístup k úložišti klíčů a historii zpráv."</string>
<string name="confirm_recovery_key_banner_primary_button_title">"Zadejte klíč pro obnovení"</string>
<string name="confirm_recovery_key_banner_secondary_button_title">"Zapomněli jste klíč pro obnovení?"</string>

View file

@ -5,9 +5,9 @@
<string name="banner_battery_optimization_title_android">"Le notifiche non arrivano?"</string>
<string name="banner_new_sound_message">"Il ping delle notifiche è stato aggiornato: ora è più chiaro, più rapido e meno fastidioso."</string>
<string name="banner_new_sound_title">"Abbiamo rinnovato i tuoi suoni"</string>
<string name="banner_set_up_recovery_content">"Recupera la tua identità crittografica e la cronologia dei messaggi con una chiave di recupero se hai perso tutti i tuoi dispositivi."</string>
<string name="banner_set_up_recovery_submit">"Configura il recupero"</string>
<string name="banner_set_up_recovery_title">"Configura il ripristino"</string>
<string name="banner_set_up_recovery_content">"Le tue conversazioni vengono automaticamente salvate con crittografia end-to-end. Per ripristinare questo backup e conservare la tua identità digitale quando perdi l\'accesso a tutti i tuoi dispositivi, avrai bisogno della tua chiave di recupero."</string>
<string name="banner_set_up_recovery_submit">"Ottieni la chiave di recupero"</string>
<string name="banner_set_up_recovery_title">"Esegui il backup delle tue conversazioni"</string>
<string name="confirm_recovery_key_banner_message">"Conferma la chiave di recupero per mantenere l\'accesso all\'archiviazione delle chiavi e alla cronologia dei messaggi."</string>
<string name="confirm_recovery_key_banner_primary_button_title">"Inserisci la tua chiave di recupero"</string>
<string name="confirm_recovery_key_banner_secondary_button_title">"Hai dimenticato la chiave di recupero?"</string>
@ -50,6 +50,7 @@ Non hai messaggi non letti!"</string>
<string name="screen_roomlist_mark_as_read">"Segna come letto"</string>
<string name="screen_roomlist_mark_as_unread">"Segna come non letto"</string>
<string name="screen_roomlist_tombstoned_room_description">"Questa stanza è stata aggiornata"</string>
<string name="screen_roomlist_your_spaces">"I tuoi spazi"</string>
<string name="session_verification_banner_message">"Sembra che tu stia usando un nuovo dispositivo. Verificati con un altro dispositivo per accedere ai tuoi messaggi cifrati."</string>
<string name="session_verification_banner_title">"Verifica che sei tu"</string>
</resources>

View file

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="banner_battery_optimization_content_android">"すべての通知を確実に受信するために、このアプリのバッテリー最適化を無効にしてください。"</string>
<string name="banner_battery_optimization_submit_android">"最適化を無効にする"</string>
<string name="banner_battery_optimization_title_android">"通知が届いていませんか?"</string>
<string name="banner_new_sound_message">"通知音が更新され、より明確で速く、そして邪魔にならなくなりました。"</string>
<string name="banner_new_sound_title">"サウンドを刷新しました"</string>
<string name="banner_set_up_recovery_content">"あなたのチャットはエンドツーエンド暗号化を使用して自動的にバックアップされています。すべての端末を使用できない状況で、このバックアップからデジタルIDを復元するには、回復鍵が必要となります。"</string>
<string name="banner_set_up_recovery_submit">"回復鍵を作成"</string>
<string name="banner_set_up_recovery_title">"チャットをバックアップ"</string>
<string name="confirm_recovery_key_banner_message">"鍵の保管庫と過去のメッセージにアクセスするために、回復鍵を認証してください。"</string>
<string name="confirm_recovery_key_banner_primary_button_title">"回復鍵を入力してください"</string>
<string name="confirm_recovery_key_banner_secondary_button_title">"回復鍵を忘れましたか?"</string>
<string name="confirm_recovery_key_banner_title">"鍵の保管庫を同期できません。"</string>
<string name="full_screen_intent_banner_message">"重要な電話を確実に受け取るため、端末がロックされている状態での全画面通知を、設定から許可してください。"</string>
<string name="full_screen_intent_banner_title">"通話品質を高める"</string>
<string name="screen_home_tab_chats">"チャット"</string>
<string name="screen_home_tab_spaces">"スペース"</string>
<string name="screen_invites_decline_chat_message">"%1$sへの招待を本当に破棄しますか"</string>
<string name="screen_invites_decline_chat_title">"招待を破棄"</string>
<string name="screen_invites_decline_direct_chat_message">"%1$sとのチャットを本当に拒否しますか"</string>
<string name="screen_invites_decline_direct_chat_title">"チャットを拒否"</string>
<string name="screen_invites_empty_list">"招待はありません"</string>
<string name="screen_invites_invited_you">"%1$s (%2$s) があなたを招待しました"</string>
<string name="screen_migration_message">"一度限りの工程です。お待ちください。"</string>
<string name="screen_migration_title">"アカウントを設定しています。"</string>
<string name="screen_roomlist_a11y_create_message">"新しい会話またはルームを作成"</string>
<string name="screen_roomlist_clear_filters">"フィルターを解除"</string>
<string name="screen_roomlist_empty_message">"誰かにメッセージを送信しましょう。"</string>
<string name="screen_roomlist_empty_title">"まだチャットがありません。"</string>
<string name="screen_roomlist_filter_favourites">"お気に入り"</string>
<string name="screen_roomlist_filter_favourites_empty_state_subtitle">"チャットの設定からお気に入りに追加できます。
現在は、フィルターの選択を解除することで他のチャットを表示できます。"</string>
<string name="screen_roomlist_filter_favourites_empty_state_title">"お気に入りのチャットはまだありません"</string>
<string name="screen_roomlist_filter_invites">"招待"</string>
<string name="screen_roomlist_filter_invites_empty_state_title">"承認待ちの招待はありません"</string>
<string name="screen_roomlist_filter_low_priority">"低い優先度"</string>
<string name="screen_roomlist_filter_low_priority_empty_state_title">"低い優先度のチャットはまだありません"</string>
<string name="screen_roomlist_filter_mixed_empty_state_subtitle">"フィルターを解除して他のチャットを表示できます"</string>
<string name="screen_roomlist_filter_mixed_empty_state_title">"この選択中にチャットがありません"</string>
<string name="screen_roomlist_filter_people">"人"</string>
<string name="screen_roomlist_filter_people_empty_state_title">"まだダイレクトメッセージは届いていません"</string>
<string name="screen_roomlist_filter_rooms">"ルーム"</string>
<string name="screen_roomlist_filter_rooms_empty_state_title">"まだルームに参加していません"</string>
<string name="screen_roomlist_filter_unreads">"未読"</string>
<string name="screen_roomlist_filter_unreads_empty_state_title">"やった!
未読メッセージはありません。"</string>
<string name="screen_roomlist_knock_event_sent_description">"参加リクエストを送信しました"</string>
<string name="screen_roomlist_main_space_title">"チャット"</string>
<string name="screen_roomlist_mark_as_read">"既読にする"</string>
<string name="screen_roomlist_mark_as_unread">"未読にする"</string>
<string name="screen_roomlist_tombstoned_room_description">"このルームはアップグレードされました"</string>
<string name="screen_roomlist_your_spaces">"あなたのスペース"</string>
<string name="session_verification_banner_message">"新しいデバイスをご利用のようです。暗号化されたメッセージにアクセスするには、別のデバイスで検証してください。"</string>
<string name="session_verification_banner_title">"本人確認"</string>
</resources>

View file

@ -5,7 +5,7 @@
<string name="banner_battery_optimization_title_android">"Уведомления не приходят?"</string>
<string name="banner_new_sound_message">"Ваши уведомления были обновлены — теперь они понятнее, быстрее и менее отвлекающие."</string>
<string name="banner_new_sound_title">"Мы обновили ваши звуки"</string>
<string name="banner_set_up_recovery_content">"Создайте новый ключ восстановления, который можно использовать для восстановления зашифрованной истории сообщений в случае потери доступа к своим устройствам."</string>
<string name="banner_set_up_recovery_content">"Ваши чаты автоматически резервируются с использованием сквозного шифрования. Для восстановления этой резервной копии и сохранения вашей цифровой личности в случае потери доступа ко всем вашим устройствам вам потребуется ключ восстановления."</string>
<string name="banner_set_up_recovery_submit">"Получить ключ восстановления"</string>
<string name="banner_set_up_recovery_title">"Сделайте резервную копию своих чатов."</string>
<string name="confirm_recovery_key_banner_message">"Подтвердите ключ восстановления, чтобы сохранить доступ к хранилищу ключей и истории сообщений."</string>

View file

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="banner_battery_optimization_content_android">"Tắt tính năng tối ưu hóa pin cho ứng dụng này để đảm bảo nhận được mọi thông báo."</string>
<string name="banner_battery_optimization_submit_android">"Tắt tối ưu hóa"</string>
<string name="banner_battery_optimization_title_android">"Có nhận được thông báo không?"</string>
<string name="banner_new_sound_message">"Thông báo của bạn đã được cập nhật — rõ ràng hơn, nhanh hơn và ít gây khó chịu hơn."</string>
<string name="banner_new_sound_title">"Chúng tôi đã làm mới âm thanh của bạn."</string>
<string name="banner_set_up_recovery_content">"Các cuộc trò chuyện của bạn được tự động sao lưu bằng mã hóa đầu cuối. Để khôi phục bản sao lưu này và giữ lại danh tính kỹ thuật số của bạn khi bạn mất quyền truy cập vào tất cả các thiết bị, bạn sẽ cần khóa khôi phục."</string>
<string name="banner_set_up_recovery_submit">"Lấy khóa khôi phục."</string>
<string name="banner_set_up_recovery_title">"Sao lưu tin nhắn của bạn"</string>
<string name="confirm_recovery_key_banner_message">"Xác nhận khóa khôi phục để không bị mất quyền truy cập vào tin nhắn."</string>
<string name="confirm_recovery_key_banner_primary_button_title">"Nhập khóa khôi phục của bạn."</string>
<string name="confirm_recovery_key_banner_secondary_button_title">"Bạn quên khóa khôi phục?”"</string>
<string name="confirm_recovery_key_banner_title">"Dữ liệu khóa của bạn không còn đồng bộ"</string>
<string name="screen_home_tab_chats">"Cuộc trò chuyện"</string>
<string name="screen_invites_decline_chat_message">"Bạn có chắc muốn từ chối lời mời tham gia %1$s không?"</string>
<string name="screen_invites_decline_chat_title">"Từ chối lời mời"</string>
<string name="screen_invites_decline_direct_chat_message">"Bạn có chắc muốn từ chối cuộc trò chuyện riêng với %1$s không?"</string>
<string name="screen_invites_decline_direct_chat_title">"Từ chối trò chuyện"</string>
<string name="screen_invites_empty_list">"Không có lời mời"</string>
<string name="screen_invites_invited_you">"%1$s(%2$s ) đã mời bạn"</string>
<string name="screen_migration_message">"Quá trình này chỉ thực hiện một lần, cảm ơn bạn đã kiên nhẫn."</string>
<string name="screen_migration_title">"Đang thiết lập tài khoản của bạn."</string>
<string name="screen_roomlist_a11y_create_message">"Tạo một cuộc trò chuyện hoặc phòng mới"</string>
<string name="screen_roomlist_empty_message">"Bắt đầu bằng cách nhắn tin cho ai đó."</string>
<string name="screen_roomlist_empty_title">"Chưa có cuộc trò chuyện nào."</string>
<string name="screen_roomlist_filter_favourites">"Yêu thích"</string>
<string name="screen_roomlist_filter_favourites_empty_state_subtitle">"Bạn có thể thêm cuộc trò chuyện vào mục yêu thích trong cài đặt chat.
Hiện tại, bạn có thể bỏ chọn bộ lọc để xem các cuộc trò chuyện khác."</string>
<string name="screen_roomlist_filter_favourites_empty_state_title">"Bạn chưa có cuộc trò chuyện yêu thích nào."</string>
<string name="screen_roomlist_filter_invites">"Lời mời"</string>
<string name="screen_roomlist_filter_low_priority">"Ưu tiên thấp"</string>
<string name="screen_roomlist_filter_mixed_empty_state_subtitle">"Bạn có thể bỏ chọn bộ lọc để xem các cuộc trò chuyện khác"</string>
<string name="screen_roomlist_filter_mixed_empty_state_title">"Bạn không có cuộc trò chuyện nào cho lựa chọn này"</string>
<string name="screen_roomlist_filter_people">"Danh bạ"</string>
<string name="screen_roomlist_filter_people_empty_state_title">"Bạn chưa có tin nhắn riêng nào cả"</string>
<string name="screen_roomlist_filter_rooms">"Phòng"</string>
<string name="screen_roomlist_filter_rooms_empty_state_title">"Bạn chưa tham gia phòng nào"</string>
<string name="screen_roomlist_filter_unreads">"Chưa đọc"</string>
<string name="screen_roomlist_filter_unreads_empty_state_title">"Chúc mừng!
Bạn không còn tin nhắn nào chưa đọc nữa!"</string>
<string name="screen_roomlist_knock_event_sent_description">"Yêu cầu tham gia đã được gửi"</string>
<string name="screen_roomlist_main_space_title">"Cuộc trò chuyện"</string>
<string name="screen_roomlist_mark_as_read">"Đánh dấu đã đọc"</string>
<string name="screen_roomlist_mark_as_unread">"Đánh dấu chưa đọc"</string>
<string name="session_verification_banner_message">"Có vẻ như bạn đang sử dụng thiết bị mới. Hãy xác minh bằng một thiết bị khác để truy cập tin nhắn được mã hóa của bạn."</string>
<string name="session_verification_banner_title">"Xác thực danh tính của bạn"</string>
</resources>

View file

@ -6,7 +6,7 @@
<string name="banner_new_sound_message">"您的通知提示音已升级 - 更清晰、更快速、干扰更少。"</string>
<string name="banner_new_sound_title">"我们已更新您的声音"</string>
<string name="banner_set_up_recovery_content">"生成新的恢复密钥,该密钥可用于在您无法访问设备时恢复加密的消息历史记录。"</string>
<string name="banner_set_up_recovery_submit">"设置恢复"</string>
<string name="banner_set_up_recovery_submit">"获取恢复密钥"</string>
<string name="banner_set_up_recovery_title">"设置恢复"</string>
<string name="confirm_recovery_key_banner_message">"确认恢复密钥,以保持对密钥存储和消息历史的访问。"</string>
<string name="confirm_recovery_key_banner_primary_button_title">"输入恢复密钥"</string>

View file

@ -33,7 +33,6 @@ import io.element.android.libraries.matrix.test.sync.FakeSyncService
import io.element.android.libraries.sessionstorage.api.SessionStore
import io.element.android.libraries.sessionstorage.test.InMemorySessionStore
import io.element.android.libraries.sessionstorage.test.aSessionData
import io.element.android.tests.testutils.MutablePresenter
import io.element.android.tests.testutils.WarmUpRule
import io.element.android.tests.testutils.lambda.lambdaRecorder
import io.element.android.tests.testutils.lambda.value
@ -79,7 +78,6 @@ class HomePresenterTest {
MatrixUser(A_USER_ID, A_USER_NAME, AN_AVATAR_URL)
)
assertThat(withUserState.showAvatarIndicator).isFalse()
assertThat(withUserState.showNavigationBar).isTrue()
}
}
@ -158,36 +156,6 @@ class HomePresenterTest {
.with(value(Announcement.Space))
}
}
@Test
fun `present - NavigationBar is hidden when the last space is left when the user can't create new spaces`() = runTest {
val homeSpacesPresenter = MutablePresenter(aHomeSpacesState())
val presenter = createHomePresenter(
sessionStore = InMemorySessionStore(
updateUserProfileResult = { _, _, _ -> },
),
homeSpacesPresenter = homeSpacesPresenter,
announcementService = FakeAnnouncementService(
showAnnouncementResult = {},
)
)
presenter.test {
val initialState = awaitItem()
assertThat(initialState.currentHomeNavigationBarItem).isEqualTo(HomeNavigationBarItem.Chats)
assertThat(initialState.showNavigationBar).isTrue()
// User navigate to Spaces
initialState.eventSink(HomeEvent.SelectHomeNavigationBarItem(HomeNavigationBarItem.Spaces))
val spaceState = awaitItem()
assertThat(spaceState.currentHomeNavigationBarItem).isEqualTo(HomeNavigationBarItem.Spaces)
// The last space is left
homeSpacesPresenter.updateState(aHomeSpacesState(spaceRooms = emptyList(), canCreateSpaces = false))
skipItems(1)
val finalState = awaitItem()
// We are back to Chats
assertThat(finalState.currentHomeNavigationBarItem).isEqualTo(HomeNavigationBarItem.Chats)
assertThat(finalState.showNavigationBar).isFalse()
}
}
}
internal fun createHomePresenter(

View file

@ -8,8 +8,6 @@
package io.element.android.features.home.impl.spacefilters
import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.featureflag.api.FeatureFlags
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.test.FakeMatrixClient
import io.element.android.libraries.matrix.test.spaces.FakeSpaceService
@ -21,26 +19,9 @@ import org.junit.Test
@OptIn(ExperimentalCoroutinesApi::class)
class SpaceFiltersPresenterTest {
@Test
fun `present - when feature flag is disabled returns Disabled state`() = runTest {
val presenter = createSpaceFiltersPresenter(
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to false)
)
)
presenter.test {
val state = awaitItem()
assertThat(state).isEqualTo(SpaceFiltersState.Disabled)
}
}
@Test
fun `present - when available filters is empty returns Disabled state`() = runTest {
val presenter = createSpaceFiltersPresenter(
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
)
)
val presenter = createSpaceFiltersPresenter()
presenter.test {
val state = awaitLastSequentialItem()
assertThat(state).isEqualTo(SpaceFiltersState.Disabled)
@ -48,15 +29,12 @@ class SpaceFiltersPresenterTest {
}
@Test
fun `present - when feature flag is enabled and filters exist returns Unselected state`() = runTest {
fun `present - when filters exist returns Unselected state`() = runTest {
val spaceFilter = aSpaceServiceFilter(displayName = "Test Space")
val spaceService = FakeSpaceService()
val matrixClient = FakeMatrixClient(spaceService = spaceService)
val presenter = createSpaceFiltersPresenter(
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
),
matrixClient = matrixClient,
)
presenter.test {
@ -75,9 +53,6 @@ class SpaceFiltersPresenterTest {
val matrixClient = FakeMatrixClient(spaceService = spaceService)
val presenter = createSpaceFiltersPresenter(
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
),
matrixClient = matrixClient,
)
presenter.test {
@ -99,9 +74,6 @@ class SpaceFiltersPresenterTest {
val matrixClient = FakeMatrixClient(spaceService = spaceService)
val presenter = createSpaceFiltersPresenter(
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
),
matrixClient = matrixClient,
)
presenter.test {
@ -129,9 +101,6 @@ class SpaceFiltersPresenterTest {
val matrixClient = FakeMatrixClient(spaceService = spaceService)
val presenter = createSpaceFiltersPresenter(
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
),
matrixClient = matrixClient,
)
presenter.test {
@ -159,9 +128,6 @@ class SpaceFiltersPresenterTest {
val matrixClient = FakeMatrixClient(spaceService = spaceService)
val presenter = createSpaceFiltersPresenter(
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
),
matrixClient = matrixClient,
)
presenter.test {
@ -196,9 +162,6 @@ class SpaceFiltersPresenterTest {
val matrixClient = FakeMatrixClient(spaceService = spaceService)
val presenter = createSpaceFiltersPresenter(
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
),
matrixClient = matrixClient,
)
presenter.test {
@ -224,9 +187,6 @@ class SpaceFiltersPresenterTest {
val matrixClient = FakeMatrixClient(spaceService = spaceService)
val presenter = createSpaceFiltersPresenter(
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
),
matrixClient = matrixClient,
)
presenter.test {
@ -271,9 +231,6 @@ class SpaceFiltersPresenterTest {
val matrixClient = FakeMatrixClient(spaceService = spaceService)
val presenter = createSpaceFiltersPresenter(
featureFlagService = FakeFeatureFlagService(
initialState = mapOf(FeatureFlags.RoomListSpaceFilters.key to true)
),
matrixClient = matrixClient,
)
presenter.test {
@ -302,11 +259,9 @@ class SpaceFiltersPresenterTest {
}
private fun createSpaceFiltersPresenter(
featureFlagService: FakeFeatureFlagService = FakeFeatureFlagService(),
matrixClient: FakeMatrixClient = FakeMatrixClient(),
): SpaceFiltersPresenter {
return SpaceFiltersPresenter(
featureFlagService = featureFlagService,
matrixClient = matrixClient,
)
}

View file

@ -11,9 +11,6 @@ package io.element.android.features.home.impl.spaces
import com.google.common.truth.Truth.assertThat
import io.element.android.features.invite.api.SeenInvitesStore
import io.element.android.features.invite.test.InMemorySeenInvitesStore
import io.element.android.libraries.featureflag.api.FeatureFlagService
import io.element.android.libraries.featureflag.api.FeatureFlags
import io.element.android.libraries.featureflag.test.FakeFeatureFlagService
import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.test.FakeMatrixClient
import io.element.android.tests.testutils.test
@ -26,25 +23,18 @@ class HomeSpacesPresenterTest {
val presenter = createPresenter()
presenter.test {
val state = awaitItem()
// canCreateSpaces is initially false
assertThat(state.canCreateSpaces).isFalse()
assertThat(state.space).isEqualTo(CurrentSpace.Root)
assertThat(state.spaceRooms).isEmpty()
assertThat(state.hideInvitesAvatar).isFalse()
assertThat(state.seenSpaceInvites).isEmpty()
// It'll eventually be true
assertThat(awaitItem().canCreateSpaces).isTrue()
}
}
private fun createPresenter(
client: MatrixClient = FakeMatrixClient(),
seenInvitesStore: SeenInvitesStore = InMemorySeenInvitesStore(),
featureFlagsService: FeatureFlagService = FakeFeatureFlagService(initialState = mapOf(FeatureFlags.CreateSpaces.key to true)),
) = HomeSpacesPresenter(
client = client,
seenInvitesStore = seenInvitesStore,
featureFlagsService = featureFlagsService,
)
}

View file

@ -1,10 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_decline_and_block_block_user_option_title">"Заблакіраваць карыстальніка"</string>
<string name="screen_decline_and_block_title">"Адхіліць і заблакіраваць"</string>
<string name="screen_invites_decline_chat_message">"Вы ўпэўненыя, што хочаце адхіліць запрашэнне ў %1$s?"</string>
<string name="screen_invites_decline_chat_title">"Адхіліць запрашэнне"</string>
<string name="screen_invites_decline_direct_chat_message">"Вы ўпэўненыя, што хочаце адмовіцца ад прыватных зносін з %1$s?"</string>
<string name="screen_invites_decline_direct_chat_title">"Адхіліць чат"</string>
<string name="screen_invites_empty_list">"Няма запрашэнняў"</string>
<string name="screen_invites_invited_you">"%1$s (%2$s) запрасіў(-ла) вас"</string>
<string name="screen_join_room_decline_and_block_button_title">"Адхіліць і заблакіраваць"</string>
</resources>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_decline_and_block_block_user_option_description">"このユーザーからのメッセージと招待を非表示します"</string>
<string name="screen_decline_and_block_block_user_option_title">"ユーザーをブロック"</string>
<string name="screen_decline_and_block_report_user_option_description">"アカウント提供元にこのルームを報告"</string>
<string name="screen_decline_and_block_report_user_reason_placeholder">"報告の理由を説明してください…"</string>
<string name="screen_decline_and_block_title">"拒否してブロック"</string>
<string name="screen_invites_decline_chat_message">"%1$sへの招待を本当に破棄しますか"</string>
<string name="screen_invites_decline_chat_title">"招待を破棄"</string>
<string name="screen_invites_decline_direct_chat_message">"%1$sとのチャットを本当に拒否しますか"</string>
<string name="screen_invites_decline_direct_chat_title">"チャットを拒否"</string>
<string name="screen_invites_empty_list">"招待はありません"</string>
<string name="screen_invites_invited_you">"%1$s (%2$s) があなたを招待しました"</string>
<string name="screen_join_room_decline_and_block_alert_confirmation">"拒否してブロックする"</string>
<string name="screen_join_room_decline_and_block_alert_message">"本当にこのルームへの参加の招待を拒否しますか?%1$s は、あなたと会話することやルームに招待することができなくなります。"</string>
<string name="screen_join_room_decline_and_block_alert_title">"招待を拒否してブロック"</string>
<string name="screen_join_room_decline_and_block_button_title">"拒否してブロック"</string>
</resources>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_decline_and_block_block_user_option_description">"Bạn sẽ không nhận được bất kỳ tin nhắn hoặc lời mời tham gia phòng nào từ người dùng này."</string>
<string name="screen_decline_and_block_block_user_option_title">"Chặn người dùng"</string>
<string name="screen_decline_and_block_report_user_option_description">"Báo cáo phòng này cho nhà cung cấp tài khoản của bạn."</string>
<string name="screen_decline_and_block_title">"Từ chối và chặn"</string>
<string name="screen_invites_decline_chat_message">"Bạn có chắc muốn từ chối lời mời tham gia %1$s không?"</string>
<string name="screen_invites_decline_chat_title">"Từ chối lời mời"</string>
<string name="screen_invites_decline_direct_chat_message">"Bạn có chắc muốn từ chối cuộc trò chuyện riêng với %1$s không?"</string>
<string name="screen_invites_decline_direct_chat_title">"Từ chối trò chuyện"</string>
<string name="screen_invites_empty_list">"Không có lời mời"</string>
<string name="screen_invites_invited_you">"%1$s(%2$s ) đã mời bạn"</string>
<string name="screen_join_room_decline_and_block_alert_confirmation">"Có, từ chối &amp; chặn"</string>
<string name="screen_join_room_decline_and_block_alert_message">"Bạn có chắc muốn từ chối lời mời tham gia phòng này không? Điều này cũng sẽ ngăn %1$s liên hệ với bạn hoặc mời bạn vào các phòng."</string>
<string name="screen_join_room_decline_and_block_alert_title">"Từ chối lời mời và chặn"</string>
<string name="screen_join_room_decline_and_block_button_title">"Từ chối và chặn"</string>
</resources>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_decline_and_block_block_user_option_description">"您不会看到来自该用户的任何信息或房间邀请"</string>
<string name="screen_decline_and_block_block_user_option_title">"封禁用户"</string>
<string name="screen_decline_and_block_block_user_option_description">"您不会看到来自该用户的任何信息或房间邀请"</string>
<string name="screen_decline_and_block_block_user_option_title">"屏蔽用户"</string>
<string name="screen_decline_and_block_report_user_option_description">"向您的帐户提供商举报此房间。"</string>
<string name="screen_decline_and_block_report_user_reason_placeholder">"描述举报的原因…"</string>
<string name="screen_decline_and_block_title">"拒绝并屏蔽"</string>
@ -12,7 +12,7 @@
<string name="screen_invites_empty_list">"没有邀请"</string>
<string name="screen_invites_invited_you">"%1$s %2$s邀请了你"</string>
<string name="screen_join_room_decline_and_block_alert_confirmation">"是的,拒绝并屏蔽"</string>
<string name="screen_join_room_decline_and_block_alert_message">"您确定要拒绝加入此房间的邀请吗?这也将阻止%1$s 与您联系或邀请您加入房间。"</string>
<string name="screen_join_room_decline_and_block_alert_message">"您确定要拒绝加入此房间的邀请吗?这也将阻止 %1$s 与您联系或邀请您加入房间。"</string>
<string name="screen_join_room_decline_and_block_alert_title">"拒绝邀请并屏蔽"</string>
<string name="screen_join_room_decline_and_block_button_title">"拒绝并屏蔽"</string>
</resources>

View file

@ -34,7 +34,7 @@ dependencies {
implementation(projects.libraries.designsystem)
implementation(projects.libraries.uiStrings)
implementation(projects.libraries.androidutils)
implementation(projects.libraries.usersearch.impl)
implementation(projects.libraries.usersearch.api)
implementation(libs.coil.compose)
implementation(projects.services.apperror.api)
api(projects.features.invitepeople.api)

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_invite_users_already_a_member">"既に参加しています"</string>
<string name="screen_invite_users_already_invited">"既に招待しています"</string>
<plurals name="screen_invite_users_confirm_dialog_subtitle">
<item quantity="other">"この連絡先とのチャットがありません。続行する前に、このルームに招待してください。"</item>
</plurals>
<plurals name="screen_invite_users_confirm_dialog_title">
<item quantity="other">"このルームに新しい連絡先を追加しますか?"</item>
</plurals>
</resources>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_invite_users_already_a_member">"Đã là thành viên"</string>
<string name="screen_invite_users_already_invited">"Đã được mời"</string>
</resources>

View file

@ -2,4 +2,12 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_invite_users_already_a_member">"Already a member"</string>
<string name="screen_invite_users_already_invited">"Already invited"</string>
<plurals name="screen_invite_users_confirm_dialog_subtitle">
<item quantity="one">"You currently dont have any chats with this contact. Confirm inviting them to this room before continuing."</item>
<item quantity="other">"You currently dont have any chats with these contacts. Confirm inviting them to this room before continuing."</item>
</plurals>
<plurals name="screen_invite_users_confirm_dialog_title">
<item quantity="one">"Invite a new contact to this room?"</item>
<item quantity="other">"Invite new contacts to this room?"</item>
</plurals>
</resources>

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_join_room_decline_and_block_button_title">"Адхіліць і заблакіраваць"</string>
<string name="screen_join_room_join_action">"Далучыцца"</string>
<string name="screen_join_room_knock_action">"Націсніце, каб далучыцца"</string>
<string name="screen_join_room_space_not_supported_description">"%1$s пакуль не падтрымлівае прасторы. Вы можаце атрымаць доступ да прастор праз вэб-старонку."</string>

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_join_room_ban_by_message">"%1$s があなたを追放しました。"</string>
<string name="screen_join_room_ban_message">"追放されました"</string>
<string name="screen_join_room_ban_reason">"理由: %1$s"</string>
<string name="screen_join_room_cancel_knock_action">"リクエストをキャンセル"</string>
<string name="screen_join_room_cancel_knock_alert_confirmation">"キャンセルします"</string>
<string name="screen_join_room_cancel_knock_alert_description">"このルームへの参加のリクエストを本当にキャンセルしますか?"</string>
<string name="screen_join_room_cancel_knock_alert_title">"参加のリクエストをキャンセル"</string>
<string name="screen_join_room_decline_and_block_alert_confirmation">"拒否してブロックする"</string>
<string name="screen_join_room_decline_and_block_alert_message">"本当にこのルームへの参加の招待を拒否しますか?%1$s は、あなたと会話することやルームに招待することができなくなります。"</string>
<string name="screen_join_room_decline_and_block_alert_title">"招待を拒否してブロック"</string>
<string name="screen_join_room_decline_and_block_button_title">"拒否してブロック"</string>
<string name="screen_join_room_fail_message">"参加に失敗"</string>
<string name="screen_join_room_fail_reason">"制限付きアクセスまたは招待制です。"</string>
<string name="screen_join_room_forget_action">"忘れる"</string>
<string name="screen_join_room_invite_required_message">"参加するには招待が必要です"</string>
<string name="screen_join_room_invited_by">"以下のユーザーからの招待"</string>
<string name="screen_join_room_join_action">"参加"</string>
<string name="screen_join_room_join_restricted_message">"参加するには、招待またはスペースのメンバーである必要があります。"</string>
<string name="screen_join_room_knock_action">"参加をリクエスト"</string>
<string name="screen_join_room_knock_message_characters_count">"文字数制限 %1$d/%2$d 字"</string>
<string name="screen_join_room_knock_message_description">"メッセージ (任意)"</string>
<string name="screen_join_room_knock_sent_description">"リクエストが承認された場合はルームへの招待が届きます。"</string>
<string name="screen_join_room_knock_sent_title">"参加リクエストを送信しました"</string>
<string name="screen_join_room_loading_alert_message">"ルームのプレビューを表示できません。サーバーまたはネットワークの問題の可能性があります。"</string>
<string name="screen_join_room_loading_alert_title">"ルームのプレビューを表示できません"</string>
<string name="screen_join_room_space_not_supported_description">"%1$s はスペースに対応していません。Webからアクセスすることができます。"</string>
<string name="screen_join_room_space_not_supported_title">"まだスペースに対応していません"</string>
<string name="screen_join_room_subtitle_knock">"下のボタンを押すとルーム管理者に通知が届きます。承認の後、会話に参加することができます。"</string>
<string name="screen_join_room_subtitle_no_preview">"過去のメッセージを表示するには、このルームのメンバーである必要があります。"</string>
<string name="screen_join_room_title_knock">"ルームに参加しますか?"</string>
<string name="screen_join_room_title_no_preview">"プレビューは利用できません"</string>
</resources>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_join_room_cancel_knock_action">"Hủy yêu cầu"</string>
<string name="screen_join_room_cancel_knock_alert_confirmation">"Có, hủy"</string>
<string name="screen_join_room_cancel_knock_alert_description">"Bạn có chắc chắn muốn hủy yêu cầu tham gia phòng này không?"</string>
<string name="screen_join_room_cancel_knock_alert_title">"Hủy yêu cầu tham gia"</string>
<string name="screen_join_room_decline_and_block_alert_confirmation">"Có, từ chối &amp; chặn"</string>
<string name="screen_join_room_decline_and_block_alert_message">"Bạn có chắc muốn từ chối lời mời tham gia phòng này không? Điều này cũng sẽ ngăn %1$s liên hệ với bạn hoặc mời bạn vào các phòng."</string>
<string name="screen_join_room_decline_and_block_alert_title">"Từ chối lời mời và chặn"</string>
<string name="screen_join_room_decline_and_block_button_title">"Từ chối và chặn"</string>
<string name="screen_join_room_invited_by">"Được mời bởi"</string>
<string name="screen_join_room_join_action">"Tham gia"</string>
<string name="screen_join_room_knock_message_characters_count">"Số ký tự cho phép: %1$d / %2$d"</string>
<string name="screen_join_room_knock_message_description">"Lời nhắn (tùy chọn)"</string>
<string name="screen_join_room_knock_sent_description">"Bạn sẽ nhận được lời mời tham gia phòng nếu yêu cầu của bạn được chấp nhận."</string>
<string name="screen_join_room_knock_sent_title">"Yêu cầu tham gia đã được gửi"</string>
<string name="screen_join_room_loading_alert_message">"Không thể hiển thị bản xem trước của phòng. Có thể do lỗi mạng hoặc máy chủ."</string>
<string name="screen_join_room_loading_alert_title">"Không thể hiển thị bản xem trước của phòng này"</string>
</resources>

View file

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_join_room_ban_by_message">"您已被禁止访问%1$s。"</string>
<string name="screen_join_room_ban_message">"你已被禁止访问"</string>
<string name="screen_join_room_ban_by_message">"您已被 %1$s 封禁。"</string>
<string name="screen_join_room_ban_message">"你已被此房间封禁"</string>
<string name="screen_join_room_ban_reason">"理由:%1$s。"</string>
<string name="screen_join_room_cancel_knock_action">"取消请求"</string>
<string name="screen_join_room_cancel_knock_alert_confirmation">"是的,取消"</string>
<string name="screen_join_room_cancel_knock_alert_description">"您确定要取消加入此房间的请求吗?"</string>
<string name="screen_join_room_cancel_knock_alert_title">"取消加入申请"</string>
<string name="screen_join_room_decline_and_block_alert_confirmation">"是的,拒绝并屏蔽"</string>
<string name="screen_join_room_decline_and_block_alert_message">"您确定要拒绝加入此房间的邀请吗?这也将阻止%1$s 与您联系或邀请您加入房间。"</string>
<string name="screen_join_room_decline_and_block_alert_message">"您确定要拒绝加入此房间的邀请吗?这也将阻止 %1$s 与您联系或邀请您加入房间。"</string>
<string name="screen_join_room_decline_and_block_alert_title">"拒绝邀请并屏蔽"</string>
<string name="screen_join_room_decline_and_block_button_title">"拒绝并屏蔽"</string>
<string name="screen_join_room_fail_message">"加入失败"</string>
@ -29,6 +29,6 @@
<string name="screen_join_room_space_not_supported_title">"空间尚不支持"</string>
<string name="screen_join_room_subtitle_knock">"点击下面的按钮,系统将通知聊天室管理员。获得批准后将能够加入对话。"</string>
<string name="screen_join_room_subtitle_no_preview">"只有聊天室成员才能查看消息历史记录。"</string>
<string name="screen_join_room_title_knock">"想加入这个聊天室吗?"</string>
<string name="screen_join_room_title_knock">"想加入聊天室吗?"</string>
<string name="screen_join_room_title_no_preview">"预览不可用"</string>
</resources>

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_knock_requests_list_accept_all_alert_confirm_button_title">"すべて承認"</string>
<string name="screen_knock_requests_list_accept_all_alert_description">"本当にすべての参加リクエストを承認しますか?"</string>
<string name="screen_knock_requests_list_accept_all_alert_title">"すべてのリクエストを承認"</string>
<string name="screen_knock_requests_list_accept_all_button_title">"すべて承認"</string>
<string name="screen_knock_requests_list_accept_all_failed_alert_description">"リクエストの一部を承認できませんでした。もう一度試しますか?"</string>
<string name="screen_knock_requests_list_accept_all_failed_alert_title">"リクエストの承認に一部失敗"</string>
<string name="screen_knock_requests_list_accept_all_loading_title">"すべてのリクエストを承認中"</string>
<string name="screen_knock_requests_list_accept_failed_alert_description">"リクエストを承認できませんでした。もう一度試しますか?"</string>
<string name="screen_knock_requests_list_accept_failed_alert_title">"リクエストの承認に失敗"</string>
<string name="screen_knock_requests_list_accept_loading_title">"リクエストを承認中"</string>
<string name="screen_knock_requests_list_ban_alert_confirm_button_title">"拒否して追放する"</string>
<string name="screen_knock_requests_list_ban_alert_description">"本当に %1$s を拒否して追放しますか?このユーザーが再度リクエストを送信することはできなくなります。"</string>
<string name="screen_knock_requests_list_ban_alert_title">"拒否してアクセスから追放"</string>
<string name="screen_knock_requests_list_ban_loading_title">"拒否してアクセスから追放中"</string>
<string name="screen_knock_requests_list_decline_alert_confirm_button_title">"拒否する"</string>
<string name="screen_knock_requests_list_decline_alert_description">"本当に %1$s の参加リクエストを拒否しますか?"</string>
<string name="screen_knock_requests_list_decline_alert_title">"アクセスを拒否"</string>
<string name="screen_knock_requests_list_decline_and_ban_action_title">"拒否と追放"</string>
<string name="screen_knock_requests_list_decline_failed_alert_description">"このリクエストを拒否できません。もう一度試しますか?"</string>
<string name="screen_knock_requests_list_decline_failed_alert_title">"リクエストの拒否に失敗"</string>
<string name="screen_knock_requests_list_decline_loading_title">"参加リクエストを拒否中"</string>
<string name="screen_knock_requests_list_empty_state_description">"ルームへの参加リクエストがある場合は、ここに表示されます。"</string>
<string name="screen_knock_requests_list_empty_state_title">"参加リクエストがありません"</string>
<string name="screen_knock_requests_list_initial_loading_title">"参加リクエストを読み込み中"</string>
<string name="screen_knock_requests_list_title">"参加のリクエスト"</string>
<plurals name="screen_room_multiple_knock_requests_title">
<item quantity="other">"%1$s 他 %2$d 人がルーム参加を希望"</item>
</plurals>
<string name="screen_room_multiple_knock_requests_view_all_button_title">"すべて表示"</string>
<string name="screen_room_single_knock_request_accept_button_title">"承諾"</string>
<string name="screen_room_single_knock_request_title">"%1$s がこのルームの参加を要求しています"</string>
<string name="screen_room_single_knock_request_view_button_title">"表示"</string>
</resources>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_knock_requests_list_accept_all_alert_confirm_button_title">"Có, chấp nhận tất cả"</string>
<string name="screen_knock_requests_list_accept_all_alert_description">"Bạn có chắc chắn muốn chấp nhận tất cả các yêu cầu tham gia không?"</string>
<string name="screen_knock_requests_list_accept_all_alert_title">"Chấp nhận tất cả các yêu cầu"</string>
<string name="screen_knock_requests_list_accept_all_button_title">"Chấp nhận tất cả"</string>
<string name="screen_knock_requests_list_accept_all_failed_alert_description">"Không thể chấp nhận tất cả yêu cầu. Bạn có muốn thử lại không?"</string>
<string name="screen_knock_requests_list_accept_all_failed_alert_title">"Chấp nhận tất cả yêu cầu thất bại"</string>
<string name="screen_knock_requests_list_accept_all_loading_title">"Đang duyệt tất cả yêu cầu tham gia"</string>
<string name="screen_knock_requests_list_accept_failed_alert_description">"Không thể chấp nhận yêu cầu này. Bạn có muốn thử lại không?"</string>
<string name="screen_knock_requests_list_accept_failed_alert_title">"Chấp nhận yêu cầu thất bại"</string>
<string name="screen_knock_requests_list_accept_loading_title">"Đang duyệt yêu cầu tham gia"</string>
<string name="screen_knock_requests_list_ban_alert_confirm_button_title">"Có, từ chối và cấm"</string>
<string name="screen_knock_requests_list_ban_alert_description">"Bạn có chắc muốn từ chối và cấm %1$s không? Người dùng này sẽ không thể yêu cầu tham gia phòng này nữa"</string>
<string name="screen_knock_requests_list_ban_alert_title">"Từ chối và cấm truy cập"</string>
<string name="screen_knock_requests_list_ban_loading_title">"Đang từ chối và chặn truy cập"</string>
<string name="screen_knock_requests_list_decline_alert_confirm_button_title">"Có, từ chối"</string>
<string name="screen_knock_requests_list_decline_alert_description">"Bạn có chắc muốn từ chối yêu cầu tham gia phòng của %1$s không?"</string>
<string name="screen_knock_requests_list_decline_alert_title">"Từ chối truy cập"</string>
<string name="screen_knock_requests_list_decline_and_ban_action_title">"Từ chối và chặn"</string>
<string name="screen_knock_requests_list_decline_failed_alert_description">"Không thể từ chối yêu cầu. Bạn có muốn thử lại không?"</string>
<string name="screen_knock_requests_list_decline_failed_alert_title">"Từ chối yêu cầu thất bại"</string>
<string name="screen_knock_requests_list_decline_loading_title">"Đang từ chối yêu cầu tham gia"</string>
<string name="screen_knock_requests_list_empty_state_description">"Khi ai đó xin vào phòng, bạn sẽ thấy yêu cầu ở đây."</string>
<string name="screen_knock_requests_list_empty_state_title">"Không có yêu cầu tham gia nào đang chờ xử lý"</string>
<string name="screen_knock_requests_list_initial_loading_title">"Đang tải các yêu cầu tham gia…"</string>
<string name="screen_room_single_knock_request_accept_button_title">"Đồng ý"</string>
<string name="screen_room_single_knock_request_view_button_title">"Xem"</string>
</resources>

View file

@ -30,6 +30,6 @@
</plurals>
<string name="screen_room_multiple_knock_requests_view_all_button_title">"查看全部"</string>
<string name="screen_room_single_knock_request_accept_button_title">"接受"</string>
<string name="screen_room_single_knock_request_title">"%1$s想加入这个房间"</string>
<string name="screen_room_single_knock_request_title">"%1$s 想加入此房间"</string>
<string name="screen_room_single_knock_request_view_button_title">"查看"</string>
</resources>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="leave_conversation_alert_subtitle">"本当にこの会話を退出しますか?この会話は非公開で、再度参加するには招待が必要です。"</string>
<string name="leave_room_alert_empty_subtitle">"本当にこのルームを退出しますか?あなたが最後の一人であり、このルームには誰も参加することができなくなります。"</string>
<string name="leave_room_alert_private_subtitle">"ルームから退出してもよいですか? このルームは非公開のため、参加しなおすには改めて招待される必要があります。"</string>
<string name="leave_room_alert_select_new_owner_action">"所有者を選択"</string>
<string name="leave_room_alert_select_new_owner_subtitle">"あなたがこのルームの唯一の所有者です。退出する前に所有権を他のユーザーへ譲与する必要があります。"</string>
<string name="leave_room_alert_select_new_owner_title">"所有権の譲与"</string>
<string name="leave_room_alert_subtitle">"本当にこのルームを退出しますか?"</string>
</resources>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="leave_conversation_alert_subtitle">"Bạn có chắc chắn muốn rời khỏi cuộc trò chuyện này không? Cuộc trò chuyện này không công khai và bạn sẽ không thể tham gia lại nếu không được mời."</string>
<string name="leave_room_alert_empty_subtitle">"Bạn có chắc chắn muốn rời khỏi phòng này không? Bạn là người duy nhất ở đây. Nếu bạn rời đi, sẽ không ai có thể tham gia nữa, kể cả bạn."</string>
<string name="leave_room_alert_private_subtitle">"Bạn có chắc chắn muốn rời khỏi phòng này không? Phòng này không công khai và bạn sẽ không thể tham gia lại nếu không có lời mời."</string>
<string name="leave_room_alert_subtitle">"Bạn có chắc chắn muốn rời khỏi phòng không?"</string>
</resources>

View file

@ -1,16 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_link_new_device_desktop_scanning_title">"Scansiona il codice QR"</string>
<string name="screen_link_new_device_desktop_step1">"Apri %1$s su un laptop o un computer desktop"</string>
<string name="screen_link_new_device_desktop_step3">"Scansiona il codice QR con questo dispositivo"</string>
<string name="screen_link_new_device_desktop_submit">"Pronto per la scansione"</string>
<string name="screen_link_new_device_desktop_title">"Apri %1$s su un computer desktop per ottenere il codice QR"</string>
<string name="screen_link_new_device_enter_number_error_numbers_do_not_match">"I numeri non corrispondono"</string>
<string name="screen_link_new_device_enter_number_notice">"Inserisci il codice a 2 cifre"</string>
<string name="screen_link_new_device_enter_number_subtitle">"Questo verificherà che la connessione con l\'altro dispositivo sia sicura."</string>
<string name="screen_link_new_device_enter_number_title">"Inserisci il numero visualizzato sull\'altro dispositivo"</string>
<string name="screen_link_new_device_error_app_not_supported_subtitle">"Il tuo fornitore di account non supporta %1$s."</string>
<string name="screen_link_new_device_error_app_not_supported_title">"%1$s non supportato"</string>
<string name="screen_link_new_device_error_not_supported_subtitle">"Il tuo provider di account non supporta l\'accesso a un nuovo dispositivo tramite codice QR."</string>
<string name="screen_link_new_device_error_not_supported_title">"Codice QR non supportato"</string>
<string name="screen_link_new_device_error_request_cancelled_subtitle">"L\'accesso è stato annullato sull\'altro dispositivo."</string>
<string name="screen_link_new_device_error_request_cancelled_title">"Richiesta di accesso annullata"</string>
<string name="screen_link_new_device_error_request_timeout_subtitle">"L\'accesso è scaduto. Riprova."</string>
<string name="screen_link_new_device_error_request_timeout_title">"L\'accesso non è stato completato in tempo"</string>
<string name="screen_link_new_device_mobile_step1">"Apri %1$s sull\'altro dispositivo"</string>
<string name="screen_link_new_device_mobile_step2">"Seleziona %1$s"</string>
<string name="screen_link_new_device_mobile_step2_action">"“Accedi con codice QR”"</string>
<string name="screen_link_new_device_mobile_step3">"Scansiona il codice QR qui riportato con l\'altro dispositivo"</string>
<string name="screen_link_new_device_mobile_title">"Apri %1$s sull\'altro dispositivo"</string>
<string name="screen_link_new_device_root_desktop_computer">"Computer desktop"</string>
<string name="screen_link_new_device_root_loading_qr_code">"Caricamento codice QR in corso…"</string>
<string name="screen_link_new_device_root_mobile_device">"Dispositivo mobile"</string>
<string name="screen_link_new_device_root_title">"Che tipo di dispositivo desideri collegare?"</string>
<string name="screen_link_new_device_wrong_number_subtitle">"Prova di nuovo e assicurati di aver inserito correttamente il codice a 2 cifre. Se i numeri continuano a non corrispondere, contatta il gestore del tuo account."</string>
<string name="screen_link_new_device_wrong_number_title">"I numeri non corrispondono"</string>
<string name="screen_qr_code_login_connection_note_secure_state_description">"Non è stato possibile stabilire una connessione sicura con il nuovo dispositivo. I tuoi dispositivi esistenti sono ancora al sicuro e non devi preoccuparti di loro."</string>
<string name="screen_qr_code_login_connection_note_secure_state_list_header">"E adesso?"</string>
<string name="screen_qr_code_login_connection_note_secure_state_list_item_1">"Prova ad accedere di nuovo con un codice QR nel caso si sia verificato un problema di rete."</string>
@ -21,6 +38,8 @@
<string name="screen_qr_code_login_error_cancelled_title">"Richiesta di accesso annullata"</string>
<string name="screen_qr_code_login_error_declined_subtitle">"L\'accesso è stato rifiutato sull\'altro dispositivo."</string>
<string name="screen_qr_code_login_error_declined_title">"Accesso rifiutato"</string>
<string name="screen_qr_code_login_error_device_already_signed_in_subtitle">"Non devi fare altro."</string>
<string name="screen_qr_code_login_error_device_already_signed_in_title">"L\'altro tuo dispositivo è già connesso"</string>
<string name="screen_qr_code_login_error_expired_subtitle">"L\'accesso è scaduto. Riprova."</string>
<string name="screen_qr_code_login_error_expired_title">"L\'accesso non è stato completato in tempo"</string>
<string name="screen_qr_code_login_error_linking_not_suported_subtitle">"L\'altro dispositivo non supporta l\'accesso a %s con un codice QR.

View file

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_link_new_device_desktop_scanning_title">"QRコードを読み取り"</string>
<string name="screen_link_new_device_desktop_step1">"%1$s をコンピュータで開いてください"</string>
<string name="screen_link_new_device_desktop_step3">"この端末でQRコードを読み取る"</string>
<string name="screen_link_new_device_desktop_submit">"読み取る"</string>
<string name="screen_link_new_device_desktop_title">"%1$s をコンピュータで開き、QRコードを表示してください"</string>
<string name="screen_link_new_device_enter_number_error_numbers_do_not_match">"数字が一致しません"</string>
<string name="screen_link_new_device_enter_number_notice">"2桁の数字を入力してください"</string>
<string name="screen_link_new_device_enter_number_subtitle">"他の端末との接続が安全であることを確認します。"</string>
<string name="screen_link_new_device_enter_number_title">"一方の端末で表示される数字を入力してください"</string>
<string name="screen_link_new_device_error_app_not_supported_subtitle">"アカウント提供元が %1$s に対応していません。"</string>
<string name="screen_link_new_device_error_app_not_supported_title">"%1$s に非対応"</string>
<string name="screen_link_new_device_error_not_supported_subtitle">"あなたのアカウント提供元は、QRコードによる追加のサインインに対応していません。"</string>
<string name="screen_link_new_device_error_not_supported_title">"QRコードに非対応"</string>
<string name="screen_link_new_device_error_request_cancelled_subtitle">"もう一方の端末がサインインをキャンセルしました"</string>
<string name="screen_link_new_device_error_request_cancelled_title">"サインインのリクエストがキャンセルされました"</string>
<string name="screen_link_new_device_error_request_timeout_subtitle">"サインインが無効です。もう一度試してください。"</string>
<string name="screen_link_new_device_error_request_timeout_title">"サインインが時間内に完了しませんでした"</string>
<string name="screen_link_new_device_mobile_step1">"%1$s を他の端末で開いてください"</string>
<string name="screen_link_new_device_mobile_step2">"%1$s を選択してください"</string>
<string name="screen_link_new_device_mobile_step2_action">"\"QRコードでサインイン\""</string>
<string name="screen_link_new_device_mobile_step3">"表示されているQRコードを一方の端末で読み取ってください"</string>
<string name="screen_link_new_device_mobile_title">"%1$s を他の端末で開いてください"</string>
<string name="screen_link_new_device_root_desktop_computer">"コンピュータ"</string>
<string name="screen_link_new_device_root_loading_qr_code">"QRコードを読み込み中…"</string>
<string name="screen_link_new_device_root_mobile_device">"モバイル端末"</string>
<string name="screen_link_new_device_root_title">"どのような端末を使用してサインインしますか?"</string>
<string name="screen_link_new_device_wrong_number_subtitle">"入力した2桁の数字が正しいことを確認し、再度試してください。問題が継続する場合はアカウント提供元に問い合わせてください。"</string>
<string name="screen_link_new_device_wrong_number_title">"数字が一致しません"</string>
<string name="screen_qr_code_login_connection_note_secure_state_description">"新しい端末で安全な通信を確立できませんでした。既存の端末は安全な状態を維持しています。"</string>
<string name="screen_qr_code_login_connection_note_secure_state_list_header">"どうしますか?"</string>
<string name="screen_qr_code_login_connection_note_secure_state_list_item_1">"ネットワークの問題の可能性があるため、再度QRコードでログインを試してください。"</string>
<string name="screen_qr_code_login_connection_note_secure_state_list_item_2">"同様の問題が発生する場合は、異なるWi-Fiやモバイルデータ通信を試してください"</string>
<string name="screen_qr_code_login_connection_note_secure_state_list_item_3">"問題が解決しない場合は、手動でサインインしてください"</string>
<string name="screen_qr_code_login_connection_note_secure_state_title">"接続が安全ではありません"</string>
<string name="screen_qr_code_login_error_cancelled_subtitle">"もう一方の端末がサインインをキャンセルしました"</string>
<string name="screen_qr_code_login_error_cancelled_title">"サインインのリクエストがキャンセルされました"</string>
<string name="screen_qr_code_login_error_declined_subtitle">"もう一方の端末でサインインを拒否されました"</string>
<string name="screen_qr_code_login_error_declined_title">"サインインを拒否"</string>
<string name="screen_qr_code_login_error_device_already_signed_in_subtitle">"他には何もする必要はありません。"</string>
<string name="screen_qr_code_login_error_device_already_signed_in_title">"他の端末で既にサインインしています"</string>
<string name="screen_qr_code_login_error_expired_subtitle">"サインインが無効です。もう一度試してください。"</string>
<string name="screen_qr_code_login_error_expired_title">"サインインが時間内に完了しませんでした"</string>
<string name="screen_qr_code_login_error_linking_not_suported_subtitle">"QRコードを使用した %s へのサインインに他の端末が対応していません。
異なる端末でQRコードを読み取るか、手動でサインインしてください。"</string>
<string name="screen_qr_code_login_error_linking_not_suported_title">"QRコードに非対応"</string>
<string name="screen_qr_code_login_error_sliding_sync_not_supported_subtitle">"アカウント提供元が %1$s に対応していません。"</string>
<string name="screen_qr_code_login_error_sliding_sync_not_supported_title">"%1$s に非対応"</string>
<string name="screen_qr_code_login_invalid_scan_state_description">"もう一方の端末に表示されているQRコードを使用してください"</string>
<string name="screen_qr_code_login_invalid_scan_state_retry_button">"もう一度やり直してください"</string>
<string name="screen_qr_code_login_invalid_scan_state_subtitle">"QRコードが間違っています"</string>
<string name="screen_qr_code_login_no_camera_permission_state_description">"続行するには、%1$s にカメラの使用を許可する必要があります。"</string>
<string name="screen_qr_code_login_no_camera_permission_state_title">"QRコードを読み取るため、カメラへのアクセスを許可"</string>
<string name="screen_qr_code_login_unknown_error_description">"予期せぬ問題が発生しました。もう一度試してください。"</string>
</resources>

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_qr_code_login_invalid_scan_state_retry_button">"Thử lại"</string>
</resources>

View file

@ -23,7 +23,7 @@
<string name="screen_link_new_device_mobile_step3">"请用另一台设备扫描此处显示的二维码"</string>
<string name="screen_link_new_device_mobile_title">"在另一台设备上打开 %1$s"</string>
<string name="screen_link_new_device_root_desktop_computer">"台式计算机"</string>
<string name="screen_link_new_device_root_loading_qr_code">"正在加载 QR 码…"</string>
<string name="screen_link_new_device_root_loading_qr_code">"正在加载二维码…"</string>
<string name="screen_link_new_device_root_mobile_device">"移动设备"</string>
<string name="screen_link_new_device_root_title">"您想连接哪种类型的设备?"</string>
<string name="screen_link_new_device_wrong_number_subtitle">"请重试,并确保您已正确输入两位验证码。如果验证码仍然不匹配,请联系您的账户提供商。"</string>

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_share_location_live_location_duration_picker_title">"Zvolte, jak dlouho chcete sdílet svou aktuální polohu."</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_share_location_live_location_disclaimer_title">"Votre historique de localisation en direct sera enregistré dans le salon et visible par les membres après la fin de la session."</string>
<string name="screen_share_location_live_location_duration_picker_title">"Choisissez la durée pendant laquelle vous partagerez votre position en direct."</string>
</resources>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_share_location_live_location_disclaimer_title">"Az élő helymeghatározás története a szobában lesz tárolva, és a munkamenet befejezése után is látható marad a tagok számára."</string>
<string name="screen_share_location_live_location_duration_picker_title">"Válassza ki, mennyi ideig szeretné megosztani az aktuális tartózkodási helyét."</string>
</resources>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_share_location_live_location_disclaimer_title">"La cronologia delle tue posizioni in tempo reale verrà archiviata nella stanza e sarà visibile ai membri al termine della sessione."</string>
<string name="screen_share_location_live_location_duration_picker_title">"Scegli per quanto tempo condividere la tua posizione in tempo reale."</string>
</resources>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_share_location_live_location_disclaimer_title">"ライブ位置情報の履歴はルームに保管され、メンバーは後から確認することもできます。"</string>
<string name="screen_share_location_live_location_duration_picker_title">"ライブ位置情報を共有する期間を選択してください。"</string>
</resources>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_share_location_live_location_disclaimer_title">"실시간 위치 기록은 대화방에 저장되며, 공유 종료 후에도 멤버들이 확인할 수 있습니다."</string>
<string name="screen_share_location_live_location_duration_picker_title">"실시간 위치를 공유할 시간을 선택해 주세요."</string>
</resources>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_share_location_live_location_disclaimer_title">"История вашего местоположения в режиме реального времени будет сохранена в комнате и станет доступна участникам после окончания сессии."</string>
<string name="screen_share_location_live_location_duration_picker_title">"Выберите, как долго вы будете делиться своим местоположением в режиме реального времени."</string>
</resources>

View file

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_share_location_live_location_disclaimer_title">"Your live location history will be stored in the room and visible to members after the session ends."</string>
<string name="screen_share_location_live_location_duration_picker_title">"Choose how long to share your live location."</string>
</resources>

View file

@ -23,7 +23,7 @@ Vyberte si něco zapamatovatelného. Pokud tento kód PIN zapomenete, budete z a
<string name="screen_app_lock_setup_pin_mismatch_dialog_content">"Zadejte stejný PIN dvakrát"</string>
<string name="screen_app_lock_setup_pin_mismatch_dialog_title">"PIN kódy se neshodují."</string>
<string name="screen_app_lock_signout_alert_message">"Abyste mohli pokračovat, budete se muset znovu přihlásit a vytvořit nový PIN"</string>
<string name="screen_app_lock_signout_alert_title">"Jste odhlášeni"</string>
<string name="screen_app_lock_signout_alert_title">"Toto zařízení se odstraňuje"</string>
<plurals name="screen_app_lock_subtitle">
<item quantity="one">"Máte %1$d pokus pro odemknutí"</item>
<item quantity="few">"Máte %1$d pokusy pro odemknutí"</item>
@ -36,5 +36,5 @@ Vyberte si něco zapamatovatelného. Pokud tento kód PIN zapomenete, budete z a
</plurals>
<string name="screen_app_lock_use_biometric_android">"Použijte biometrické údaje"</string>
<string name="screen_app_lock_use_pin_android">"Použít PIN"</string>
<string name="screen_signout_in_progress_dialog_content">"Odhlašování…"</string>
<string name="screen_signout_in_progress_dialog_content">"Odebírání zařízení…"</string>
</resources>

View file

@ -23,7 +23,7 @@ Válasszon valami megjegyezhetőt. Ha elfelejti a PIN-kódot, akkor ki lesz jele
<string name="screen_app_lock_setup_pin_mismatch_dialog_content">"Adja meg a PIN-kódját kétszer"</string>
<string name="screen_app_lock_setup_pin_mismatch_dialog_title">"A PIN-kódok nem egyeznek"</string>
<string name="screen_app_lock_signout_alert_message">"A folytatáshoz újra be kell jelentkeznie, és létre kell hoznia egy új PIN-kódot"</string>
<string name="screen_app_lock_signout_alert_title">"Kijelentkeztetésre kerül"</string>
<string name="screen_app_lock_signout_alert_title">"Ez az eszköz eltávolításra kerül"</string>
<plurals name="screen_app_lock_subtitle">
<item quantity="one">"%1$d próbálkozása van a feloldáshoz"</item>
<item quantity="other">"%1$d próbálkozása van a feloldáshoz"</item>
@ -34,5 +34,5 @@ Válasszon valami megjegyezhetőt. Ha elfelejti a PIN-kódot, akkor ki lesz jele
</plurals>
<string name="screen_app_lock_use_biometric_android">"Biometrikus adatok használata"</string>
<string name="screen_app_lock_use_pin_android">"PIN-kód használata"</string>
<string name="screen_signout_in_progress_dialog_content">"Kijelentkezés…"</string>
<string name="screen_signout_in_progress_dialog_content">"Eszköz eltávolítása…"</string>
</resources>

View file

@ -23,7 +23,7 @@ Scegli un PIN facile da ricordare. Se lo dimentichi, verrai disconnesso dalla
<string name="screen_app_lock_setup_pin_mismatch_dialog_content">"Inserisci lo stesso PIN due volte"</string>
<string name="screen_app_lock_setup_pin_mismatch_dialog_title">"I PIN non corrispondono"</string>
<string name="screen_app_lock_signout_alert_message">"Dovrai effettuare nuovamente l\'accesso e creare un nuovo PIN per procedere"</string>
<string name="screen_app_lock_signout_alert_title">"Stai per essere disconnesso"</string>
<string name="screen_app_lock_signout_alert_title">"Questo dispositivo verrà rimosso"</string>
<plurals name="screen_app_lock_subtitle">
<item quantity="one">"Hai %1$d tentativo di sblocco"</item>
<item quantity="other">"Hai %1$d tentativi di sblocco"</item>
@ -34,5 +34,5 @@ Scegli un PIN facile da ricordare. Se lo dimentichi, verrai disconnesso dalla
</plurals>
<string name="screen_app_lock_use_biometric_android">"Usa la biometria"</string>
<string name="screen_app_lock_use_pin_android">"Usa il PIN"</string>
<string name="screen_signout_in_progress_dialog_content">"Disconnessione in corso…"</string>
<string name="screen_signout_in_progress_dialog_content">"Rimozione del dispositivo…"</string>
</resources>

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_app_lock_biometric_authentication">"生体認証"</string>
<string name="screen_app_lock_biometric_unlock">"生体認証で解除"</string>
<string name="screen_app_lock_biometric_unlock_title_android">"生体認証を使用"</string>
<string name="screen_app_lock_confirm_biometric_authentication_android">"生体認証を使用しますか?"</string>
<string name="screen_app_lock_forgot_pin">"PINをお忘れですか"</string>
<string name="screen_app_lock_settings_change_pin">"PINを変更"</string>
<string name="screen_app_lock_settings_enable_biometric_unlock">"生体認証を使用"</string>
<string name="screen_app_lock_settings_remove_pin">"PINを削除"</string>
<string name="screen_app_lock_settings_remove_pin_alert_message">"本当にPINを削除しますか"</string>
<string name="screen_app_lock_settings_remove_pin_alert_title">"PINを削除しますか"</string>
<string name="screen_app_lock_setup_biometric_unlock_allow_title">"%1$sを使用"</string>
<string name="screen_app_lock_setup_biometric_unlock_skip">"PINを使用する"</string>
<string name="screen_app_lock_setup_biometric_unlock_subtitle">"素早い認証のために %1$s を常に使用"</string>
<string name="screen_app_lock_setup_choose_pin">"PINを選択"</string>
<string name="screen_app_lock_setup_confirm_pin">"PINの確認"</string>
<string name="screen_app_lock_setup_pin_context">"チャットのセキュリティを強化するため、%1$s を保護しましょう。
覚えやすいPINを設定してください。PINを忘れると、アプリにログインできなくなります。"</string>
<string name="screen_app_lock_setup_pin_forbidden_dialog_content">"セキュリティ上の理由により、入力された内容をPINとして使用できません。"</string>
<string name="screen_app_lock_setup_pin_forbidden_dialog_title">"別のPINを使用してください"</string>
<string name="screen_app_lock_setup_pin_mismatch_dialog_content">"同一のPINを2回入力してください"</string>
<string name="screen_app_lock_setup_pin_mismatch_dialog_title">"PINが一致しません"</string>
<string name="screen_app_lock_signout_alert_message">"再度ログインし、PINを再設定する必要があります"</string>
<string name="screen_app_lock_signout_alert_title">"端末を削除しようとしています"</string>
<plurals name="screen_app_lock_subtitle">
<item quantity="other">"%1$d 回試すことができます"</item>
</plurals>
<plurals name="screen_app_lock_subtitle_wrong_pin">
<item quantity="other">"PINが間違っています。あと %1$d 回試すことができます。"</item>
</plurals>
<string name="screen_app_lock_use_biometric_android">"生体認証を使用"</string>
<string name="screen_app_lock_use_pin_android">"PINを使用"</string>
<string name="screen_signout_in_progress_dialog_content">"削除中…"</string>
</resources>

View file

@ -36,5 +36,5 @@
</plurals>
<string name="screen_app_lock_use_biometric_android">"Использовать биометрию"</string>
<string name="screen_app_lock_use_pin_android">"Использовать PIN-код"</string>
<string name="screen_signout_in_progress_dialog_content">"Выполняется выход…"</string>
<string name="screen_signout_in_progress_dialog_content">"Удаление устройства…"</string>
</resources>

View file

@ -34,5 +34,5 @@ Välj något minnesvärt. Om du glömmer den här PIN-koden loggas du ut från a
</plurals>
<string name="screen_app_lock_use_biometric_android">"Använd biometri"</string>
<string name="screen_app_lock_use_pin_android">"Använd PIN-kod"</string>
<string name="screen_signout_in_progress_dialog_content">"Loggar ut …"</string>
<string name="screen_signout_in_progress_dialog_content">"Tar bort enhet …"</string>
</resources>

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_app_lock_biometric_authentication">"xác thực sinh trắc học"</string>
<string name="screen_app_lock_biometric_unlock">"mở khóa sinh trắc học"</string>
<string name="screen_app_lock_biometric_unlock_title_android">"Mở khóa bằng sinh trắc học"</string>
<string name="screen_app_lock_forgot_pin">"Quên mã PIN rồi à?"</string>
<string name="screen_app_lock_settings_change_pin">"Thay đổi mã PIN"</string>
<string name="screen_app_lock_settings_enable_biometric_unlock">"Cho phép mở khóa bằng sinh trắc học"</string>
<string name="screen_app_lock_settings_remove_pin">"Xóa mã PIN"</string>
<string name="screen_app_lock_settings_remove_pin_alert_message">"Bạn có chắc chắn muốn xóa mã PIN không?"</string>
<string name="screen_app_lock_settings_remove_pin_alert_title">"Xóa mã PIN?"</string>
<string name="screen_app_lock_setup_biometric_unlock_allow_title">"Cho phép %1$s"</string>
<string name="screen_app_lock_setup_biometric_unlock_skip">"Tôi thích dùng mã PIN hơn."</string>
<string name="screen_app_lock_setup_biometric_unlock_subtitle">"Dùng %1$s để mở khóa ứng dụng nhanh hơn."</string>
<string name="screen_app_lock_setup_choose_pin">"Chọn mã PIN"</string>
<string name="screen_app_lock_setup_confirm_pin">"Xác nhận mã PIN"</string>
<string name="screen_app_lock_setup_pin_context">"Khóa %1$s để tăng cường bảo mật cho các cuộc trò chuyện của bạn.
Chọn một mã dễ nhớ. Nếu quên PIN này, bạn sẽ bị đăng xuất khỏi ứng dụng."</string>
<string name="screen_app_lock_setup_pin_forbidden_dialog_content">"Vì lý do bảo mật, bạn không thể chọn mã này làm mã PIN của mình."</string>
<string name="screen_app_lock_setup_pin_forbidden_dialog_title">"Chọn mã PIN khác"</string>
<string name="screen_app_lock_setup_pin_mismatch_dialog_content">"Vui lòng nhập cùng một mã PIN hai lần."</string>
<string name="screen_app_lock_setup_pin_mismatch_dialog_title">"Mã PIN không khớp"</string>
<string name="screen_app_lock_signout_alert_message">"Đăng nhập lại và tạo PIN mới để tiếp tục."</string>
<string name="screen_app_lock_signout_alert_title">"Thiết bị này đang được gỡ bỏ"</string>
<plurals name="screen_app_lock_subtitle">
<item quantity="other">"Bạn còn %1$d lần thử để mở khóa"</item>
</plurals>
<plurals name="screen_app_lock_subtitle_wrong_pin">
<item quantity="other">"PIN không đúng. Còn %1$d lần thử"</item>
</plurals>
<string name="screen_app_lock_use_biometric_android">"Sử dụng sinh trắc học"</string>
<string name="screen_app_lock_use_pin_android">"Sử dụng mã PIN"</string>
<string name="screen_signout_in_progress_dialog_content">"Đang gỡ thiết bị…"</string>
</resources>

View file

@ -32,5 +32,5 @@
</plurals>
<string name="screen_app_lock_use_biometric_android">"使用生物识别"</string>
<string name="screen_app_lock_use_pin_android">"使用 PIN 码"</string>
<string name="screen_signout_in_progress_dialog_content">"正在登出…"</string>
<string name="screen_signout_in_progress_dialog_content">"正在删除设备……"</string>
</resources>

View file

@ -60,6 +60,8 @@
<string name="screen_qr_code_login_error_cancelled_title">"Richiesta di accesso annullata"</string>
<string name="screen_qr_code_login_error_declined_subtitle">"L\'accesso è stato rifiutato sull\'altro dispositivo."</string>
<string name="screen_qr_code_login_error_declined_title">"Accesso rifiutato"</string>
<string name="screen_qr_code_login_error_device_already_signed_in_subtitle">"Non devi fare altro."</string>
<string name="screen_qr_code_login_error_device_already_signed_in_title">"L\'altro tuo dispositivo è già connesso"</string>
<string name="screen_qr_code_login_error_expired_subtitle">"L\'accesso è scaduto. Riprova."</string>
<string name="screen_qr_code_login_error_expired_title">"L\'accesso non è stato completato in tempo"</string>
<string name="screen_qr_code_login_error_linking_not_suported_subtitle">"L\'altro dispositivo non supporta l\'accesso a %s con un codice QR.

View file

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_account_provider_change">"アカウントの提供元を変更"</string>
<string name="screen_account_provider_form_hint">"ホームサーバーのアドレス"</string>
<string name="screen_account_provider_form_notice">"検索用のキーワードまたはドメインのアドレスを入力してください。"</string>
<string name="screen_account_provider_form_subtitle">"会社やコミュニティ, 個人のサーバーなどを検索します。"</string>
<string name="screen_account_provider_form_title">"アカウントの提供元を検索"</string>
<string name="screen_account_provider_signin_subtitle">"メールアプリのように、あなたの会話はここに保管されています。"</string>
<string name="screen_account_provider_signin_title">"%s にサインインを試みています"</string>
<string name="screen_account_provider_signup_subtitle">"メールアプリのように、あなたの会話はここに保管されています。"</string>
<string name="screen_account_provider_signup_title">"%s にアカウントの作成を試みています"</string>
<string name="screen_change_account_provider_matrix_org_subtitle">"Matrix.org は Matrix.org Foundation が運営する、大規模で安全な分散型コミュニケーションを実現する無償のサーバーです。"</string>
<string name="screen_change_account_provider_other">"その他"</string>
<string name="screen_change_account_provider_subtitle">"自身のサーバーや仕事用のアカウントにサインインするには、アカウント提供元のサーバーを指定してください。"</string>
<string name="screen_change_account_provider_title">"アカウントの提供元を変更"</string>
<string name="screen_change_server_error_element_pro_required_action_android">"Google Play"</string>
<string name="screen_change_server_error_element_pro_required_message">"%1$s では Element Pro を使用する必要があります。アプリストアよりダウンロードしてください。"</string>
<string name="screen_change_server_error_element_pro_required_title">"Element Pro が必要です"</string>
<string name="screen_change_server_error_invalid_homeserver">"このホームサーバーに接続できませんでした。正しいURLを入力したことを確認し、問題が継続する場合は、ホームサーバーの管理者に問い合わせてください。"</string>
<string name="screen_change_server_error_invalid_well_known">".well-knownファイルに問題があるためサーバーを使用できません: %1$s"</string>
<string name="screen_change_server_error_no_sliding_sync_message">"このアカウント提供元は、スライド同期に対応していません。%1$s を使用するにはサーバーのアップグレードが必要です。"</string>
<string name="screen_change_server_error_unauthorized_homeserver">"%2$s は %1$s からの接続を許可していません。"</string>
<string name="screen_change_server_error_unauthorized_homeserver_content">"このアプリは次のサーバーを許可します: %1$s"</string>
<string name="screen_change_server_error_unauthorized_homeserver_title">"アカウント提供元 %1$s は許可されていません。"</string>
<string name="screen_change_server_form_header">"ホームサーバーURL"</string>
<string name="screen_change_server_form_notice">"ドメイン名を入力してください"</string>
<string name="screen_change_server_subtitle">"サーバーのアドレスは何ですか?"</string>
<string name="screen_change_server_title">"サーバーを選択"</string>
<string name="screen_create_account_title">"アカウントを作成"</string>
<string name="screen_login_error_deactivated_account">"このアカウントは無効化されています。"</string>
<string name="screen_login_error_invalid_credentials">"ユーザー名またはパスワードが違います"</string>
<string name="screen_login_error_invalid_user_id">"無効なユーザーIDです。正しい形式は \"@ユーザー:ホームサーバー\" です。"</string>
<string name="screen_login_error_refresh_tokens">"このサーバーはリフレッシュトークンを使用します。パスワードを使用したログインとは併用できません。"</string>
<string name="screen_login_error_unsupported_authentication">"指定したホームサーバはパスワードまたはOIDCによるログインに対応していません。管理者に問い合わせるか、異なるホームサーバーを使用してください。"</string>
<string name="screen_login_form_header">"詳細を入力"</string>
<string name="screen_login_subtitle">"Matrix は安全で分散型のオープンなネットワークです。"</string>
<string name="screen_login_title">"お待ちしておりました。"</string>
<string name="screen_login_title_with_homeserver">"%1$s にサインイン"</string>
<string name="screen_onboarding_app_version">"バージョン %1$s"</string>
<string name="screen_onboarding_sign_in_manually">"手動で指定してサインイン"</string>
<string name="screen_onboarding_sign_in_to">"%1$s にサインイン"</string>
<string name="screen_onboarding_sign_in_with_qr_code">"QRコードでサインイン"</string>
<string name="screen_onboarding_sign_up">"アカウントを作成"</string>
<string name="screen_onboarding_welcome_message">"最速の %1$s にようこそ。機能性と利便性を極限まで追求しました。"</string>
<string name="screen_onboarding_welcome_subtitle">"機敏と利便を追求した %1$s へようこそ。"</string>
<string name="screen_onboarding_welcome_title">"Be in your element"</string>
<string name="screen_qr_code_login_connecting_subtitle">"安全な通信を確立しています"</string>
<string name="screen_qr_code_login_connection_note_secure_state_description">"新しい端末で安全な通信を確立できませんでした。既存の端末は安全な状態を維持しています。"</string>
<string name="screen_qr_code_login_connection_note_secure_state_list_header">"どうしますか?"</string>
<string name="screen_qr_code_login_connection_note_secure_state_list_item_1">"ネットワークの問題の可能性があるため、再度QRコードでログインを試してください。"</string>
<string name="screen_qr_code_login_connection_note_secure_state_list_item_2">"同様の問題が発生する場合は、異なるWi-Fiやモバイルデータ通信を試してください"</string>
<string name="screen_qr_code_login_connection_note_secure_state_list_item_3">"問題が解決しない場合は、手動でサインインしてください"</string>
<string name="screen_qr_code_login_connection_note_secure_state_title">"接続が安全ではありません"</string>
<string name="screen_qr_code_login_device_code_subtitle">"この端末に表示される2つの数字の入力を要求されます"</string>
<string name="screen_qr_code_login_device_code_title">"もう一方に表示される数字を入力してください"</string>
<string name="screen_qr_code_login_device_not_signed_in_scan_state_description">"他の端末にサインインしてからもう一度試すか、既にサインインしてある端末を使用してください"</string>
<string name="screen_qr_code_login_device_not_signed_in_scan_state_subtitle">"他の端末でサインインしていません"</string>
<string name="screen_qr_code_login_error_cancelled_subtitle">"もう一方の端末がサインインをキャンセルしました"</string>
<string name="screen_qr_code_login_error_cancelled_title">"サインインのリクエストがキャンセルされました"</string>
<string name="screen_qr_code_login_error_declined_subtitle">"もう一方の端末でサインインを拒否されました"</string>
<string name="screen_qr_code_login_error_declined_title">"サインインを拒否"</string>
<string name="screen_qr_code_login_error_device_already_signed_in_subtitle">"他には何もする必要はありません。"</string>
<string name="screen_qr_code_login_error_device_already_signed_in_title">"他の端末で既にサインインしています"</string>
<string name="screen_qr_code_login_error_expired_subtitle">"サインインが無効です。もう一度試してください。"</string>
<string name="screen_qr_code_login_error_expired_title">"サインインが時間内に完了しませんでした"</string>
<string name="screen_qr_code_login_error_linking_not_suported_subtitle">"QRコードを使用した %s へのサインインに他の端末が対応していません。
異なる端末でQRコードを読み取るか、手動でサインインしてください。"</string>
<string name="screen_qr_code_login_error_linking_not_suported_title">"QRコードに非対応"</string>
<string name="screen_qr_code_login_error_sliding_sync_not_supported_subtitle">"アカウント提供元が %1$s に対応していません。"</string>
<string name="screen_qr_code_login_error_sliding_sync_not_supported_title">"%1$s に非対応"</string>
<string name="screen_qr_code_login_initial_state_button_title">"読み取る"</string>
<string name="screen_qr_code_login_initial_state_item_1">"コンピュータで %1$s を開く"</string>
<string name="screen_qr_code_login_initial_state_item_2">"アバターをタップしてください"</string>
<string name="screen_qr_code_login_initial_state_item_3">"%1$s を選択してください"</string>
<string name="screen_qr_code_login_initial_state_item_3_action">"\"新しい端末を追加\""</string>
<string name="screen_qr_code_login_initial_state_item_4">"この端末でQRコードを読み取る"</string>
<string name="screen_qr_code_login_initial_state_subtitle">"アカウント提供元が対応する場合にのみ使用できます。"</string>
<string name="screen_qr_code_login_initial_state_title">"他の端末の %1$s でQRコードを表示"</string>
<string name="screen_qr_code_login_invalid_scan_state_description">"もう一方の端末に表示されているQRコードを使用してください"</string>
<string name="screen_qr_code_login_invalid_scan_state_retry_button">"もう一度やり直してください"</string>
<string name="screen_qr_code_login_invalid_scan_state_subtitle">"QRコードが間違っています"</string>
<string name="screen_qr_code_login_no_camera_permission_button">"カメラの設定を開く"</string>
<string name="screen_qr_code_login_no_camera_permission_state_description">"続行するには、%1$s にカメラの使用を許可する必要があります。"</string>
<string name="screen_qr_code_login_no_camera_permission_state_title">"QRコードを読み取るため、カメラへのアクセスを許可"</string>
<string name="screen_qr_code_login_scanning_state_title">"QRコードを読み取り"</string>
<string name="screen_qr_code_login_start_over_button">"やり直す"</string>
<string name="screen_qr_code_login_unknown_error_description">"予期せぬ問題が発生しました。もう一度試してください。"</string>
<string name="screen_qr_code_login_verify_code_loading">"一方の端末を待機しています"</string>
<string name="screen_qr_code_login_verify_code_subtitle">"アカウント提供元が、サインインを検証するために以下の文字列を要求することがあります。"</string>
<string name="screen_qr_code_login_verify_code_title">"検証コード"</string>
<string name="screen_server_confirmation_change_server">"アカウントの提供元を変更"</string>
<string name="screen_server_confirmation_message_login_element_dot_io">"Element 開発者用の非公開のサーバーです。"</string>
<string name="screen_server_confirmation_message_login_matrix_dot_org">"Matrix は安全で分散型のオープンなネットワークです。"</string>
<string name="screen_server_confirmation_message_register">"メールアプリのように、あなたの会話はここに保管されています。"</string>
<string name="screen_server_confirmation_title_login">"%1$s にサインインを試みています"</string>
<string name="screen_server_confirmation_title_picker_mode">"アカウント提供元を選択"</string>
<string name="screen_server_confirmation_title_register">"%1$s 上にアカウントの作成を試みています"</string>
</resources>

View file

@ -4,17 +4,29 @@
<string name="screen_account_provider_form_hint">"Pagrindinio serverio adresas"</string>
<string name="screen_account_provider_form_notice">"Įveskite paieškos terminą arba domeno adresą."</string>
<string name="screen_account_provider_form_subtitle">"Ieškokite bendrovės, bendruomenės arba privataus serverio."</string>
<string name="screen_account_provider_form_title">"Rasti paskyros teikėją"</string>
<string name="screen_account_provider_form_title">"Raskite paskyros teikėją"</string>
<string name="screen_account_provider_signin_subtitle">"Čia bus saugomi Jūsų pokalbiai - panašiai kaip el. pašto paslaugų teikėjas saugo Jūsų el. laiškus."</string>
<string name="screen_account_provider_signin_title">"Ketinate prisijungti prie %s"</string>
<string name="screen_account_provider_signup_subtitle">"Čia bus saugomi Jūsų pokalbiai - panašiai kaip el. pašto paslaugų teikėjas saugo Jūsų el. laiškus."</string>
<string name="screen_account_provider_signup_title">"Ketinate sukurti paskyrą teikėjoje %s"</string>
<string name="screen_change_account_provider_other">"Kita"</string>
<string name="screen_change_account_provider_subtitle">"Naudokite skirtingą paskyros teikėją, pavyzdžiui, savo privatų serverį arba darbo paskyrą."</string>
<string name="screen_change_account_provider_matrix_org_subtitle">"Matrix.org tai didelis nemokamas serveris viešajame „Matrix“ tinkle saugiam ir decentralizuotam bendravimui, kurį valdo „Matrix.org“ fondas."</string>
<string name="screen_change_account_provider_other">"Kitas"</string>
<string name="screen_change_account_provider_subtitle">"Naudokite kitą paskyros teikėją, pavyzdžiui, savo privatų serverį arba darbo paskyrą."</string>
<string name="screen_change_account_provider_title">"Keisti paskyros teikėją"</string>
<string name="screen_change_server_error_invalid_homeserver">"Nepavyko pasiekti šio serverio. Patikrinkite, ar teisingai įvedėte serverio URL. Jei URL yra teisingas, susisiekite su serverio administracija dėl tolimesnės pagalbos."</string>
<string name="screen_change_server_form_header">"Serverio URL"</string>
<string name="screen_change_server_subtitle">"Koks yra Jūsų serverio adresas?"</string>
<string name="screen_change_server_error_element_pro_required_action_android">"„Google Play“"</string>
<string name="screen_change_server_error_element_pro_required_message">"„Element Pro“ programa privaloma teikėjoje %1$s. Atsisiųskite ją iš parduotuvės."</string>
<string name="screen_change_server_error_element_pro_required_title">"„Element Pro“ privaloma"</string>
<string name="screen_change_server_error_invalid_homeserver">"Nepavyko pasiekti šio pagrindinio serverio. Patikrinkite, ar teisingai įvedėte serverio URL. Jei URL yra teisingas, susisiekite su serverio administratoriumi dėl tolimesnės pagalbos."</string>
<string name="screen_change_server_error_invalid_well_known">"Serveris nepasiekiamas dėl problemos .labai-zinomame faile:
%1$s"</string>
<string name="screen_change_server_error_no_sliding_sync_message">"Pasirinktas paskyros teikėjas nepalaiko slankiojo sinchronizavimo. Norint naudoti „%1$s“, reikia atnaujinti serverį."</string>
<string name="screen_change_server_error_unauthorized_homeserver">"„%1$s“ neleidžiama prisijungti prie %2$s."</string>
<string name="screen_change_server_error_unauthorized_homeserver_content">"Ši programa sukonfigūruota, kad leistų %1$s."</string>
<string name="screen_change_server_error_unauthorized_homeserver_title">"Paskyros teikėjas %1$s neleidžiamas."</string>
<string name="screen_change_server_form_header">"Pagrindinio serverio URL"</string>
<string name="screen_change_server_form_notice">"Įveskite domeno adresą."</string>
<string name="screen_change_server_subtitle">"Koks yra jūsų serverio adresas?"</string>
<string name="screen_change_server_title">"Pasirinkite savo serverį"</string>
<string name="screen_create_account_title">"Kurti paskyrą"</string>
<string name="screen_login_error_deactivated_account">"Ši paskyra buvo išjungta."</string>
<string name="screen_login_error_invalid_credentials">"Neteisingas vartotojo vardas ir (arba) slaptažodis"</string>
@ -31,7 +43,7 @@
<string name="screen_onboarding_sign_up">"Kurti paskyrą"</string>
<string name="screen_onboarding_welcome_message">"Sveiki atvykę į sparčiausią „%1$s“ kada nors. Pagerintas spartai ir paprastumui."</string>
<string name="screen_onboarding_welcome_subtitle">"Sveiki atvykę į „%1$s“. Pagerintas spartai ir paprastumui."</string>
<string name="screen_onboarding_welcome_title">"Būkite savo elemente"</string>
<string name="screen_onboarding_welcome_title">"Būkite savo stichijoje"</string>
<string name="screen_server_confirmation_change_server">"Keisti paskyros teikėją"</string>
<string name="screen_server_confirmation_message_login_element_dot_io">"Privatus serveris “Element” darbuotojams."</string>
<string name="screen_server_confirmation_message_login_matrix_dot_org">"Matrix yra atviras tinklas, skirtas saugiam, decentralizuotam bendravimui."</string>

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_account_provider_change">"Thay đổi nhà cung cấp tài khoản"</string>
<string name="screen_account_provider_form_hint">"Địa chỉ Homeserver"</string>
<string name="screen_account_provider_form_notice">"Nhập từ khóa tìm kiếm hoặc địa chỉ tên miền."</string>
<string name="screen_account_provider_form_subtitle">"Tìm kiếm công ty, cộng đồng hoặc máy chủ riêng."</string>
<string name="screen_account_provider_form_title">"Tìm nhà cung cấp tài khoản"</string>
<string name="screen_account_provider_signin_subtitle">"Đây là nơi các cuộc trò chuyện của bạn sẽ được lưu — giống như bạn dùng nhà cung cấp email để giữ email của mình."</string>
<string name="screen_account_provider_signin_title">"Bạn sắp đăng nhập vào %s"</string>
<string name="screen_account_provider_signup_subtitle">"Đây là nơi các cuộc trò chuyện của bạn sẽ được lưu — giống như bạn dùng nhà cung cấp email để giữ email của mình."</string>
<string name="screen_account_provider_signup_title">"Bạn sắp tạo tài khoản trên %s"</string>
<string name="screen_change_account_provider_matrix_org_subtitle">"Matrix.org là một máy chủ lớn, miễn phí trên mạng Matrix công cộng, cung cấp liên lạc an toàn và phi tập trung, được điều hành bởi Quỹ Matrix.org."</string>
<string name="screen_change_account_provider_other">"Khác"</string>
<string name="screen_change_account_provider_subtitle">"Sử dụng nhà cung cấp tài khoản khác, ví dụ như máy chủ riêng của bạn hoặc tài khoản công việc."</string>
<string name="screen_change_account_provider_title">"Thay đổi nhà cung cấp tài khoản"</string>
<string name="screen_change_server_error_invalid_homeserver">"Chúng tớ không thể kết nối với homeserver này. Vui lòng kiểm tra xem cậu đã nhập URL homeserver chính xác chưa. Nếu URL chính xác, hãy liên hệ với quản trị viên homeserver để được hỗ trợ thêm."</string>
<string name="screen_change_server_error_invalid_well_known">"Máy chủ không khả dụng do sự cố trong tệp .well-known:
%1$s"</string>
<string name="screen_change_server_form_header">"URL homeserver"</string>
<string name="screen_change_server_subtitle">"Địa chỉ máy chủ của bạn là gì?"</string>
<string name="screen_change_server_title">"Chọn máy chủ của bạn"</string>
<string name="screen_create_account_title">"Tạo tài khoản"</string>
<string name="screen_login_error_deactivated_account">"Tài khoản này đã bị vô hiệu hóa."</string>
<string name="screen_login_error_invalid_credentials">"Tên người dùng và/hoặc mật khẩu không chính xác"</string>
<string name="screen_login_error_invalid_user_id">"Đây không phải là mã nhận dạng người dùng hợp lệ. Định dạng mong đợi: @user:homeserver.org"</string>
<string name="screen_login_error_refresh_tokens">"Máy chủ này được cấu hình sử dụng refresh token. Điều này không được hỗ trợ khi đăng nhập bằng mật khẩu."</string>
<string name="screen_login_error_unsupported_authentication">"Homeserver đã chọn không hỗ trợ đăng nhập bằng mật khẩu hoặc OIDC. Vui lòng liên hệ với quản trị viên của cậu hoặc chọn một homeserver khác."</string>
<string name="screen_login_form_header">"Nhập thông tin chi tiết của bạn."</string>
<string name="screen_login_subtitle">"Matrix là một mạng mở cho việc liên lạc an toàn và phi tập trung."</string>
<string name="screen_login_title">"Chào mừng bạn quay trở lại!"</string>
<string name="screen_login_title_with_homeserver">"Đăng nhập vào %1$s"</string>
<string name="screen_onboarding_sign_in_manually">"Đăng nhập thủ công"</string>
<string name="screen_onboarding_sign_in_to">"Đăng nhập vào %1$s"</string>
<string name="screen_onboarding_sign_in_with_qr_code">"Đăng nhập bằng mã QR"</string>
<string name="screen_onboarding_sign_up">"Tạo tài khoản"</string>
<string name="screen_onboarding_welcome_message">"Chào mừng đến với %1$s nhanh nhất từ trước đến nay. Tối ưu cho tốc độ và sự đơn giản."</string>
<string name="screen_onboarding_welcome_subtitle">"Chào mừng đến với %1$s. Tối ưu hóa cho tốc độ và sự đơn giản."</string>
<string name="screen_onboarding_welcome_title">"Hãy ở trong thế mạnh (element) của mình"</string>
<string name="screen_qr_code_login_invalid_scan_state_retry_button">"Thử lại"</string>
<string name="screen_qr_code_login_start_over_button">"Bắt đầu lại"</string>
<string name="screen_server_confirmation_change_server">"Thay đổi nhà cung cấp tài khoản"</string>
<string name="screen_server_confirmation_message_login_element_dot_io">"Máy chủ riêng dành cho nhân viên của Element."</string>
<string name="screen_server_confirmation_message_login_matrix_dot_org">"Matrix là một mạng mở cho việc liên lạc an toàn và phi tập trung."</string>
<string name="screen_server_confirmation_message_register">"Đây là nơi các cuộc trò chuyện của bạn sẽ được lưu — giống như bạn dùng nhà cung cấp email để giữ email của mình."</string>
<string name="screen_server_confirmation_title_login">"Bạn sắp đăng nhập vào %1$s"</string>
<string name="screen_server_confirmation_title_register">"Bạn sắp tạo tài khoản trên %1$s"</string>
</resources>

View file

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_signout_confirmation_dialog_content">"Opravdu se chcete odhlásit?"</string>
<string name="screen_signout_confirmation_dialog_submit">"Odhlásit se"</string>
<string name="screen_signout_confirmation_dialog_title">"Odhlásit se"</string>
<string name="screen_signout_in_progress_dialog_content">"Odhlašování…"</string>
<string name="screen_signout_key_backup_disabled_subtitle">"Chystáte se odhlásit z poslední relace. Pokud se nyní odhlásíte, ztratíte přístup ke svým šifrovaným zprávám."</string>
<string name="screen_signout_key_backup_disabled_title">"Vypnuli jste zálohování"</string>
<string name="screen_signout_key_backup_offline_subtitle">"Když jste přešli do režimu offline, vaše klíče se ještě stále zálohovaly. Znovu se připojte, aby bylo možné před odhlášením zálohovat vaše klíče."</string>
<string name="screen_signout_confirmation_dialog_content">"Opravdu chcete odstranit toto zařízení?"</string>
<string name="screen_signout_confirmation_dialog_submit">"Odebrat toto zařízení"</string>
<string name="screen_signout_confirmation_dialog_title">"Odebrat toto zařízení"</string>
<string name="screen_signout_in_progress_dialog_content">"Odebírání zařízení…"</string>
<string name="screen_signout_key_backup_disabled_subtitle">"Toto je vaše jediné zařízení. Pokud ho odstraníte, budete potřebovat klíč pro obnovení, abyste si při příštím přihlášení ověřili svou digitální identitu a obnovili šifrované chaty."</string>
<string name="screen_signout_key_backup_disabled_title">"Chystáte se ztratit přístup ke svým šifrovaným chatům"</string>
<string name="screen_signout_key_backup_offline_subtitle">"Vaše klíče se stále zálohovaly, když jste byli offline. Před odpojením tohoto zařízení se znovu připojte, aby se vaše klíče mohly zálohovat."</string>
<string name="screen_signout_key_backup_offline_title">"Vaše klíče jsou stále zálohovány"</string>
<string name="screen_signout_key_backup_ongoing_subtitle">"Před odhlášením prosím počkejte na dokončení."</string>
<string name="screen_signout_key_backup_ongoing_subtitle">"Před odstraněním tohoto zařízení počkejte, až se proces dokončí."</string>
<string name="screen_signout_key_backup_ongoing_title">"Vaše klíče jsou stále zálohovány"</string>
<string name="screen_signout_preference_item">"Odhlásit se"</string>
<string name="screen_signout_recovery_disabled_subtitle">"Chystáte se odhlásit z poslední relace. Pokud se nyní odhlásíte, ztratíte přístup ke svým šifrovaným zprávám."</string>
<string name="screen_signout_recovery_disabled_title">"Obnovení není nastaveno"</string>
<string name="screen_signout_save_recovery_key_subtitle">"Chystáte se odhlásit z poslední relace. Pokud se nyní odhlásíte, můžete ztratit přístup k šifrovaným zprávám."</string>
<string name="screen_signout_save_recovery_key_title">"Uložili jste si klíč pro obnovení?"</string>
<string name="screen_signout_preference_item">"Odebrat toto zařízení"</string>
<string name="screen_signout_recovery_disabled_subtitle">"Toto je vaše jediné zařízení. Pokud ho odstraníte, budete potřebovat klíč pro obnovení, abyste si při příštím přihlášení ověřili svou digitální identitu a obnovili šifrované chaty."</string>
<string name="screen_signout_recovery_disabled_title">"Chystáte se ztratit přístup ke svým šifrovaným chatům"</string>
<string name="screen_signout_save_recovery_key_subtitle">"Toto je vaše jediné zařízení. Pokud ho odstraníte, budete potřebovat klíč pro obnovení, abyste si při příštím přihlášení ověřili svou digitální identitu a obnovili šifrované chaty."</string>
<string name="screen_signout_save_recovery_key_title">"Před odebráním tohoto zařízení se ujistěte, že máte přístup ke klíči pro obnovení"</string>
</resources>

View file

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_signout_confirmation_dialog_content">"Biztos, hogy kijelentkezik?"</string>
<string name="screen_signout_confirmation_dialog_submit">"Kijelentkezés"</string>
<string name="screen_signout_confirmation_dialog_title">"Kijelentkezés"</string>
<string name="screen_signout_in_progress_dialog_content">"Kijelentkezés…"</string>
<string name="screen_signout_key_backup_disabled_subtitle">"Arra készül, hogy kijelentkezzen az utolsó munkamenetéből is. Ha most kijelentkezik, akkor elveszti a hozzáférését a titkosított üzeneteihez."</string>
<string name="screen_signout_key_backup_disabled_title">"Kikapcsolta a biztonsági mentést"</string>
<string name="screen_signout_key_backup_offline_subtitle">"A kulcsai mentése során bontotta a kapcsolatot. Kapcsolódjon újra, hogy a kulcsai továbbra is mentésre kerüljenek mielőtt kijelentkezik."</string>
<string name="screen_signout_confirmation_dialog_content">"Biztosan eltávolítja ezt az eszközt?"</string>
<string name="screen_signout_confirmation_dialog_submit">"Eszköz eltávolítása"</string>
<string name="screen_signout_confirmation_dialog_title">"Eszköz eltávolítása"</string>
<string name="screen_signout_in_progress_dialog_content">"Eszköz eltávolítása…"</string>
<string name="screen_signout_key_backup_disabled_subtitle">"Ez az egyetlen eszköze. Ha eltávolítja, a következő bejelentkezéskor szüksége lesz egy helyreállítási kulcsra a digitális személyazonossága megerősítéséhez és a titkosított csevegések helyreállításához."</string>
<string name="screen_signout_key_backup_disabled_title">"Hamarosan elveszíti a hozzáférését a titkosított csevegéseihez"</string>
<string name="screen_signout_key_backup_offline_subtitle">"A kulcsok biztonsági mentése még folyamatban volt, amikor megszűnt a hálózati kapcsolat. Csatlakozzon újra, hogy a kulcsok biztonsági mentése megtörténhessen, mielőtt eltávolítja ezt az eszközt."</string>
<string name="screen_signout_key_backup_offline_title">"A kulcsai mentése még folyamatban van"</string>
<string name="screen_signout_key_backup_ongoing_subtitle">"Kijelentkezés előtt várja meg a befejezését."</string>
<string name="screen_signout_key_backup_ongoing_subtitle">"Várja meg, amíg ez befejeződik, mielőtt eltávolítja ezt az eszközt."</string>
<string name="screen_signout_key_backup_ongoing_title">"A kulcsai mentése még folyamatban van"</string>
<string name="screen_signout_preference_item">"Kijelentkezés"</string>
<string name="screen_signout_recovery_disabled_subtitle">"Arra készül, hogy kijelentkezzen az utolsó munkamenetéből is. Ha most kijelentkezik, akkor elveszti a hozzáférését a titkosított üzeneteihez."</string>
<string name="screen_signout_recovery_disabled_title">"A helyreállítás nincs beállítva"</string>
<string name="screen_signout_save_recovery_key_subtitle">"Arra készül, hogy kijelentkezzen az utolsó munkamenetéből is. Ha most kijelentkezik, akkor elveszítheti a hozzáférését a titkosított üzeneteihez."</string>
<string name="screen_signout_save_recovery_key_title">"Mentette a helyreállítási kulcsát?"</string>
<string name="screen_signout_preference_item">"Eszköz eltávolítása"</string>
<string name="screen_signout_recovery_disabled_subtitle">"Ez az egyetlen eszköze. Ha eltávolítja, a következő bejelentkezéskor szüksége lesz egy helyreállítási kulcsra a digitális személyazonossága megerősítéséhez és a titkosított csevegések helyreállításához."</string>
<string name="screen_signout_recovery_disabled_title">"Hamarosan elveszíti a hozzáférését a titkosított csevegéseihez"</string>
<string name="screen_signout_save_recovery_key_subtitle">"Ez az egyetlen eszköze. Ha eltávolítja, a következő bejelentkezéskor szüksége lesz egy helyreállítási kulcsra a digitális személyazonossága megerősítéséhez és a titkosított csevegések helyreállításához."</string>
<string name="screen_signout_save_recovery_key_title">"Az eszköz eltávolítása előtt győződjön meg arról, hogy hozzáfér a helyreállítási kulcshoz"</string>
</resources>

View file

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_signout_confirmation_dialog_content">"Sei sicuro di voler uscire?"</string>
<string name="screen_signout_confirmation_dialog_submit">"Disconnetti"</string>
<string name="screen_signout_confirmation_dialog_title">"Disconnetti"</string>
<string name="screen_signout_in_progress_dialog_content">"Disconnessione in corso…"</string>
<string name="screen_signout_key_backup_disabled_subtitle">"Stai per disconnettere la tua ultima sessione. Se esci ora, perderai l\'accesso ai tuoi messaggi cifrati."</string>
<string name="screen_signout_key_backup_disabled_title">"Hai disattivato il backup"</string>
<string name="screen_signout_key_backup_offline_subtitle">"Il backup delle chiavi era ancora in corso quando sei andato offline. Riconnettiti per eseguire il backup delle chiavi prima di uscire."</string>
<string name="screen_signout_confirmation_dialog_content">"Sei sicuro di voler rimuovere questo dispositivo?"</string>
<string name="screen_signout_confirmation_dialog_submit">"Rimuovi questo dispositivo"</string>
<string name="screen_signout_confirmation_dialog_title">"Rimuovi questo dispositivo"</string>
<string name="screen_signout_in_progress_dialog_content">"Rimozione del dispositivo…"</string>
<string name="screen_signout_key_backup_disabled_subtitle">"Questo è il tuo unico dispositivo. Se lo rimuovi, avrai bisogno di una chiave di recupero per confermare la tua identità digitale e ripristinare le tue conversazioni cifrate al prossimo accesso."</string>
<string name="screen_signout_key_backup_disabled_title">"Stai per perdere l\'accesso alle tue conversazioni cifrate"</string>
<string name="screen_signout_key_backup_offline_subtitle">"Il backup delle tue chiavi era ancora in corso quando ti sei disconnesso. Riconnettiti in modo che il backup delle tue chiavi possa essere completato prima di rimuovere questo dispositivo."</string>
<string name="screen_signout_key_backup_offline_title">"Il backup delle chiavi è ancora in corso"</string>
<string name="screen_signout_key_backup_ongoing_subtitle">"Attendi il completamento dell\'operazione prima di uscire."</string>
<string name="screen_signout_key_backup_ongoing_subtitle">"Attendi il completamento dell\'operazione prima di rimuovere questo dispositivo."</string>
<string name="screen_signout_key_backup_ongoing_title">"Il backup delle chiavi è ancora in corso"</string>
<string name="screen_signout_preference_item">"Disconnetti"</string>
<string name="screen_signout_recovery_disabled_subtitle">"Stai per disconnettere la tua ultima sessione. Se esci ora, perderai l\'accesso ai tuoi messaggi cifrati."</string>
<string name="screen_signout_recovery_disabled_title">"Recupero non impostato"</string>
<string name="screen_signout_save_recovery_key_subtitle">"Stai per disconnettere la tua ultima sessione. Se esci ora, potresti perdere l\'accesso ai tuoi messaggi cifrati."</string>
<string name="screen_signout_save_recovery_key_title">"Hai salvato la chiave di recupero?"</string>
<string name="screen_signout_preference_item">"Rimuovi questo dispositivo"</string>
<string name="screen_signout_recovery_disabled_subtitle">"Questo è il tuo unico dispositivo. Se lo rimuovi, avrai bisogno di una chiave di recupero per confermare la tua identità digitale e ripristinare le tue conversazioni cifrate al prossimo accesso."</string>
<string name="screen_signout_recovery_disabled_title">"Stai per perdere l\'accesso alle tue conversazioni cifrate"</string>
<string name="screen_signout_save_recovery_key_subtitle">"Questo è il tuo unico dispositivo. Se lo rimuovi, avrai bisogno di una chiave di recupero per confermare la tua identità digitale e ripristinare le tue conversazioni cifrate al prossimo accesso."</string>
<string name="screen_signout_save_recovery_key_title">"Assicurati di avere accesso alla tua chiave di recupero prima di rimuovere questo dispositivo"</string>
</resources>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_signout_confirmation_dialog_content">"本当にこの端末を削除しますか?"</string>
<string name="screen_signout_confirmation_dialog_submit">"この端末を削除"</string>
<string name="screen_signout_confirmation_dialog_title">"この端末を削除"</string>
<string name="screen_signout_in_progress_dialog_content">"削除中…"</string>
<string name="screen_signout_key_backup_disabled_subtitle">"この端末が唯一の端末です。削除を続行すると次回のログインの際に、デジタルIDと暗号化された会話を復元するために、回復鍵を入力する必要があります。"</string>
<string name="screen_signout_key_backup_disabled_title">"暗号化された会話は見られなくなります"</string>
<string name="screen_signout_key_backup_offline_subtitle">"鍵のバックアップ中にオフライン状態になりました。この端末を削除する前に、オンラインに復旧してバックアップを完了させてください。"</string>
<string name="screen_signout_key_backup_offline_title">"鍵のバックアップは継続しています"</string>
<string name="screen_signout_key_backup_ongoing_subtitle">"端末の削除の前に、処理の完了をお待ち下さい。"</string>
<string name="screen_signout_key_backup_ongoing_title">"鍵のバックアップは継続しています"</string>
<string name="screen_signout_preference_item">"この端末を削除"</string>
<string name="screen_signout_recovery_disabled_subtitle">"この端末が唯一の端末です。削除を続行すると次回のログインの際に、デジタルIDと暗号化された会話を復元するために、回復鍵を入力する必要があります。"</string>
<string name="screen_signout_recovery_disabled_title">"暗号化された会話は見られなくなります"</string>
<string name="screen_signout_save_recovery_key_subtitle">"この端末が唯一の端末です。削除を続行すると次回のログインの際に、デジタルIDと暗号化された会話を復元するために、回復鍵を入力する必要があります。"</string>
<string name="screen_signout_save_recovery_key_title">"この端末を削除する前に、回復鍵が手元にあることを確認してください。"</string>
</resources>

View file

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_signout_confirmation_dialog_content">"Вы уверены, что вы хотите выйти?"</string>
<string name="screen_signout_confirmation_dialog_content">"Вы уверены, что хотите удалить это устройство?"</string>
<string name="screen_signout_confirmation_dialog_submit">"Удалить это устройство"</string>
<string name="screen_signout_confirmation_dialog_title">"Удалить это устройство"</string>
<string name="screen_signout_in_progress_dialog_content">"Выполняется выход…"</string>
<string name="screen_signout_key_backup_disabled_subtitle">"Вы собираетесь выйти из последнего сеанса. Если вы выйдете из системы сейчас, вы потеряете доступ к зашифрованным сообщениям."</string>
<string name="screen_signout_key_backup_disabled_title">"Вы отключили резервное копирование"</string>
<string name="screen_signout_key_backup_offline_subtitle">"Когда вы перешли в автономный режим, резервное копирование ваших ключей продолжалось. Повторно подключитесь, чтобы перед выходом из системы можно было создать резервную копию ключей."</string>
<string name="screen_signout_in_progress_dialog_content">"Удаление устройства…"</string>
<string name="screen_signout_key_backup_disabled_subtitle">"Это ваше единственное устройство. Если вы его удалите, вам потребуется ключ восстановления, чтобы подтвердить свою цифровую личность и восстановить зашифрованные чаты при следующем входе в систему."</string>
<string name="screen_signout_key_backup_disabled_title">"Вы потеряете доступ к своим зашифрованным чатам"</string>
<string name="screen_signout_key_backup_offline_subtitle">"Когда вы отключились от сети, резервное копирование ваших ключей продолжалось. Подключитесь снова, чтобы резервная копия ваших ключей была создана, прежде чем вы отключите это устройство."</string>
<string name="screen_signout_key_backup_offline_title">"Резервное копирование ключей все еще продолжается"</string>
<string name="screen_signout_key_backup_ongoing_subtitle">"Пожалуйста, дождитесь завершения процесса, прежде чем выходить из системы."</string>
<string name="screen_signout_key_backup_ongoing_title">"Резервное копирование ключей все еще продолжается"</string>
<string name="screen_signout_preference_item">"Удалить это устройство"</string>
<string name="screen_signout_recovery_disabled_subtitle">"Вы собираетесь выйти из последнего сеанса. Если вы выйдете из системы сейчас, вы потеряете доступ к зашифрованным сообщениям."</string>
<string name="screen_signout_recovery_disabled_title">"Восстановление не настроено"</string>
<string name="screen_signout_save_recovery_key_subtitle">"Вы собираетесь выйти из последнего сеанса. Если вы выйдете из системы сейчас, вы можете потерять доступ к зашифрованным сообщениям."</string>
<string name="screen_signout_save_recovery_key_title">"Вы сохранили свой ключ восстановления?"</string>
<string name="screen_signout_recovery_disabled_subtitle">"Это ваше единственное устройство. Если вы его удалите, вам потребуется ключ восстановления, чтобы подтвердить свою цифровую личность и восстановить зашифрованные чаты при следующем входе в систему."</string>
<string name="screen_signout_recovery_disabled_title">"Вы потеряете доступ к своим зашифрованным чатам"</string>
<string name="screen_signout_save_recovery_key_subtitle">"Это ваше единственное устройство. Если вы его удалите, вам потребуется ключ восстановления, чтобы подтвердить свою цифровую личность и восстановить зашифрованные чаты при следующем входе в систему."</string>
<string name="screen_signout_save_recovery_key_title">"Перед тем как отключить это устройство, убедись, что у тебя есть доступ к ключу восстановления"</string>
</resources>

View file

@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_signout_confirmation_dialog_content">"Är du säker på att du vill logga ut?"</string>
<string name="screen_signout_confirmation_dialog_submit">"Logga ut"</string>
<string name="screen_signout_confirmation_dialog_title">"Logga ut"</string>
<string name="screen_signout_in_progress_dialog_content">"Loggar ut …"</string>
<string name="screen_signout_confirmation_dialog_content">"Är du säker på att du vill ta bort den här enheten?"</string>
<string name="screen_signout_confirmation_dialog_submit">"Ta bort den här enheten"</string>
<string name="screen_signout_confirmation_dialog_title">"Ta bort den här enheten"</string>
<string name="screen_signout_in_progress_dialog_content">"Tar bort enhet …"</string>
<string name="screen_signout_key_backup_disabled_subtitle">"Du är på väg att logga ut ur din senaste session. Om du loggar ut nu kommer du att förlora åtkomsten till dina krypterade meddelanden."</string>
<string name="screen_signout_key_backup_disabled_title">"Du har stängt av säkerhetskopiering"</string>
<string name="screen_signout_key_backup_offline_subtitle">"Dina nycklar säkerhetskopierades fortfarande när du gick offline. Anslut igen så att dina nycklar kan säkerhetskopieras innan du loggar ut."</string>
<string name="screen_signout_key_backup_offline_title">"Dina nycklar säkerhetskopieras fortfarande"</string>
<string name="screen_signout_key_backup_ongoing_subtitle">"Vänta tills detta är klart innan du loggar ut."</string>
<string name="screen_signout_key_backup_ongoing_title">"Dina nycklar säkerhetskopieras fortfarande"</string>
<string name="screen_signout_preference_item">"Logga ut"</string>
<string name="screen_signout_preference_item">"Ta bort den här enheten"</string>
<string name="screen_signout_recovery_disabled_subtitle">"Du är på väg att logga ut ur din sista session. Om du loggar ut nu förlorar du åtkomsten till dina krypterade meddelanden."</string>
<string name="screen_signout_recovery_disabled_title">"Återställning inte inställd"</string>
<string name="screen_signout_save_recovery_key_subtitle">"Du är på väg att logga ut från din senaste session. Om du loggar ut nu kan du förlora åtkomsten till dina krypterade meddelanden."</string>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_signout_confirmation_dialog_content">"Bạn có chắc muốn gỡ thiết bị này không?"</string>
<string name="screen_signout_confirmation_dialog_submit">"Gỡ bỏ thiết bị này"</string>
<string name="screen_signout_confirmation_dialog_title">"Gỡ bỏ thiết bị này"</string>
<string name="screen_signout_in_progress_dialog_content">"Đang gỡ thiết bị…"</string>
<string name="screen_signout_key_backup_disabled_subtitle">"Đây là thiết bị duy nhất của bạn. Nếu xóa nó, bạn sẽ cần khóa khôi phục để xác nhận danh tính kỹ thuật số và khôi phục các cuộc trò chuyện được mã hóa lần tiếp theo khi đăng nhập."</string>
<string name="screen_signout_key_backup_disabled_title">"Bạn sắp mất quyền truy cập vào các cuộc trò chuyện được mã hóa"</string>
<string name="screen_signout_key_backup_offline_subtitle">"Bạn đã ngoại tuyến khi các khóa đang được sao lưu. Kết nối lại để hoàn tất sao lưu trước khi gỡ thiết bị."</string>
<string name="screen_signout_key_backup_offline_title">"Khóa của bạn vẫn đang được sao lưu."</string>
<string name="screen_signout_key_backup_ongoing_subtitle">"Đợi quá trình hoàn tất rồi hãy gỡ thiết bị."</string>
<string name="screen_signout_key_backup_ongoing_title">"Khóa của bạn vẫn đang được sao lưu."</string>
<string name="screen_signout_preference_item">"Gỡ bỏ thiết bị này"</string>
<string name="screen_signout_recovery_disabled_subtitle">"Bạn sắp đăng xuất khỏi phiên làm việc cuối cùng. Nếu bạn đăng xuất ngay bây giờ, bạn sẽ mất quyền truy cập vào các tin nhắn đã mã hóa của mình."</string>
<string name="screen_signout_recovery_disabled_title">"Bạn sắp mất quyền truy cập vào các cuộc trò chuyện được mã hóa"</string>
<string name="screen_signout_save_recovery_key_subtitle">"Đây là thiết bị duy nhất của bạn. Nếu xóa nó, bạn sẽ cần khóa khôi phục để xác nhận danh tính kỹ thuật số và khôi phục các cuộc trò chuyện được mã hóa khi đăng nhập lần tới."</string>
<string name="screen_signout_save_recovery_key_title">"Đảm bảo bạn có khóa khôi phục trước khi gỡ thiết bị này."</string>
</resources>

View file

@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="screen_signout_confirmation_dialog_content">"确定要登出吗?"</string>
<string name="screen_signout_confirmation_dialog_submit">"登出"</string>
<string name="screen_signout_confirmation_dialog_title">"登出"</string>
<string name="screen_signout_in_progress_dialog_content">"正在登出…"</string>
<string name="screen_signout_confirmation_dialog_content">"您确定要删除此设备吗?"</string>
<string name="screen_signout_confirmation_dialog_submit">"删除此设备"</string>
<string name="screen_signout_confirmation_dialog_title">"删除此设备"</string>
<string name="screen_signout_in_progress_dialog_content">"正在删除设备……"</string>
<string name="screen_signout_key_backup_disabled_subtitle">"即将登出最后一个会话。如果现在登出,将无法访问加密的消息。"</string>
<string name="screen_signout_key_backup_disabled_title">"您已关闭备份"</string>
<string name="screen_signout_key_backup_offline_subtitle">"当你离线时,密钥仍在备份中。重新连接以便在登出之前备份密钥。"</string>
<string name="screen_signout_key_backup_offline_title">"您的密钥仍在备份中"</string>
<string name="screen_signout_key_backup_ongoing_subtitle">"请等待此操作完成后再登出。"</string>
<string name="screen_signout_key_backup_ongoing_title">"您的密钥仍在备份中"</string>
<string name="screen_signout_preference_item">"登出"</string>
<string name="screen_signout_preference_item">"删除此设备"</string>
<string name="screen_signout_recovery_disabled_subtitle">"即将登出最后一个会话。如果现在登出,将无法访问加密的消息。"</string>
<string name="screen_signout_recovery_disabled_title">"未设置恢复"</string>
<string name="screen_signout_save_recovery_key_subtitle">"即将登出最后一个会话。如果现在登出,将无法访问加密的消息。"</string>

View file

@ -432,6 +432,10 @@ class MessagesFlowNode(
override fun handleForwardEventClick(eventId: EventId) {
backstack.push(NavTarget.ForwardEvent(eventId = eventId, fromPinnedEvents = true))
}
override fun navigateToThread(threadRootId: ThreadId) {
backstack.push(NavTarget.Thread(threadRootId, null))
}
}
createNode<PinnedMessagesListNode>(buildContext, plugins = listOf(callback))
}

View file

@ -250,12 +250,11 @@ class MessagesPresenter(
is MessagesEvent.OnUserClicked -> {
roomMemberModerationState.eventSink(RoomMemberModerationEvents.ShowActionsForUser(event.user))
}
is MessagesEvent.MarkAsFullyReadAndExit -> coroutineScope.launch {
if (!markingAsReadAndExiting.getAndSet(true)) {
is MessagesEvent.MarkAsFullyReadAndExit -> if (!markingAsReadAndExiting.getAndSet(true)) {
coroutineScope.launch {
val latestEventId = room.liveTimeline.getLatestEventId().getOrElse {
Timber.w(it, "Failed to get latest event id to mark as fully read")
navigator.close()
return@launch
null
}
latestEventId?.let { eventId ->
sessionCoroutineScope.launch {
@ -263,7 +262,6 @@ class MessagesPresenter(
}
}
navigator.close()
markingAsReadAndExiting.set(false)
}
}
}

View file

@ -10,7 +10,9 @@ package io.element.android.features.messages.impl.pinned.list
import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction
import io.element.android.features.messages.impl.timeline.model.TimelineItem
import io.element.android.libraries.matrix.api.core.ThreadId
sealed interface PinnedMessagesListEvent {
data class HandleAction(val action: TimelineItemAction, val event: TimelineItem.Event) : PinnedMessagesListEvent
data class OpenThread(val threadRootId: ThreadId) : PinnedMessagesListEvent
}

View file

@ -9,10 +9,12 @@
package io.element.android.features.messages.impl.pinned.list
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.ThreadId
import io.element.android.libraries.matrix.api.timeline.item.TimelineItemDebugInfo
interface PinnedMessagesListNavigator {
fun viewInTimeline(eventId: EventId)
fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo)
fun forwardEvent(eventId: EventId)
fun navigateToThread(threadRootId: ThreadId)
}

View file

@ -31,6 +31,7 @@ import io.element.android.libraries.androidutils.system.openUrlInExternalApp
import io.element.android.libraries.architecture.callback
import io.element.android.libraries.di.RoomScope
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.core.ThreadId
import io.element.android.libraries.matrix.api.core.UserId
import io.element.android.libraries.matrix.api.permalink.PermalinkData
import io.element.android.libraries.matrix.api.permalink.PermalinkParser
@ -55,6 +56,7 @@ class PinnedMessagesListNode(
fun handlePermalinkClick(data: PermalinkData.RoomLink)
fun navigateToEventDebugInfo(eventId: EventId?, debugInfo: TimelineItemDebugInfo)
fun handleForwardEventClick(eventId: EventId)
fun navigateToThread(threadRootId: ThreadId)
}
private val callback: Callback = callback()
@ -95,6 +97,10 @@ class PinnedMessagesListNode(
callback.handleForwardEventClick(eventId)
}
override fun navigateToThread(threadRootId: ThreadId) {
callback.navigateToThread(threadRootId)
}
@Composable
override fun View(modifier: Modifier) {
CompositionLocalProvider(

View file

@ -137,6 +137,7 @@ class PinnedMessagesListPresenter(
fun handleEvent(event: PinnedMessagesListEvent) {
when (event) {
is PinnedMessagesListEvent.HandleAction -> sessionCoroutineScope.handleTimelineAction(event.action, event.event)
is PinnedMessagesListEvent.OpenThread -> navigator.navigateToThread(event.threadRootId)
}
}

View file

@ -30,6 +30,7 @@ import io.element.android.features.messages.impl.actionlist.ActionListView
import io.element.android.features.messages.impl.actionlist.model.TimelineItemAction
import io.element.android.features.messages.impl.link.LinkEvent
import io.element.android.features.messages.impl.link.LinkView
import io.element.android.features.messages.impl.timeline.TimelineEvent
import io.element.android.features.messages.impl.timeline.components.TimelineItemRow
import io.element.android.features.messages.impl.timeline.components.event.TimelineItemEventContentView
import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayoutData
@ -235,7 +236,12 @@ private fun PinnedMessagesListLoaded(
onReadReceiptClick = {},
onSwipeToReply = {},
onJoinCallClick = {},
eventSink = {},
eventSink = { timelineItemEvent ->
when (timelineItemEvent) {
is TimelineEvent.OpenThread -> state.eventSink(PinnedMessagesListEvent.OpenThread(timelineItemEvent.threadRootEventId))
else -> Unit
}
},
eventContentView = { event, contentModifier, onContentLayoutChange ->
TimelineItemEventContentViewWrapper(
event = event,

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