[Rich text editor] Add link functionality to rich text editor (#1309)

* Add link functionality to rich text editor
* Add 'list dialog' component compound design library
* Add 'text field list item' component to compound design library
This commit is contained in:
jonnyandrew
2023-09-19 12:20:07 +01:00
committed by GitHub
parent aee1141613
commit d291622eea
51 changed files with 742 additions and 246 deletions

1
changelog.d/1309.feature Normal file
View File

@@ -0,0 +1 @@
[Rich text editor] Add link support to rich text editor

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">"Wir zeichnen keine persönlichen Daten auf und erstellen keine Profile."</string>
<string name="screen_analytics_prompt_help_us_improve">"Teile anonyme Nutzungsdaten, um uns bei der Identifizierung von Problemen zu helfen."</string>
<string name="screen_analytics_prompt_read_terms">"Du kannst alle unsere Bedingungen lesen %1$s."</string>
<string name="screen_analytics_prompt_help_us_improve">"Teilen Sie anonyme Nutzungsdaten, um uns bei der Identifizierung von Problemen zu helfen."</string>
<string name="screen_analytics_prompt_read_terms">"Sie können alle unsere Bedingungen lesen%1$s."</string>
<string name="screen_analytics_prompt_read_terms_content_link">"hier"</string>
<string name="screen_analytics_prompt_settings">"Du kannst diese Funktion jederzeit deaktivieren"</string>
<string name="screen_analytics_prompt_third_party_sharing">"Wir geben Ihre Daten nicht an Dritte weiter"</string>
<string name="screen_analytics_prompt_third_party_sharing">"Wir geben deine Daten nicht an Dritte weiter"</string>
<string name="screen_analytics_prompt_title">"Hilf uns %1$s zu verbessern"</string>
</resources>

View File

@@ -6,8 +6,8 @@
<string name="screen_notification_optin_title">"Erlaube Benachrichtigungen und verpasse keine Nachricht"</string>
<string name="screen_welcome_bullet_1">"Anrufe, Umfragen, Suchfunktionen und mehr werden im Laufe des Jahres hinzugefügt."</string>
<string name="screen_welcome_bullet_2">"Der Nachrichtenverlauf für verschlüsselte Räume wird in diesem Update nicht verfügbar sein."</string>
<string name="screen_welcome_bullet_3">"Wir würden uns freuen, von Ihnen zu hören. Teilen Sie uns Ihre Meinung über die Einstellungsseite mit."</string>
<string name="screen_welcome_bullet_3">"Wir würden uns freuen, von dir zu hören. Teile uns deine Meinung über die Einstellungsseite mit."</string>
<string name="screen_welcome_button">"Los geht\'s!"</string>
<string name="screen_welcome_subtitle">"Folgendes müssen Sie wissen:"</string>
<string name="screen_welcome_subtitle">"Folgendes musst du wissen:"</string>
<string name="screen_welcome_title">"Willkommen bei %1$s!"</string>
</resources>

View File

@@ -5,7 +5,7 @@
<string name="screen_account_provider_form_notice">"Gib einen Suchbegriff oder eine Domainadresse ein."</string>
<string name="screen_account_provider_form_subtitle">"Suche nach einem Unternehmen, einer Community oder einem privaten Server."</string>
<string name="screen_account_provider_form_title">"Kontoanbieter finden"</string>
<string name="screen_account_provider_signin_subtitle">"Hier werden Ihre Gespräche gespeichert genau so, wie du einen E-Mail-Anbieter nutzen würdest, um deine E-Mails aufzubewahren."</string>
<string name="screen_account_provider_signin_subtitle">"Hier werden deine Gespräche gespeichert genau so, wie du einen E-Mail-Anbieter nutzen würdest, um deine E-Mails aufzubewahren."</string>
<string name="screen_account_provider_signin_title">"Du bist dabei, dich bei %s anzumelden"</string>
<string name="screen_account_provider_signup_subtitle">"Hier werden deine Gespräche gespeichert genau so, wie du einen E-Mail-Anbieter nutzen würdest, um deine E-Mails aufzubewahren."</string>
<string name="screen_account_provider_signup_title">"Du bist dabei, ein Konto bei %s zu erstellen"</string>
@@ -17,7 +17,7 @@
<string name="screen_change_server_error_no_sliding_sync_message">"Dieser Server unterstützt derzeit kein Sliding Sync."</string>
<string name="screen_change_server_form_header">"Homeserver-URL"</string>
<string name="screen_change_server_form_notice">"Du kannst nur eine Verbindung zu einem vorhandenen Server herstellen, der Sliding Sync unterstützt. Dein Homeserver-Administrator muss das konfigurieren. %1$s"</string>
<string name="screen_change_server_subtitle">"Wie lautet die Adresse Ihres Servers?"</string>
<string name="screen_change_server_subtitle">"Wie lautet die Adresse deines Servers?"</string>
<string name="screen_login_error_deactivated_account">"Dieses Konto wurde deaktiviert."</string>
<string name="screen_login_error_invalid_credentials">"Falscher Benutzername und/oder Passwort"</string>
<string name="screen_login_error_invalid_user_id">"Dies ist keine gültige Benutzerkennung. Erwartetes Format: \'@user:homeserver.org\'"</string>
@@ -28,15 +28,15 @@
<string name="screen_server_confirmation_change_server">"Kontoanbieter wechseln"</string>
<string name="screen_server_confirmation_message_login_element_dot_io">"Ein privater Server für die Mitarbeiter von Element."</string>
<string name="screen_server_confirmation_message_login_matrix_dot_org">"Matrix ist ein offenes Netzwerk für eine sichere, dezentrale Kommunikation."</string>
<string name="screen_server_confirmation_message_register">"Hier werden Ihre Gespräche gespeichert - so wie Sie Ihre E-Mails bei einem E-Mail-Anbieter aufbewahren würden."</string>
<string name="screen_server_confirmation_title_login">"Sie sind dabei, sich bei %1$s anzumelden"</string>
<string name="screen_server_confirmation_title_register">"Sie sind dabei, ein Konto auf %1$s zu erstellen"</string>
<string name="screen_waitlist_message">"Derzeit besteht eine hohe Nachfrage nach %1$s auf %2$s. Kehren Sie in ein paar Tagen zur App zurück und versuchen Sie es erneut.
<string name="screen_server_confirmation_message_register">"Hier werden deine Gespräche gespeichert - so wie du deine E-Mails bei einem E-Mail-Anbieter aufbewahren würden."</string>
<string name="screen_server_confirmation_title_login">"Du bist dabei, dich bei %1$s anzumelden"</string>
<string name="screen_server_confirmation_title_register">"Du bist dabei, ein Konto auf %1$s zu erstellen"</string>
<string name="screen_waitlist_message">"Derzeit besteht eine hohe Nachfrage nach %1$s auf %2$s. Kehre in ein paar Tagen zur App zurück und versuche es erneut.
Danke für Ihre Geduld!"</string>
Danke für deine Geduld!"</string>
<string name="screen_waitlist_message_success">"Willkommen bei %1$s!"</string>
<string name="screen_waitlist_title">"Sie sind fast am Ziel."</string>
<string name="screen_waitlist_title_success">"Sie sind dabei."</string>
<string name="screen_waitlist_title">"Du bist fast am Ziel."</string>
<string name="screen_waitlist_title_success">"Du bist dabei."</string>
<string name="screen_account_provider_continue">"Weiter"</string>
<string name="screen_change_server_submit">"Weiter"</string>
<string name="screen_change_server_title">"Wähle deinen Server aus"</string>

View File

@@ -1,6 +1,6 @@
<?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">"Sind Sie sicher, dass Sie sich abmelden wollen?"</string>
<string name="screen_signout_confirmation_dialog_content">"Bist du sicher, dass du dich abmelden willst?"</string>
<string name="screen_signout_confirmation_dialog_title">"Abmelden"</string>
<string name="screen_signout_in_progress_dialog_content">"Abmelden…"</string>
<string name="screen_signout_confirmation_dialog_submit">"Abmelden"</string>

View File

@@ -34,7 +34,7 @@
<string name="screen_room_reactions_show_less">"Weniger anzeigen"</string>
<string name="screen_room_reactions_show_more">"Mehr anzeigen"</string>
<string name="screen_room_retry_send_menu_send_again_action">"Erneut senden"</string>
<string name="screen_room_retry_send_menu_title">"Ihre Nachricht konnte nicht gesendet werden"</string>
<string name="screen_room_retry_send_menu_title">"Deine Nachricht konnte nicht gesendet werden"</string>
<string name="screen_room_timeline_add_reaction">"Emoji hinzufügen"</string>
<string name="screen_room_timeline_less_reactions">"Weniger anzeigen"</string>
<string name="screen_room_error_failed_processing_media">"Fehler beim Verarbeiten des hochgeladenen Mediums. Bitte versuche es erneut."</string>

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_edit_profile_display_name">"Anzeigename"</string>
<string name="screen_edit_profile_display_name_placeholder">"Ihr Anzeigename"</string>
<string name="screen_edit_profile_display_name_placeholder">"Dein Anzeigename"</string>
<string name="screen_edit_profile_error">"Ein unbekannter Fehler ist aufgetreten und die Informationen konnten nicht geändert werden."</string>
<string name="screen_edit_profile_error_title">"Profil kann nicht aktualisiert werden"</string>
<string name="screen_edit_profile_title">"Profil bearbeiten"</string>

View File

@@ -10,6 +10,6 @@
<string name="screen_bug_report_include_crash_logs">"Absturzprotokolle senden"</string>
<string name="screen_bug_report_include_logs">"Protokolle zulassen"</string>
<string name="screen_bug_report_include_screenshot">"Bildschirmfoto senden"</string>
<string name="screen_bug_report_logs_description">"Die Protokolle werden Ihrer Nachricht beigefügt, um sicherzustellen, dass alles ordnungsgemäß funktioniert. Um deine Nachricht ohne Protokolle zu senden, deaktiviere diese Einstellung."</string>
<string name="screen_bug_report_logs_description">"Die Protokolle werden deiner Nachricht beigefügt, um sicherzustellen, dass alles ordnungsgemäß funktioniert. Um deine Nachricht ohne Protokolle zu senden, deaktiviere diese Einstellung."</string>
<string name="screen_bug_report_rash_logs_alert_title">"%1$s ist bei der letzten Nutzung abgestürzt. Möchtest du einen Absturzbericht mit uns teilen?"</string>
</resources>

View File

@@ -4,6 +4,6 @@
<string name="screen_roomlist_empty_message">"Beginne, indem du jemandem eine Nachricht sendest."</string>
<string name="screen_roomlist_empty_title">"Noch keine Chats."</string>
<string name="screen_roomlist_main_space_title">"Alle Chats"</string>
<string name="session_verification_banner_message">"Es sieht aus, als würden Sie ein neues Gerät verwenden. Verifizieren Sie es mit einem anderen Gerät, damit Sie auf Ihre verschlüsselten Nachrichten zugreifen können."</string>
<string name="session_verification_banner_title">"Bestätigen Sie Ihre Identität"</string>
<string name="session_verification_banner_message">"Es sieht aus, als würdest du ein neues Gerät verwenden. Verifiziere es mit einem anderen Gerät, damit du auf deine verschlüsselten Nachrichten zugreifen kannst."</string>
<string name="session_verification_banner_title">"Bestätige deine Identität"</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_session_verification_cancelled_subtitle">"Etwas scheint nicht zu stimmen. Entweder ist das Zeitlimit für die Anfrage abgelaufen oder die Anfrage wurde abgelehnt."</string>
<string name="screen_session_verification_compare_emojis_subtitle">"Vergewissern Sie sich, dass die folgenden Emojis mit denen in Ihrer anderen Session übereinstimmen."</string>
<string name="screen_session_verification_compare_emojis_subtitle">"Vergewissere dich dass die folgenden Emojis mit denen in deiner anderen Session übereinstimmen."</string>
<string name="screen_session_verification_compare_emojis_title">"Emojis vergleichen"</string>
<string name="screen_session_verification_complete_subtitle">"Ihre neue Session ist nun verifiziert. Sie hat Zugriff auf Ihre verschlüsselten Nachrichten und wird von anderen Benutzern als vertrauenswürdig eingestuft."</string>
<string name="screen_session_verification_open_existing_session_subtitle">"Beweisen Sie Ihre Identität, um auf Ihren verschlüsselten Nachrichtenverlauf zuzugreifen."</string>
<string name="screen_session_verification_open_existing_session_title">"Öffnen Sie eine bestehende Sitzung"</string>
<string name="screen_session_verification_complete_subtitle">"Deine neue Session ist nun verifiziert. Sie hat Zugriff auf deine verschlüsselten Nachrichten und wird von anderen Benutzern als vertrauenswürdig eingestuft."</string>
<string name="screen_session_verification_open_existing_session_subtitle">"Beweise deine Identität, um auf deinen verschlüsselten Nachrichtenverlauf zuzugreifen."</string>
<string name="screen_session_verification_open_existing_session_title">"Öffne eine bestehende Session"</string>
<string name="screen_session_verification_positive_button_canceled">"Verifizierung wiederholen"</string>
<string name="screen_session_verification_positive_button_initial">"Ich bin bereit"</string>
<string name="screen_session_verification_positive_button_verifying_ongoing">"Warten auf eine Übereinstimmung"</string>
<string name="screen_session_verification_request_accepted_subtitle">"Vergleichen Sie die einzelnen Emojis und stellen Sie sicher, dass sie in der gleichen Reihenfolge erscheinen."</string>
<string name="screen_session_verification_request_accepted_subtitle">"Vergleiche die einzelnen Emojis und stelle sicher, dass sie in der gleichen Reihenfolge erscheinen."</string>
<string name="screen_session_verification_they_dont_match">"Sie stimmen nicht überein"</string>
<string name="screen_session_verification_they_match">"Sie stimmen überein"</string>
<string name="screen_session_verification_waiting_to_accept_subtitle">"Akzeptieren Sie die Anfrage, um den Verifizierungsprozess in Ihrer anderen Session zu starten, um fortzufahren."</string>
<string name="screen_session_verification_waiting_to_accept_subtitle">"Akzeptiere die Anfrage, um den Verifizierungsprozess in deiner anderen Session zu starten, um fortzufahren."</string>
<string name="screen_session_verification_waiting_to_accept_title">"Warten auf die Annahme der Anfrage"</string>
<string name="screen_session_verification_cancelled_title">"Verifizierung abgebrochen"</string>
<string name="screen_session_verification_positive_button_ready">"Start"</string>

View File

@@ -46,7 +46,7 @@ dependencyanalysis = "1.22.0"
stem = "2.3.0"
sqldelight = "1.5.5"
telephoto = "0.6.0"
wysiwyg = "2.10.0"
wysiwyg = "2.10.2"
# DI
dagger = "2.48"

View File

@@ -0,0 +1,124 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.designsystem.components.dialogs
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.airbnb.android.showkase.annotation.ShowkaseComposable
import io.element.android.libraries.designsystem.components.list.TextFieldListItem
import io.element.android.libraries.designsystem.preview.DayNightPreviews
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup
import io.element.android.libraries.designsystem.theme.components.DialogPreview
import io.element.android.libraries.designsystem.theme.components.ListSupportingText
import io.element.android.libraries.designsystem.theme.components.SimpleAlertDialogContent
import io.element.android.libraries.ui.strings.CommonStrings
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun ListDialog(
onDismissRequest: () -> Unit,
onSubmit: () -> Unit,
modifier: Modifier = Modifier,
title: String? = null,
subtitle: String? = null,
cancelText: String = stringResource(CommonStrings.action_cancel),
submitText: String = stringResource(CommonStrings.action_ok),
listItems: LazyListScope.() -> Unit,
) {
val decoratedSubtitle: @Composable (() -> Unit)? = subtitle?.let {
@Composable {
ListSupportingText(
text = it,
modifier = Modifier.padding(start = 8.dp)
)
}
}
AlertDialog(
modifier = modifier,
onDismissRequest = onDismissRequest,
) {
ListDialogContent(
title = title,
subtitle = decoratedSubtitle,
cancelText = cancelText,
submitText = submitText,
onDismissRequest = onDismissRequest,
onSubmitClicked = onSubmit,
listItems = listItems,
)
}
}
@Composable
internal fun ListDialogContent(
listItems: LazyListScope.() -> Unit,
onDismissRequest: () -> Unit,
onSubmitClicked: () -> Unit,
cancelText: String,
submitText: String,
modifier: Modifier = Modifier,
title: String? = null,
subtitle: @Composable (() -> Unit)? = null,
) {
SimpleAlertDialogContent(
title = title,
subtitle = subtitle,
modifier = modifier,
cancelText = cancelText,
submitText = submitText,
onCancelClicked = onDismissRequest,
onSubmitClicked = onSubmitClicked,
applyPaddingToContents = false,
) {
LazyColumn(
modifier = Modifier.padding(start = 8.dp)
) { listItems() }
}
}
@DayNightPreviews
@ShowkaseComposable(group = PreviewGroup.Dialogs)
@Composable
internal fun ListDialogContentPreview() {
ElementPreview(showBackground = false) {
DialogPreview {
ListDialogContent(
listItems = {
item {
TextFieldListItem(placeholder = "Text input", text = "", onTextChanged = {})
}
item {
TextFieldListItem(placeholder = "Another text input", text = "", onTextChanged = {})
}
},
title = "Dialog title",
onDismissRequest = {},
onSubmitClicked = {},
cancelText = "Cancel",
submitText = "Save",
)
}
}
}

View File

@@ -0,0 +1,76 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.designsystem.components.list
import androidx.compose.material3.OutlinedTextFieldDefaults
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup
import io.element.android.libraries.designsystem.theme.components.OutlinedTextField
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.theme.ElementTheme
@Composable
fun TextFieldListItem(
placeholder: String,
text: String,
onTextChanged: (String) -> Unit,
modifier: Modifier = Modifier,
) {
val textFieldStyle = ElementTheme.materialTypography.bodyLarge
OutlinedTextField(
value = text,
onValueChange = onTextChanged,
placeholder = { Text(placeholder) },
colors = OutlinedTextFieldDefaults.colors(
disabledBorderColor = Color.Transparent,
errorBorderColor = Color.Transparent,
focusedBorderColor = Color.Transparent,
unfocusedBorderColor = Color.Transparent,
),
textStyle = textFieldStyle,
modifier = modifier,
)
}
@Preview("Text field List item - empty", group = PreviewGroup.ListItems)
@Composable
internal fun TextFieldListItemEmptyPreview() {
ElementThemedPreview {
TextFieldListItem(
placeholder = "Placeholder",
text = "",
onTextChanged = {},
)
}
}
@Preview("Text field List item - text", group = PreviewGroup.ListItems)
@Composable
internal fun TextFieldListItemPreview() {
ElementThemedPreview {
TextFieldListItem(
placeholder = "Placeholder",
text = "Text",
onTextChanged = {},
)
}
}

View File

@@ -2,56 +2,56 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="state_event_avatar_changed_too">"(Avatar wurde auch geändert)"</string>
<string name="state_event_avatar_url_changed">"%1$s hat den Avatar geändert"</string>
<string name="state_event_avatar_url_changed_by_you">"Sie haben Ihren Avatar geändert"</string>
<string name="state_event_avatar_url_changed_by_you">"Du hast deinen Avatar geändert"</string>
<string name="state_event_display_name_changed_from">"%1$s hat den Anzeigenamen von %2$s auf %3$s geändert"</string>
<string name="state_event_display_name_changed_from_by_you">"Sie haben Ihren Anzeigenamen von %1$s auf %2$s geändert"</string>
<string name="state_event_display_name_changed_from_by_you">"Du hast deinen Anzeigenamen von %1$s auf %2$s geändert"</string>
<string name="state_event_display_name_removed">"%1$s hat den Anzeigenamen entfernt (war %2$s)"</string>
<string name="state_event_display_name_removed_by_you">"Sie haben Ihren Anzeigenamen entfernt (war %1$s)"</string>
<string name="state_event_display_name_set">"%1$s setzen ihren Anzeigenamen auf %2$s"</string>
<string name="state_event_display_name_set_by_you">"Sie haben Ihren Anzeigenamen zu %1$s geändert"</string>
<string name="state_event_display_name_removed_by_you">"Du hast deinen Anzeigenamen entfernt (war %1$s)"</string>
<string name="state_event_display_name_set">"%1$s hat den Anzeigenamen auf %2$s geändert"</string>
<string name="state_event_display_name_set_by_you">"Du hast deinen Anzeigenamen zu %1$s geändert"</string>
<string name="state_event_room_avatar_changed">"%1$s hat den Raum-Avatar geändert"</string>
<string name="state_event_room_avatar_changed_by_you">"Sie haben den Raum-Avatar geändert"</string>
<string name="state_event_room_avatar_changed_by_you">"Du hast den Raum-Avatar geändert"</string>
<string name="state_event_room_avatar_removed">"%1$s hat den Raum-Avatar entfernt"</string>
<string name="state_event_room_avatar_removed_by_you">"Sie haben den Raum-Avatar entfernt"</string>
<string name="state_event_room_avatar_removed_by_you">"Du hast den Raum-Avatar entfernt"</string>
<string name="state_event_room_ban">"%1$s hat %2$s gesperrt"</string>
<string name="state_event_room_ban_by_you">"Sie haben %1$s gesperrt"</string>
<string name="state_event_room_ban_by_you">"Du hast %1$s gesperrt"</string>
<string name="state_event_room_created">"%1$s hat den Raum erstellt"</string>
<string name="state_event_room_created_by_you">"Sie haben den Raum erstellt"</string>
<string name="state_event_room_created_by_you">"Du hast den Raum erstellt"</string>
<string name="state_event_room_invite">"%1$s hat %2$s eingeladen"</string>
<string name="state_event_room_invite_accepted">"%1$s hat die Einladung angenommen"</string>
<string name="state_event_room_invite_accepted_by_you">"Sie haben die Einladung angenommen"</string>
<string name="state_event_room_invite_by_you">"Sie haben %1$s eingeladen"</string>
<string name="state_event_room_invite_accepted_by_you">"Du hast die Einladung angenommen"</string>
<string name="state_event_room_invite_by_you">"Du hast %1$s eingeladen"</string>
<string name="state_event_room_invite_you">"%1$s hat dich eingeladen"</string>
<string name="state_event_room_join">"%1$s hat den Raum betreten"</string>
<string name="state_event_room_join_by_you">"Sie haben den Raum betreten"</string>
<string name="state_event_room_join_by_you">"Du hast den Raum betreten"</string>
<string name="state_event_room_knock">"%1$s hat angefragt beizutreten"</string>
<string name="state_event_room_knock_accepted">"%1$s hat %2$s den Beitritt erlaubt"</string>
<string name="state_event_room_knock_accepted_by_you">"%1$s hat Ihnen den Betritt erlaubt"</string>
<string name="state_event_room_knock_by_you">"Sie haben angefragt beizutreten"</string>
<string name="state_event_room_knock_by_you">"Du hast angefragt beizutreten"</string>
<string name="state_event_room_knock_denied">"%1$s hat die Beitrittsanfrage von %2$s abgelehnt"</string>
<string name="state_event_room_knock_denied_by_you">"Sie haben die Beitrittsanfrage von %1$s abgelehnt"</string>
<string name="state_event_room_knock_denied_you">"%1$s hat Ihre Beitrittsanfrage abgelehnt"</string>
<string name="state_event_room_knock_denied_by_you">"Du hast die Beitrittsanfrage von %1$s abgelehnt"</string>
<string name="state_event_room_knock_denied_you">"%1$s hat deine Beitrittsanfrage abgelehnt"</string>
<string name="state_event_room_knock_retracted">"%1$s ist nicht mehr an einem Beitritt interessiert"</string>
<string name="state_event_room_knock_retracted_by_you">"Sie haben Ihre Beitrittsanfrage zurückgezogen"</string>
<string name="state_event_room_knock_retracted_by_you">"Du hast deine Beitrittsanfrage zurückgezogen"</string>
<string name="state_event_room_leave">"%1$s hat den Raum verlassen"</string>
<string name="state_event_room_leave_by_you">"Sie haben den Raum verlassen"</string>
<string name="state_event_room_leave_by_you">"Du hast den Raum verlassen"</string>
<string name="state_event_room_name_changed">"%1$s hat den Raumnamen geändert in: %2$s"</string>
<string name="state_event_room_name_changed_by_you">"Sie haben den Raumnamen geändert in: %1$s"</string>
<string name="state_event_room_name_changed_by_you">"Du hast den Raumnamen geändert in: %1$s"</string>
<string name="state_event_room_name_removed">"%1$s hat den Raumnamen entfernt"</string>
<string name="state_event_room_name_removed_by_you">"Sie haben den Raumnamen entfernt"</string>
<string name="state_event_room_name_removed_by_you">"Du hast den Raumnamen entfernt"</string>
<string name="state_event_room_reject">"%1$s hat die Einladung abgelehnt"</string>
<string name="state_event_room_reject_by_you">"Sie haben die Einladung abgelehnt"</string>
<string name="state_event_room_reject_by_you">"Du hast die Einladung abgelehnt"</string>
<string name="state_event_room_remove">"%1$s hat %2$s entfernt"</string>
<string name="state_event_room_remove_by_you">"Sie haben %1$s entfernt"</string>
<string name="state_event_room_remove_by_you">"Du hast %1$s entfernt"</string>
<string name="state_event_room_third_party_invite">"%1$s hat eine Einladung an %2$s gesendet, dem Raum beizutreten"</string>
<string name="state_event_room_third_party_invite_by_you">"Sie haben eine Einladung an %1$s gesendet, dem Raum beizutreten"</string>
<string name="state_event_room_third_party_invite_by_you">"Du hast eine Einladung an %1$s gesendet, dem Raum beizutreten"</string>
<string name="state_event_room_third_party_revoked_invite">"%1$s hat die Einladung an %2$s zum Betreten des Raums zurückgezogen"</string>
<string name="state_event_room_third_party_revoked_invite_by_you">"Sie haben die Einladung an %1$s zum Betreten des Raums zurückgezogen"</string>
<string name="state_event_room_third_party_revoked_invite_by_you">"Du hast die Einladung an %1$s zum Betreten des Raums zurückgezogen"</string>
<string name="state_event_room_topic_changed">"%1$s hat das Thema geändert in: %2$s"</string>
<string name="state_event_room_topic_changed_by_you">"Sie haben das Thema geändert in: %1$s"</string>
<string name="state_event_room_topic_changed_by_you">"Du hast das Thema geändert in: %1$s"</string>
<string name="state_event_room_topic_removed">"%1$s hat das Raumthema entfernt"</string>
<string name="state_event_room_topic_removed_by_you">"Sie haben das Raumthema entfernt"</string>
<string name="state_event_room_topic_removed_by_you">"Du hast das Raumthema entfernt"</string>
<string name="state_event_room_unban">"%1$s hat die Sperre für %2$s aufgehoben"</string>
<string name="state_event_room_unban_by_you">"Sie haben die Sperre für %1$s aufgehoben"</string>
<string name="state_event_room_unban_by_you">"Du hast die Sperre für %1$s aufgehoben"</string>
<string name="state_event_room_unknown_membership_change">"%1$s hat eine unbekannte Raumänderung vorgenommen"</string>
</resources>

View File

@@ -45,7 +45,9 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
@@ -82,6 +84,7 @@ import io.element.android.wysiwyg.compose.RichTextEditor
import io.element.android.wysiwyg.compose.RichTextEditorDefaults
import io.element.android.wysiwyg.compose.RichTextEditorState
import io.element.android.wysiwyg.view.models.InlineFormat
import io.element.android.wysiwyg.view.models.LinkAction
import uniffi.wysiwyg_composer.ActionState
import uniffi.wysiwyg_composer.ComposerAction
@@ -183,7 +186,7 @@ fun TextComposer(
placeholder = if (composerMode.inThread) {
stringResource(id = CommonStrings.action_reply_in_thread)
} else {
stringResource(id = CommonStrings.rich_text_editor_composer_placeholder)
stringResource(id = R.string.rich_text_editor_composer_placeholder)
},
roundedCorners = roundedCorners,
bgColor = bgColor,
@@ -337,67 +340,87 @@ private fun TextFormatting(
state = state.actions[ComposerAction.BOLD].toButtonState(),
onClick = { state.toggleInlineFormat(InlineFormat.Bold) },
imageVector = ImageVector.vectorResource(VectorIcons.Bold),
contentDescription = stringResource(CommonStrings.rich_text_editor_format_bold)
contentDescription = stringResource(R.string.rich_text_editor_format_bold)
)
FormattingOption(
state = state.actions[ComposerAction.ITALIC].toButtonState(),
onClick = { state.toggleInlineFormat(InlineFormat.Italic) },
imageVector = ImageVector.vectorResource(VectorIcons.Italic),
contentDescription = stringResource(CommonStrings.rich_text_editor_format_italic)
contentDescription = stringResource(R.string.rich_text_editor_format_italic)
)
FormattingOption(
state = state.actions[ComposerAction.UNDERLINE].toButtonState(),
onClick = { state.toggleInlineFormat(InlineFormat.Underline) },
imageVector = ImageVector.vectorResource(VectorIcons.Underline),
contentDescription = stringResource(CommonStrings.rich_text_editor_format_underline)
contentDescription = stringResource(R.string.rich_text_editor_format_underline)
)
FormattingOption(
state = state.actions[ComposerAction.STRIKE_THROUGH].toButtonState(),
onClick = { state.toggleInlineFormat(InlineFormat.StrikeThrough) },
imageVector = ImageVector.vectorResource(VectorIcons.Strikethrough),
contentDescription = stringResource(CommonStrings.rich_text_editor_format_strikethrough)
contentDescription = stringResource(R.string.rich_text_editor_format_strikethrough)
)
var linkDialogAction by remember { mutableStateOf<LinkAction?>(null) }
linkDialogAction?.let {
TextComposerLinkDialog(
onDismissRequest = { linkDialogAction = null },
onCreateLinkRequest = state::insertLink,
onSaveLinkRequest = state::setLink,
onRemoveLinkRequest = state::removeLink,
linkAction = it,
)
}
FormattingOption(
state = state.actions[ComposerAction.LINK].toButtonState(),
onClick = { linkDialogAction = state.linkAction },
imageVector = ImageVector.vectorResource(VectorIcons.Link),
contentDescription = stringResource(R.string.rich_text_editor_link)
)
FormattingOption(
state = state.actions[ComposerAction.UNORDERED_LIST].toButtonState(),
onClick = { state.toggleList(ordered = false) },
imageVector = ImageVector.vectorResource(VectorIcons.BulletList),
contentDescription = stringResource(CommonStrings.rich_text_editor_bullet_list)
contentDescription = stringResource(R.string.rich_text_editor_bullet_list)
)
FormattingOption(
state = state.actions[ComposerAction.ORDERED_LIST].toButtonState(),
onClick = { state.toggleList(ordered = true) },
imageVector = ImageVector.vectorResource(VectorIcons.NumberedList),
contentDescription = stringResource(CommonStrings.rich_text_editor_numbered_list)
contentDescription = stringResource(R.string.rich_text_editor_numbered_list)
)
FormattingOption(
state = state.actions[ComposerAction.INDENT].toButtonState(),
onClick = { state.indent() },
imageVector = ImageVector.vectorResource(VectorIcons.IndentIncrease),
contentDescription = stringResource(CommonStrings.rich_text_editor_indent)
contentDescription = stringResource(R.string.rich_text_editor_indent)
)
FormattingOption(
state = state.actions[ComposerAction.UNINDENT].toButtonState(),
onClick = { state.unindent() },
imageVector = ImageVector.vectorResource(VectorIcons.IndentDecrease),
contentDescription = stringResource(CommonStrings.rich_text_editor_unindent)
contentDescription = stringResource(R.string.rich_text_editor_unindent)
)
FormattingOption(
state = state.actions[ComposerAction.INLINE_CODE].toButtonState(),
onClick = { state.toggleInlineFormat(InlineFormat.InlineCode) },
imageVector = ImageVector.vectorResource(VectorIcons.InlineCode),
contentDescription = stringResource(CommonStrings.rich_text_editor_inline_code)
contentDescription = stringResource(R.string.rich_text_editor_inline_code)
)
FormattingOption(
state = state.actions[ComposerAction.CODE_BLOCK].toButtonState(),
onClick = { state.toggleCodeBlock() },
imageVector = ImageVector.vectorResource(VectorIcons.CodeBlock),
contentDescription = stringResource(CommonStrings.rich_text_editor_code_block)
contentDescription = stringResource(R.string.rich_text_editor_code_block)
)
FormattingOption(
state = state.actions[ComposerAction.QUOTE].toButtonState(),
onClick = { state.toggleQuote() },
imageVector = ImageVector.vectorResource(VectorIcons.Quote),
contentDescription = stringResource(CommonStrings.rich_text_editor_quote)
contentDescription = stringResource(R.string.rich_text_editor_quote)
)
}

View File

@@ -0,0 +1,236 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.textcomposer
import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import io.element.android.libraries.designsystem.components.dialogs.ListDialog
import io.element.android.libraries.designsystem.components.list.TextFieldListItem
import io.element.android.libraries.designsystem.preview.DayNightPreviews
import io.element.android.libraries.designsystem.theme.components.ListItem
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.theme.ElementTheme
import io.element.android.libraries.ui.strings.CommonStrings
import io.element.android.wysiwyg.view.models.LinkAction
@Composable
fun TextComposerLinkDialog(
onDismissRequest: () -> Unit,
linkAction: LinkAction,
onSaveLinkRequest: (url: String) -> Unit,
onCreateLinkRequest: (url: String, text: String) -> Unit,
onRemoveLinkRequest: () -> Unit,
modifier: Modifier = Modifier,
) {
val urlToEdit by remember(linkAction) {
derivedStateOf {
(linkAction as? LinkAction.SetLink)?.currentUrl
}
}
urlToEdit.let { url ->
when {
url != null -> {
EditLinkDialog(
currentUrl = url,
onDismissRequest = onDismissRequest,
onSaveLinkRequest = onSaveLinkRequest,
onRemoveLinkRequest = onRemoveLinkRequest,
modifier = modifier,
)
}
linkAction is LinkAction.InsertLink -> {
CreateLinkWithTextDialog(
onDismissRequest = onDismissRequest,
onCreateLinkRequest = onCreateLinkRequest,
modifier = modifier,
)
}
linkAction is LinkAction.SetLink -> {
CreateLinkWithoutTextDialog(
onDismissRequest = onDismissRequest,
onSaveLinkRequest = onSaveLinkRequest,
modifier = modifier,
)
}
}
}
}
@Composable
private fun CreateLinkWithTextDialog(
onDismissRequest: () -> Unit,
onCreateLinkRequest: (url: String, text: String) -> Unit,
modifier: Modifier = Modifier,
) {
var linkText by remember { mutableStateOf("") }
var linkUrl by remember { mutableStateOf("") }
val titleText = stringResource(R.string.rich_text_editor_create_link)
fun onSubmit() {
onCreateLinkRequest(linkUrl, linkText)
onDismissRequest()
}
ListDialog(
onDismissRequest = onDismissRequest,
onSubmit = ::onSubmit,
title = titleText,
modifier = modifier
) {
item {
TextFieldListItem(
placeholder = stringResource(id = CommonStrings.common_text),
text = linkText,
onTextChanged = { linkText = it },
)
}
item {
TextFieldListItem(
placeholder = stringResource(id = R.string.rich_text_editor_url_placeholder),
text = linkUrl,
onTextChanged = { linkUrl = it },
)
}
}
}
@Composable
private fun CreateLinkWithoutTextDialog(
onDismissRequest: () -> Unit,
onSaveLinkRequest: (url: String) -> Unit,
modifier: Modifier = Modifier,
) {
var linkUrl by remember { mutableStateOf("") }
val titleText = stringResource(R.string.rich_text_editor_create_link)
fun onSubmit() {
onSaveLinkRequest(linkUrl)
onDismissRequest()
}
ListDialog(
onDismissRequest = onDismissRequest,
onSubmit = ::onSubmit,
title = titleText,
modifier = modifier
) {
item {
TextFieldListItem(
placeholder = stringResource(id = R.string.rich_text_editor_url_placeholder),
text = linkUrl,
onTextChanged = { linkUrl = it },
)
}
}
}
// The edit link dialog does not yet support displaying or editing the text of a link
// https://github.com/matrix-org/matrix-rich-text-editor/issues/617
@Composable
private fun EditLinkDialog(
currentUrl: String,
onDismissRequest: () -> Unit,
onSaveLinkRequest: (url: String) -> Unit,
onRemoveLinkRequest: () -> Unit,
modifier: Modifier = Modifier,
) {
var linkUrl by remember { mutableStateOf(currentUrl) }
val titleText = stringResource(R.string.rich_text_editor_edit_link)
fun onSubmit() {
onSaveLinkRequest(linkUrl)
onDismissRequest()
}
fun onRemoveClicked() {
onRemoveLinkRequest()
onDismissRequest()
}
ListDialog(
onDismissRequest = onDismissRequest,
onSubmit = ::onSubmit,
title = titleText,
modifier = modifier
) {
item {
TextFieldListItem(
placeholder = stringResource(id = R.string.rich_text_editor_url_placeholder),
text = linkUrl,
onTextChanged = { linkUrl = it },
)
}
item {
ListItem(
headlineContent = {
Text(
text = stringResource(R.string.rich_text_editor_remove_link),
color = ElementTheme.colors.textCriticalPrimary
)
},
onClick = ::onRemoveClicked,
)
}
}
}
@DayNightPreviews
@Composable
internal fun TextComposerLinkDialogCreateLinkPreview() {
TextComposerLinkDialog(
onDismissRequest = {},
linkAction = LinkAction.InsertLink,
onSaveLinkRequest = {},
onCreateLinkRequest = { _, _ -> },
onRemoveLinkRequest = {},
)
}
@DayNightPreviews
@Composable
internal fun TextComposerLinkDialogCreateLinkWithoutTextPreview() {
TextComposerLinkDialog(
onDismissRequest = {},
linkAction = LinkAction.SetLink(null),
onSaveLinkRequest = {},
onCreateLinkRequest = { _, _ -> },
onRemoveLinkRequest = {},
)
}
@DayNightPreviews
@Composable
internal fun TextComposerLinkDialogEditLinkPreview() {
TextComposerLinkDialog(
onDismissRequest = {},
linkAction = LinkAction.SetLink("https://element.io"),
onSaveLinkRequest = {},
onCreateLinkRequest = { _, _ -> },
onRemoveLinkRequest = {},
)
}

View File

@@ -1,4 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="rich_text_editor_bullet_list">"Přepnout seznam s odrážkami"</string>
<string name="rich_text_editor_code_block">"Přepnout blok kódu"</string>
<string name="rich_text_editor_composer_placeholder">"Zpráva…"</string>
<string name="rich_text_editor_format_bold">"Použít tučný text"</string>
<string name="rich_text_editor_format_italic">"Použít kurzívu"</string>
<string name="rich_text_editor_format_strikethrough">"Použít přeškrtnutí"</string>
<string name="rich_text_editor_format_underline">"Použít podtržení"</string>
<string name="rich_text_editor_full_screen_toggle">"Přepnout režim celé obrazovky"</string>
<string name="rich_text_editor_indent">"Odsazení"</string>
<string name="rich_text_editor_inline_code">"Použít formát inline kódu"</string>
<string name="rich_text_editor_link">"Nastavit odkaz"</string>
<string name="rich_text_editor_numbered_list">"Přepnout číslovaný seznam"</string>
<string name="rich_text_editor_quote">"Přepnout citaci"</string>
<string name="rich_text_editor_unindent">"Zrušit odsazení"</string>
<string name="rich_text_editor_a11y_add_attachment">"Přidat přílohu"</string>
</resources>

View File

@@ -1,4 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="rich_text_editor_bullet_list">"Aufzählungsliste umschalten"</string>
<string name="rich_text_editor_close_formatting_options">"Formatierungsoptionen schließen"</string>
<string name="rich_text_editor_code_block">"Codeblock umschalten"</string>
<string name="rich_text_editor_composer_placeholder">"Nachricht…"</string>
<string name="rich_text_editor_create_link">"Einen Link erstellen"</string>
<string name="rich_text_editor_edit_link">"Link bearbeiten"</string>
<string name="rich_text_editor_format_bold">"Fettes Format anwenden"</string>
<string name="rich_text_editor_format_italic">"Kursives Format anwenden"</string>
<string name="rich_text_editor_format_strikethrough">"Durchgestrichenes Format anwenden"</string>
<string name="rich_text_editor_format_underline">"Unterstreichungsformat anwenden"</string>
<string name="rich_text_editor_full_screen_toggle">"Vollbildmodus umschalten"</string>
<string name="rich_text_editor_indent">"Einrückung"</string>
<string name="rich_text_editor_inline_code">"Inline-Codeformat anwenden"</string>
<string name="rich_text_editor_link">"Link setzen"</string>
<string name="rich_text_editor_numbered_list">"Nummerierte Liste umschalten"</string>
<string name="rich_text_editor_open_compose_options">"Optionen zum Verfassen öffnen"</string>
<string name="rich_text_editor_quote">"Vorschlag umschalten"</string>
<string name="rich_text_editor_remove_link">"Link entfernen"</string>
<string name="rich_text_editor_unindent">"Ohne Einrückung"</string>
<string name="rich_text_editor_url_placeholder">"Link"</string>
<string name="rich_text_editor_a11y_add_attachment">"Anhang hinzufügen"</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="rich_text_editor_bullet_list">"Lista de puntos"</string>
<string name="rich_text_editor_code_block">"Bloque de código"</string>
<string name="rich_text_editor_composer_placeholder">"Mensaje…"</string>
<string name="rich_text_editor_format_bold">"Aplicar formato negrita"</string>
<string name="rich_text_editor_format_italic">"Aplicar formato cursiva"</string>
<string name="rich_text_editor_format_strikethrough">"Aplicar formato tachado"</string>
<string name="rich_text_editor_format_underline">"Aplicar formato de subrayado"</string>
<string name="rich_text_editor_full_screen_toggle">"Pantalla completa"</string>
<string name="rich_text_editor_indent">"Añadir sangría"</string>
<string name="rich_text_editor_inline_code">"Código"</string>
<string name="rich_text_editor_link">"Enlazar"</string>
<string name="rich_text_editor_numbered_list">"Lista numérica"</string>
<string name="rich_text_editor_quote">"Cita"</string>
<string name="rich_text_editor_unindent">"Quitar sangría"</string>
</resources>

View File

@@ -1,4 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="rich_text_editor_bullet_list">"Afficher une liste à puces"</string>
<string name="rich_text_editor_close_formatting_options">"Fermer les options de formatage"</string>
<string name="rich_text_editor_code_block">"Afficher le bloc de code"</string>
<string name="rich_text_editor_composer_placeholder">"Message…"</string>
<string name="rich_text_editor_create_link">"Créer un lien"</string>
<string name="rich_text_editor_edit_link">"Modifier le lien"</string>
<string name="rich_text_editor_format_bold">"Appliquer le format gras"</string>
<string name="rich_text_editor_format_italic">"Appliquer le format italique"</string>
<string name="rich_text_editor_format_strikethrough">"Appliquer le format barré"</string>
<string name="rich_text_editor_format_underline">"Appliquer le format souligné"</string>
<string name="rich_text_editor_full_screen_toggle">"Activer/désactiver le mode plein écran"</string>
<string name="rich_text_editor_indent">"Décaler vers la droite"</string>
<string name="rich_text_editor_inline_code">"Appliquer le formatage de code en ligne"</string>
<string name="rich_text_editor_link">"Définir un lien"</string>
<string name="rich_text_editor_numbered_list">"Afficher une liste numérotée"</string>
<string name="rich_text_editor_open_compose_options">"Ouvrir les options de rédaction"</string>
<string name="rich_text_editor_quote">"Afficher/masquer la citation"</string>
<string name="rich_text_editor_remove_link">"Supprimer le lien"</string>
<string name="rich_text_editor_unindent">"Décaler vers la gauche"</string>
<string name="rich_text_editor_url_placeholder">"Lien"</string>
<string name="rich_text_editor_a11y_add_attachment">"Ajouter une pièce jointe"</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="rich_text_editor_bullet_list">"Attiva/disattiva l\'elenco puntato"</string>
<string name="rich_text_editor_code_block">"Attiva/disattiva il blocco di codice"</string>
<string name="rich_text_editor_composer_placeholder">"Messaggio…"</string>
<string name="rich_text_editor_format_bold">"Applica il formato in grassetto"</string>
<string name="rich_text_editor_format_italic">"Applicare il formato corsivo"</string>
<string name="rich_text_editor_format_strikethrough">"Applica il formato barrato"</string>
<string name="rich_text_editor_format_underline">"Applicare il formato di sottolineatura"</string>
<string name="rich_text_editor_full_screen_toggle">"Attiva/disattiva la modalità a schermo intero"</string>
<string name="rich_text_editor_indent">"Rientro a destra"</string>
<string name="rich_text_editor_inline_code">"Applicare il formato del codice in linea"</string>
<string name="rich_text_editor_link">"Imposta collegamento"</string>
<string name="rich_text_editor_numbered_list">"Attiva/disattiva elenco numerato"</string>
<string name="rich_text_editor_quote">"Attiva/disattiva citazione"</string>
<string name="rich_text_editor_unindent">"Rientro a sinistra"</string>
</resources>

View File

@@ -1,4 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="rich_text_editor_bullet_list">"Comutați lista cu puncte"</string>
<string name="rich_text_editor_close_formatting_options">"Închideți opțiunile de formatare"</string>
<string name="rich_text_editor_code_block">"Comutați blocul de cod"</string>
<string name="rich_text_editor_composer_placeholder">"Mesaj…"</string>
<string name="rich_text_editor_create_link">"Creați un link"</string>
<string name="rich_text_editor_edit_link">"Editați link-ul"</string>
<string name="rich_text_editor_format_bold">"Aplicați formatul aldin"</string>
<string name="rich_text_editor_format_italic">"Aplicați formatul italic"</string>
<string name="rich_text_editor_format_strikethrough">"Aplicați formatul barat"</string>
<string name="rich_text_editor_format_underline">"Aplică formatul de subliniere"</string>
<string name="rich_text_editor_full_screen_toggle">"Comutați modul ecran complet"</string>
<string name="rich_text_editor_indent">"Indentare"</string>
<string name="rich_text_editor_inline_code">"Aplicați formatul de cod inline"</string>
<string name="rich_text_editor_link">"Setați linkul"</string>
<string name="rich_text_editor_numbered_list">"Comutați lista numerotată"</string>
<string name="rich_text_editor_open_compose_options">"Deschideți opțiunile de compunere"</string>
<string name="rich_text_editor_quote">"Aplicați citatul"</string>
<string name="rich_text_editor_unindent">"Dez-identare"</string>
<string name="rich_text_editor_url_placeholder">"Link"</string>
<string name="rich_text_editor_a11y_add_attachment">"Adăugați un atașament"</string>
</resources>

View File

@@ -1,4 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="rich_text_editor_bullet_list">"Переключить список маркеров"</string>
<string name="rich_text_editor_code_block">"Переключить блок кода"</string>
<string name="rich_text_editor_composer_placeholder">"Сообщение"</string>
<string name="rich_text_editor_format_bold">"Применить жирный шрифт"</string>
<string name="rich_text_editor_format_italic">"Применить курсивный формат"</string>
<string name="rich_text_editor_format_strikethrough">"Применить формат зачеркивания"</string>
<string name="rich_text_editor_format_underline">"Применить формат подчеркивания"</string>
<string name="rich_text_editor_full_screen_toggle">"Переключение полноэкранного режима"</string>
<string name="rich_text_editor_indent">"Отступ"</string>
<string name="rich_text_editor_inline_code">"Применить встроенный формат кода"</string>
<string name="rich_text_editor_link">"Установить ссылку"</string>
<string name="rich_text_editor_numbered_list">"Переключить нумерованный список"</string>
<string name="rich_text_editor_quote">"Переключить цитату"</string>
<string name="rich_text_editor_unindent">"Без отступа"</string>
<string name="rich_text_editor_a11y_add_attachment">"Прикрепить файл"</string>
</resources>

View File

@@ -1,4 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="rich_text_editor_bullet_list">"Prepnúť zoznam odrážok"</string>
<string name="rich_text_editor_close_formatting_options">"Zatvoriť možnosti formátovania"</string>
<string name="rich_text_editor_code_block">"Prepnúť blok kódu"</string>
<string name="rich_text_editor_composer_placeholder">"Správa…"</string>
<string name="rich_text_editor_create_link">"Vytvoriť odkaz"</string>
<string name="rich_text_editor_edit_link">"Upraviť odkaz"</string>
<string name="rich_text_editor_format_bold">"Použiť tučný formát"</string>
<string name="rich_text_editor_format_italic">"Použiť formát kurzívy"</string>
<string name="rich_text_editor_format_strikethrough">"Použiť formát prečiarknutia"</string>
<string name="rich_text_editor_format_underline">"Použiť formát podčiarknutia"</string>
<string name="rich_text_editor_full_screen_toggle">"Prepnúť režim celej obrazovky"</string>
<string name="rich_text_editor_indent">"Odsadenie"</string>
<string name="rich_text_editor_inline_code">"Použiť formát riadkového kódu"</string>
<string name="rich_text_editor_link">"Nastaviť odkaz"</string>
<string name="rich_text_editor_numbered_list">"Prepnúť číslovaný zoznam"</string>
<string name="rich_text_editor_open_compose_options">"Otvoriť možnosti písania"</string>
<string name="rich_text_editor_quote">"Prepnúť citáciu"</string>
<string name="rich_text_editor_remove_link">"Odstrániť odkaz"</string>
<string name="rich_text_editor_unindent">"Zrušiť odsadenie"</string>
<string name="rich_text_editor_url_placeholder">"Odkaz"</string>
<string name="rich_text_editor_a11y_add_attachment">"Pridať prílohu"</string>
</resources>

View File

@@ -1,4 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="rich_text_editor_bullet_list">"切換項目編號"</string>
<string name="rich_text_editor_code_block">"切換程式碼區塊"</string>
<string name="rich_text_editor_composer_placeholder">"訊息"</string>
<string name="rich_text_editor_create_link">"建立連結"</string>
<string name="rich_text_editor_edit_link">"編輯連結"</string>
<string name="rich_text_editor_format_bold">"套用粗體"</string>
<string name="rich_text_editor_format_italic">"套用斜體"</string>
<string name="rich_text_editor_format_strikethrough">"套用刪除線"</string>
<string name="rich_text_editor_format_underline">"套用底線"</string>
<string name="rich_text_editor_full_screen_toggle">"切換全螢幕模式"</string>
<string name="rich_text_editor_indent">"增加縮排"</string>
<string name="rich_text_editor_link">"設定連結"</string>
<string name="rich_text_editor_numbered_list">"切換數字編號"</string>
<string name="rich_text_editor_quote">"切換引用"</string>
<string name="rich_text_editor_unindent">"減少縮排"</string>
<string name="rich_text_editor_url_placeholder">"連結"</string>
<string name="rich_text_editor_a11y_add_attachment">"新增附件"</string>
</resources>

View File

@@ -1,4 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="rich_text_editor_bullet_list">"Toggle bullet list"</string>
<string name="rich_text_editor_close_formatting_options">"Close formatting options"</string>
<string name="rich_text_editor_code_block">"Toggle code block"</string>
<string name="rich_text_editor_composer_placeholder">"Message…"</string>
<string name="rich_text_editor_create_link">"Create a link"</string>
<string name="rich_text_editor_edit_link">"Edit link"</string>
<string name="rich_text_editor_format_bold">"Apply bold format"</string>
<string name="rich_text_editor_format_italic">"Apply italic format"</string>
<string name="rich_text_editor_format_strikethrough">"Apply strikethrough format"</string>
<string name="rich_text_editor_format_underline">"Apply underline format"</string>
<string name="rich_text_editor_full_screen_toggle">"Toggle full screen mode"</string>
<string name="rich_text_editor_indent">"Indent"</string>
<string name="rich_text_editor_inline_code">"Apply inline code format"</string>
<string name="rich_text_editor_link">"Set link"</string>
<string name="rich_text_editor_numbered_list">"Toggle numbered list"</string>
<string name="rich_text_editor_open_compose_options">"Open compose options"</string>
<string name="rich_text_editor_quote">"Toggle quote"</string>
<string name="rich_text_editor_remove_link">"Remove link"</string>
<string name="rich_text_editor_unindent">"Unindent"</string>
<string name="rich_text_editor_url_placeholder">"Link"</string>
<string name="rich_text_editor_a11y_add_attachment">"Add attachment"</string>
</resources>

View File

@@ -171,20 +171,6 @@
<string name="rageshake_dialog_content">"Zdá se, že jste frustrovaně třásli telefonem. Chcete otevřít obrazovku pro nahlášení chyby?"</string>
<string name="report_content_explanation">"Tato zpráva bude nahlášena správci vašeho domovského serveru. Nebude si moci přečíst žádné šifrované zprávy."</string>
<string name="report_content_hint">"Důvod nahlášení tohoto obsahu"</string>
<string name="rich_text_editor_bullet_list">"Přepnout seznam s odrážkami"</string>
<string name="rich_text_editor_code_block">"Přepnout blok kódu"</string>
<string name="rich_text_editor_composer_placeholder">"Zpráva…"</string>
<string name="rich_text_editor_format_bold">"Použít tučný text"</string>
<string name="rich_text_editor_format_italic">"Použít kurzívu"</string>
<string name="rich_text_editor_format_strikethrough">"Použít přeškrtnutí"</string>
<string name="rich_text_editor_format_underline">"Použít podtržení"</string>
<string name="rich_text_editor_full_screen_toggle">"Přepnout režim celé obrazovky"</string>
<string name="rich_text_editor_indent">"Odsazení"</string>
<string name="rich_text_editor_inline_code">"Použít formát inline kódu"</string>
<string name="rich_text_editor_link">"Nastavit odkaz"</string>
<string name="rich_text_editor_numbered_list">"Přepnout číslovaný seznam"</string>
<string name="rich_text_editor_quote">"Přepnout citaci"</string>
<string name="rich_text_editor_unindent">"Zrušit odsazení"</string>
<string name="room_timeline_beginning_of_room">"Toto je začátek %1$s."</string>
<string name="room_timeline_beginning_of_room_no_name">"Toto je začátek této konverzace."</string>
<string name="room_timeline_read_marker_title">"Nové"</string>

View File

@@ -116,7 +116,7 @@
<string name="common_report_submitted">"Bericht eingereicht"</string>
<string name="common_rich_text_editor">"Rich-Text-Editor"</string>
<string name="common_room_name">"Raumname"</string>
<string name="common_room_name_placeholder">"z.B. Ihr Projektname"</string>
<string name="common_room_name_placeholder">"z.B. dein Projektname"</string>
<string name="common_search_for_someone">"Nach jemandem suchen"</string>
<string name="common_search_results">"Suchergebnisse"</string>
<string name="common_security">"Sicherheit"</string>
@@ -159,9 +159,9 @@
<string name="error_failed_creating_the_permalink">"Fehler beim Erstellen des Permalinks"</string>
<string name="error_failed_loading_map">"%1$s konnte die Karte nicht laden. Bitte versuche es später erneut."</string>
<string name="error_failed_loading_messages">"Fehler beim Laden der Nachrichten"</string>
<string name="error_failed_locating_user">"%1$s konnte nicht auf Ihren Standort zugreifen. Bitte versuche es später erneut."</string>
<string name="error_missing_location_auth_android">"%1$s hat keine Erlaubnis, auf Ihren Standort zuzugreifen. Du kannst den Zugriff in den Einstellungen aktivieren."</string>
<string name="error_missing_location_rationale_android">"%1$s hat keine Erlaubnis, auf Ihren Standort zuzugreifen. Aktiviere unten den Zugriff."</string>
<string name="error_failed_locating_user">"%1$s konnte nicht auf deinen Standort zugreifen. Bitte versuche es später erneut."</string>
<string name="error_missing_location_auth_android">"%1$s hat keine Erlaubnis, auf deinen Standort zuzugreifen. Du kannst den Zugriff in den Einstellungen aktivieren."</string>
<string name="error_missing_location_rationale_android">"%1$s hat keine Erlaubnis, auf deinen Standort zuzugreifen. Aktiviere unten den Zugriff."</string>
<string name="error_some_messages_have_not_been_sent">"Einige Nachrichten wurden nicht gesendet"</string>
<string name="error_unknown">"Entschuldigung, es ist ein Fehler aufgetreten"</string>
<string name="invite_friends_rich_title">"🔐️ Begleite mich auf %1$s"</string>
@@ -180,28 +180,8 @@
</plurals>
<string name="preference_rageshake">"Schüttel heftig zum Melden von Fehlern"</string>
<string name="rageshake_dialog_content">"Du scheinst das Telefon aus Frustration zu schütteln. Möchtest du den Bildschirm für den Fehlerbericht öffnen?"</string>
<string name="report_content_explanation">"Diese Meldung wird an den Administrator Ihres Homeservers weitergeleitet. Dieser kann keine verschlüsselten Nachrichten lesen."</string>
<string name="report_content_explanation">"Diese Meldung wird an den Administrator deines Homeservers weitergeleitet. Dieser kann keine verschlüsselten Nachrichten lesen."</string>
<string name="report_content_hint">"Grund für die Meldung dieses Inhalts"</string>
<string name="rich_text_editor_bullet_list">"Aufzählungsliste umschalten"</string>
<string name="rich_text_editor_close_formatting_options">"Formatierungsoptionen schließen"</string>
<string name="rich_text_editor_code_block">"Codeblock umschalten"</string>
<string name="rich_text_editor_composer_placeholder">"Nachricht…"</string>
<string name="rich_text_editor_create_link">"Einen Link erstellen"</string>
<string name="rich_text_editor_edit_link">"Link bearbeiten"</string>
<string name="rich_text_editor_format_bold">"Fettes Format anwenden"</string>
<string name="rich_text_editor_format_italic">"Kursives Format anwenden"</string>
<string name="rich_text_editor_format_strikethrough">"Durchgestrichenes Format anwenden"</string>
<string name="rich_text_editor_format_underline">"Unterstreichungsformat anwenden"</string>
<string name="rich_text_editor_full_screen_toggle">"Vollbildmodus umschalten"</string>
<string name="rich_text_editor_indent">"Einrückung"</string>
<string name="rich_text_editor_inline_code">"Inline-Codeformat anwenden"</string>
<string name="rich_text_editor_link">"Link setzen"</string>
<string name="rich_text_editor_numbered_list">"Nummerierte Liste umschalten"</string>
<string name="rich_text_editor_open_compose_options">"Optionen zum Verfassen öffnen"</string>
<string name="rich_text_editor_quote">"Vorschlag umschalten"</string>
<string name="rich_text_editor_remove_link">"Link entfernen"</string>
<string name="rich_text_editor_unindent">"Ohne Einrückung"</string>
<string name="rich_text_editor_url_placeholder">"Link"</string>
<string name="room_timeline_beginning_of_room">"Dies ist der Anfang von %1$s."</string>
<string name="room_timeline_beginning_of_room_no_name">"Dies ist der Anfang dieses Gesprächs."</string>
<string name="room_timeline_read_marker_title">"Neu"</string>

View File

@@ -120,20 +120,6 @@
<string name="rageshake_dialog_content">"Parece que sacudes el teléfono con frustración. ¿Quieres abrir la pantalla de informe de errores?"</string>
<string name="report_content_explanation">"Este mensaje se notificará al administrador de su homeserver. No podrán leer ningún mensaje cifrado."</string>
<string name="report_content_hint">"Motivo para denunciar este contenido"</string>
<string name="rich_text_editor_bullet_list">"Lista de puntos"</string>
<string name="rich_text_editor_code_block">"Bloque de código"</string>
<string name="rich_text_editor_composer_placeholder">"Mensaje…"</string>
<string name="rich_text_editor_format_bold">"Aplicar formato negrita"</string>
<string name="rich_text_editor_format_italic">"Aplicar formato cursiva"</string>
<string name="rich_text_editor_format_strikethrough">"Aplicar formato tachado"</string>
<string name="rich_text_editor_format_underline">"Aplicar formato de subrayado"</string>
<string name="rich_text_editor_full_screen_toggle">"Pantalla completa"</string>
<string name="rich_text_editor_indent">"Añadir sangría"</string>
<string name="rich_text_editor_inline_code">"Código"</string>
<string name="rich_text_editor_link">"Enlazar"</string>
<string name="rich_text_editor_numbered_list">"Lista numérica"</string>
<string name="rich_text_editor_quote">"Cita"</string>
<string name="rich_text_editor_unindent">"Quitar sangría"</string>
<string name="room_timeline_beginning_of_room">"Este es el principio de %1$s."</string>
<string name="room_timeline_beginning_of_room_no_name">"Este es el principio de esta conversación."</string>
<string name="room_timeline_read_marker_title">"Nuevos"</string>

View File

@@ -182,26 +182,6 @@
<string name="rageshake_dialog_content">"Vous semblez secouer le téléphone avec frustration. Voulez-vous ouvrir le formulaire de rapport de problème ?"</string>
<string name="report_content_explanation">"Ce message sera signalé à ladministrateur de votre serveur daccueil. Il ne pourra lire aucun message chiffré."</string>
<string name="report_content_hint">"Raison du signalement de ce contenu"</string>
<string name="rich_text_editor_bullet_list">"Afficher une liste à puces"</string>
<string name="rich_text_editor_close_formatting_options">"Fermer les options de formatage"</string>
<string name="rich_text_editor_code_block">"Afficher le bloc de code"</string>
<string name="rich_text_editor_composer_placeholder">"Message…"</string>
<string name="rich_text_editor_create_link">"Créer un lien"</string>
<string name="rich_text_editor_edit_link">"Modifier le lien"</string>
<string name="rich_text_editor_format_bold">"Appliquer le format gras"</string>
<string name="rich_text_editor_format_italic">"Appliquer le format italique"</string>
<string name="rich_text_editor_format_strikethrough">"Appliquer le format barré"</string>
<string name="rich_text_editor_format_underline">"Appliquer le format souligné"</string>
<string name="rich_text_editor_full_screen_toggle">"Activer/désactiver le mode plein écran"</string>
<string name="rich_text_editor_indent">"Décaler vers la droite"</string>
<string name="rich_text_editor_inline_code">"Appliquer le formatage de code en ligne"</string>
<string name="rich_text_editor_link">"Définir un lien"</string>
<string name="rich_text_editor_numbered_list">"Afficher une liste numérotée"</string>
<string name="rich_text_editor_open_compose_options">"Ouvrir les options de rédaction"</string>
<string name="rich_text_editor_quote">"Afficher/masquer la citation"</string>
<string name="rich_text_editor_remove_link">"Supprimer le lien"</string>
<string name="rich_text_editor_unindent">"Décaler vers la gauche"</string>
<string name="rich_text_editor_url_placeholder">"Lien"</string>
<string name="room_timeline_beginning_of_room">"Ceci est le début de %1$s."</string>
<string name="room_timeline_beginning_of_room_no_name">"Ceci est le début de cette conversation."</string>
<string name="room_timeline_read_marker_title">"Nouveau"</string>

View File

@@ -120,20 +120,6 @@
<string name="rageshake_dialog_content">"Sembra che tu stia scuotendo il telefono per la frustrazione. Vuoi aprire la schermata di segnalazione dei problemi?"</string>
<string name="report_content_explanation">"Questo messaggio verrà segnalato all\'amministratore dell\'homeserver. Questi non sarà in grado di leggere i messaggi criptati."</string>
<string name="report_content_hint">"Motivo della segnalazione di questo contenuto"</string>
<string name="rich_text_editor_bullet_list">"Attiva/disattiva l\'elenco puntato"</string>
<string name="rich_text_editor_code_block">"Attiva/disattiva il blocco di codice"</string>
<string name="rich_text_editor_composer_placeholder">"Messaggio…"</string>
<string name="rich_text_editor_format_bold">"Applica il formato in grassetto"</string>
<string name="rich_text_editor_format_italic">"Applicare il formato corsivo"</string>
<string name="rich_text_editor_format_strikethrough">"Applica il formato barrato"</string>
<string name="rich_text_editor_format_underline">"Applicare il formato di sottolineatura"</string>
<string name="rich_text_editor_full_screen_toggle">"Attiva/disattiva la modalità a schermo intero"</string>
<string name="rich_text_editor_indent">"Rientro a destra"</string>
<string name="rich_text_editor_inline_code">"Applicare il formato del codice in linea"</string>
<string name="rich_text_editor_link">"Imposta collegamento"</string>
<string name="rich_text_editor_numbered_list">"Attiva/disattiva elenco numerato"</string>
<string name="rich_text_editor_quote">"Attiva/disattiva citazione"</string>
<string name="rich_text_editor_unindent">"Rientro a sinistra"</string>
<string name="room_timeline_beginning_of_room">"Questo è l\'inizio di %1$s."</string>
<string name="room_timeline_beginning_of_room_no_name">"Questo è l\'inizio della conversazione."</string>
<string name="room_timeline_read_marker_title">"Nuovo"</string>

View File

@@ -174,25 +174,6 @@
<string name="rageshake_dialog_content">"Se pare că scuturați telefonul de frustrare. Doriți să deschdeți ecranul de raportare a unei erori?"</string>
<string name="report_content_explanation">"Acest mesaj va fi raportat administratorilor homeserver-ului tau. Ei nu vor putea citi niciun mesaj criptat."</string>
<string name="report_content_hint">"Motivul raportării acestui conținut"</string>
<string name="rich_text_editor_bullet_list">"Comutați lista cu puncte"</string>
<string name="rich_text_editor_close_formatting_options">"Închideți opțiunile de formatare"</string>
<string name="rich_text_editor_code_block">"Comutați blocul de cod"</string>
<string name="rich_text_editor_composer_placeholder">"Mesaj…"</string>
<string name="rich_text_editor_create_link">"Creați un link"</string>
<string name="rich_text_editor_edit_link">"Editați link-ul"</string>
<string name="rich_text_editor_format_bold">"Aplicați formatul aldin"</string>
<string name="rich_text_editor_format_italic">"Aplicați formatul italic"</string>
<string name="rich_text_editor_format_strikethrough">"Aplicați formatul barat"</string>
<string name="rich_text_editor_format_underline">"Aplică formatul de subliniere"</string>
<string name="rich_text_editor_full_screen_toggle">"Comutați modul ecran complet"</string>
<string name="rich_text_editor_indent">"Indentare"</string>
<string name="rich_text_editor_inline_code">"Aplicați formatul de cod inline"</string>
<string name="rich_text_editor_link">"Setați linkul"</string>
<string name="rich_text_editor_numbered_list">"Comutați lista numerotată"</string>
<string name="rich_text_editor_open_compose_options">"Deschideți opțiunile de compunere"</string>
<string name="rich_text_editor_quote">"Aplicați citatul"</string>
<string name="rich_text_editor_unindent">"Dez-identare"</string>
<string name="rich_text_editor_url_placeholder">"Link"</string>
<string name="room_timeline_beginning_of_room">"Acesta este începutul conversației %1$s."</string>
<string name="room_timeline_beginning_of_room_no_name">"Acesta este începutul acestei conversații."</string>
<string name="room_timeline_read_marker_title">"Nou"</string>

View File

@@ -170,20 +170,6 @@
<string name="rageshake_dialog_content">"Кажется, вы трясли телефон. Хотите открыть экран отчета об ошибке?"</string>
<string name="report_content_explanation">"Это сообщение будет передано администратору вашего домашнего сервера. Они не смогут прочитать зашифрованные сообщения."</string>
<string name="report_content_hint">"Причина, по которой вы пожаловались на этот контент"</string>
<string name="rich_text_editor_bullet_list">"Переключить список маркеров"</string>
<string name="rich_text_editor_code_block">"Переключить блок кода"</string>
<string name="rich_text_editor_composer_placeholder">"Сообщение"</string>
<string name="rich_text_editor_format_bold">"Применить жирный шрифт"</string>
<string name="rich_text_editor_format_italic">"Применить курсивный формат"</string>
<string name="rich_text_editor_format_strikethrough">"Применить формат зачеркивания"</string>
<string name="rich_text_editor_format_underline">"Применить формат подчеркивания"</string>
<string name="rich_text_editor_full_screen_toggle">"Переключение полноэкранного режима"</string>
<string name="rich_text_editor_indent">"Отступ"</string>
<string name="rich_text_editor_inline_code">"Применить встроенный формат кода"</string>
<string name="rich_text_editor_link">"Установить ссылку"</string>
<string name="rich_text_editor_numbered_list">"Переключить нумерованный список"</string>
<string name="rich_text_editor_quote">"Переключить цитату"</string>
<string name="rich_text_editor_unindent">"Без отступа"</string>
<string name="room_timeline_beginning_of_room">"Это начало %1$s."</string>
<string name="room_timeline_beginning_of_room_no_name">"Это начало разговора."</string>
<string name="room_timeline_read_marker_title">"Новый"</string>

View File

@@ -184,26 +184,6 @@
<string name="rageshake_dialog_content">"Zdá sa, že zúrivo trasiete telefónom. Chcete otvoriť obrazovku s nahlásením chýb?"</string>
<string name="report_content_explanation">"Táto správa bude nahlásená správcovi vášho domovského servera. Nebude môcť prečítať žiadne šifrované správy."</string>
<string name="report_content_hint">"Dôvod nahlásenia tohto obsahu"</string>
<string name="rich_text_editor_bullet_list">"Prepnúť zoznam odrážok"</string>
<string name="rich_text_editor_close_formatting_options">"Zatvoriť možnosti formátovania"</string>
<string name="rich_text_editor_code_block">"Prepnúť blok kódu"</string>
<string name="rich_text_editor_composer_placeholder">"Správa…"</string>
<string name="rich_text_editor_create_link">"Vytvoriť odkaz"</string>
<string name="rich_text_editor_edit_link">"Upraviť odkaz"</string>
<string name="rich_text_editor_format_bold">"Použiť tučný formát"</string>
<string name="rich_text_editor_format_italic">"Použiť formát kurzívy"</string>
<string name="rich_text_editor_format_strikethrough">"Použiť formát prečiarknutia"</string>
<string name="rich_text_editor_format_underline">"Použiť formát podčiarknutia"</string>
<string name="rich_text_editor_full_screen_toggle">"Prepnúť režim celej obrazovky"</string>
<string name="rich_text_editor_indent">"Odsadenie"</string>
<string name="rich_text_editor_inline_code">"Použiť formát riadkového kódu"</string>
<string name="rich_text_editor_link">"Nastaviť odkaz"</string>
<string name="rich_text_editor_numbered_list">"Prepnúť číslovaný zoznam"</string>
<string name="rich_text_editor_open_compose_options">"Otvoriť možnosti písania"</string>
<string name="rich_text_editor_quote">"Prepnúť citáciu"</string>
<string name="rich_text_editor_remove_link">"Odstrániť odkaz"</string>
<string name="rich_text_editor_unindent">"Zrušiť odsadenie"</string>
<string name="rich_text_editor_url_placeholder">"Odkaz"</string>
<string name="room_timeline_beginning_of_room">"Toto je začiatok %1$s."</string>
<string name="room_timeline_beginning_of_room_no_name">"Toto je začiatok tejto konverzácie."</string>
<string name="room_timeline_read_marker_title">"Nové"</string>

View File

@@ -143,22 +143,6 @@
<item quantity="other">"%d 票"</item>
</plurals>
<string name="report_content_hint">"檢舉這個內容的原因"</string>
<string name="rich_text_editor_bullet_list">"切換項目編號"</string>
<string name="rich_text_editor_code_block">"切換程式碼區塊"</string>
<string name="rich_text_editor_composer_placeholder">"訊息"</string>
<string name="rich_text_editor_create_link">"建立連結"</string>
<string name="rich_text_editor_edit_link">"編輯連結"</string>
<string name="rich_text_editor_format_bold">"套用粗體"</string>
<string name="rich_text_editor_format_italic">"套用斜體"</string>
<string name="rich_text_editor_format_strikethrough">"套用刪除線"</string>
<string name="rich_text_editor_format_underline">"套用底線"</string>
<string name="rich_text_editor_full_screen_toggle">"切換全螢幕模式"</string>
<string name="rich_text_editor_indent">"增加縮排"</string>
<string name="rich_text_editor_link">"設定連結"</string>
<string name="rich_text_editor_numbered_list">"切換數字編號"</string>
<string name="rich_text_editor_quote">"切換引用"</string>
<string name="rich_text_editor_unindent">"減少縮排"</string>
<string name="rich_text_editor_url_placeholder">"連結"</string>
<string name="room_timeline_read_marker_title">"新訊息"</string>
<string name="screen_analytics_settings_share_data">"分享分析數據"</string>
<string name="screen_media_upload_preview_error_failed_sending">"無法上傳媒體檔案,請稍後再試。"</string>

View File

@@ -182,26 +182,6 @@
<string name="rageshake_dialog_content">"You seem to be shaking the phone in frustration. Would you like to open the bug report screen?"</string>
<string name="report_content_explanation">"This message will be reported to your homeservers administrator. They will not be able to read any encrypted messages."</string>
<string name="report_content_hint">"Reason for reporting this content"</string>
<string name="rich_text_editor_bullet_list">"Toggle bullet list"</string>
<string name="rich_text_editor_close_formatting_options">"Close formatting options"</string>
<string name="rich_text_editor_code_block">"Toggle code block"</string>
<string name="rich_text_editor_composer_placeholder">"Message…"</string>
<string name="rich_text_editor_create_link">"Create a link"</string>
<string name="rich_text_editor_edit_link">"Edit link"</string>
<string name="rich_text_editor_format_bold">"Apply bold format"</string>
<string name="rich_text_editor_format_italic">"Apply italic format"</string>
<string name="rich_text_editor_format_strikethrough">"Apply strikethrough format"</string>
<string name="rich_text_editor_format_underline">"Apply underline format"</string>
<string name="rich_text_editor_full_screen_toggle">"Toggle full screen mode"</string>
<string name="rich_text_editor_indent">"Indent"</string>
<string name="rich_text_editor_inline_code">"Apply inline code format"</string>
<string name="rich_text_editor_link">"Set link"</string>
<string name="rich_text_editor_numbered_list">"Toggle numbered list"</string>
<string name="rich_text_editor_open_compose_options">"Open compose options"</string>
<string name="rich_text_editor_quote">"Toggle quote"</string>
<string name="rich_text_editor_remove_link">"Remove link"</string>
<string name="rich_text_editor_unindent">"Unindent"</string>
<string name="rich_text_editor_url_placeholder">"Link"</string>
<string name="room_timeline_beginning_of_room">"This is the beginning of %1$s."</string>
<string name="room_timeline_beginning_of_room_no_name">"This is the beginning of this conversation."</string>
<string name="room_timeline_read_marker_title">"New"</string>

View File

@@ -47,7 +47,7 @@
{
"name": ":libraries:textcomposer:impl",
"includeRegex": [
"rich_text_editor_.*"
"rich_text_editor.*"
]
},
{