From 2a61dd0515d71d3798285c30f529ac80ece80d25 Mon Sep 17 00:00:00 2001 From: Markus Koehne Date: Wed, 4 May 2022 02:01:45 +0200 Subject: [PATCH 1/7] feat(localization): add German localization --- .../lib/src/stream_chat_localizations.dart | 5 + .../lib/src/stream_chat_localizations_de.dart | 371 ++++++++++++++++++ 2 files changed, 376 insertions(+) create mode 100644 packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations.dart index 16838cf5..3087e900 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations.dart @@ -19,6 +19,8 @@ part 'stream_chat_localizations_hi.dart'; part 'stream_chat_localizations_pt.dart'; +part 'stream_chat_localizations_de.dart'; + /// The set of supported languages, as language code strings. /// /// The [GlobalStreamChatLocalizations.delegate] can generate localizations for @@ -36,6 +38,7 @@ const kStreamChatSupportedLanguages = { 'ja', 'ko', 'pt', + 'de', }; /// Creates a [GlobalStreamChatLocalizations] instance for the given `locale`. @@ -74,6 +77,8 @@ GlobalStreamChatLocalizations? getStreamChatTranslation(Locale locale) { return const StreamChatLocalizationsKo(); case 'pt': return const StreamChatLocalizationsPt(); + case 'de': + return const StreamChatLocalizationsDe(); default: return null; } diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart new file mode 100644 index 00000000..b888c530 --- /dev/null +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart @@ -0,0 +1,371 @@ +part of 'stream_chat_localizations.dart'; + +/// The translations for German (`de`). +class StreamChatLocalizationsDE extends GlobalStreamChatLocalizations { + /// Create an instance of the translation bundle for German. + const StreamChatLocalizationsDe({String localeName = 'de'}) + : super(localeName: localeName); + + @override + String get launchUrlError => 'Kann die Url nicht geöffnet werden'; + + @override + String get loadingUsersError => 'Fehler beim Laden von Benutzern'; + + @override + String get noUsersLabel => 'Derzeit gibt es keine Benutzer'; + + @override + String get retryLabel => 'Wiederholen'; + + @override + String get userLastOnlineText => 'Zuletzt online'; + + @override + String get userOnlineText => 'Online'; + + @override + String userTypingText(Iterable users) { + if (users.isEmpty) return ''; + final first = users.first; + if (users.length == 1) { + return '${first.name} tippt'; + } + return '${first.name} und ${users.length - 1} mehr tippen'; + } + + @override + String get threadReplyLabel => 'Thread Antwort'; + + @override + String get onlyVisibleToYouText => 'Nur für dich sichtbar'; + + @override + String threadReplyCountText(int count) => '$count Thread Antworten'; + + @override + String attachmentsUploadProgressText({ + required int remaining, + required int total, + }) => + 'Hochladen $remaining/$total ...'; + + @override + String pinnedByUserText({ + required User pinnedBy, + required User currentUser, + }) { + final pinnedByCurrentUser = currentUser.id == pinnedBy.id; + if (pinnedByCurrentUser) return 'Angeheftet von Dir'; + return 'Angeheftet von ${pinnedBy.name}'; + } + + @override + String get emptyMessagesText => 'Derzeit sind keine Nachrichten vorhanden'; + + @override + String get genericErrorText => 'Etwas ist schief gelaufen'; + + @override + String get loadingMessagesError => 'Fehler beim Laden der Nachrichten'; + + @override + String resultCountText(int count) => '$count Ergebnisse'; + + @override + String get messageDeletedText => 'Diese Nachricht ist gelöscht.'; + + @override + String get messageDeletedLabel => 'Nachricht gelöscht'; + + @override + String get messageReactionsLabel => 'Nachricht Reaktionen'; + + @override + String get emptyChatMessagesText => 'Noch keine Unterhaltung hier...'; + + @override + String threadSeparatorText(int replyCount) { + if (replyCount == 1) return '1 Antwort'; + return '$replyCount Antworten'; + } + + @override + String get connectedLabel => 'Verbunden'; + + @override + String get disconnectedLabel => 'Getrennt'; + + @override + String get reconnectingLabel => 'Wiederherstellung der Verbindung...'; + + @override + String get alsoSendAsDirectMessageLabel => 'Auch als Direktnachricht senden'; + + @override + String get addACommentOrSendLabel => 'Einen Kommentar hinzufügen oder senden'; + + @override + String get searchGifLabel => 'GIFs suchen'; + + @override + String get writeAMessageLabel => 'Eine Nachricht schreiben'; + + @override + String get instantCommandsLabel => 'Sofortige Befehle'; + + @override + String fileTooLargeAfterCompressionError(double limitInMB) => + 'Die Datei ist zu groß zum Hochladen. ' + 'Die maximale Dateigröße beträgt $limitInMB MB. ' + 'Wir haben versucht, sie zu komprimieren, aber das war nicht genug.'; + + @override + String fileTooLargeError(double limitInMB) => + 'Die Datei ist zu groß zum Hochladen. Die Dateigröße ist begrenzt auf $limitInMB MB.'; + + @override + String emojiMatchingQueryText(String query) => 'Emoji-Abgleich "$query"'; + + @override + String get addAFileLabel => 'Eine Datei hinzufügen'; + + @override + String get photoFromCameraLabel => 'Foto von der Kamera'; + + @override + String get uploadAFileLabel => 'Eine Datei hochladen'; + + @override + String get uploadAPhotoLabel => 'Ein Foto hochladen'; + + @override + String get uploadAVideoLabel => 'Ein Video hochladen'; + + @override + String get videoFromCameraLabel => 'Video von der Kamera'; + + @override + String get okLabel => 'OK'; + + @override + String get somethingWentWrongError => 'Etwas ist schief gelaufen'; + + @override + String get addMoreFilesLabel => 'Weitere Dateien hinzufügen'; + + @override + String get enablePhotoAndVideoAccessMessage => + 'Bitte aktivieren Sie den Zugriff auf Ihre Fotos' + '\nund Videos, damit Sie sie mit Freunden teilen können.'; + + @override + String get allowGalleryAccessMessage => 'Zugang zu Ihrer Galerie gewähren'; + + @override + String get flagMessageLabel => 'Markierte-Nachricht'; + + @override + String get flagMessageQuestion => + 'Möchten Sie eine Kopie dieser Nachricht an einen' + '\nModerator für weitere Untersuchungen senden?'; + + @override + String get flagLabel => 'MARKIEREN'; + + @override + String get cancelLabel => 'ABBRECHEN'; + + @override + String get flagMessageSuccessfulLabel => 'Nachricht markiert'; + + @override + String get flagMessageSuccessfulText => + 'Die Nachricht wurde an einen Moderator weitergeleitet.'; + + @override + String get deleteLabel => 'LÖSCHEN'; + + @override + String get deleteMessageLabel => 'Nachricht löschen'; + + @override + String get deleteMessageQuestion => + 'Sind Sie sicher, dass Sie diese Nachricht endgültig löschen wollen?'; + + @override + String get operationCouldNotBeCompletedText => + 'Die Operation konnte nicht abgeschlossen werden.'; + + @override + String get replyLabel => 'Antwort'; + + @override + String togglePinUnpinText({required bool pinned}) { + if (pinned) return 'Aus der Unterhaltung lösen'; + return 'Anheften an die Unterhaltung'; + } + + @override + String toggleDeleteRetryDeleteMessageText({required bool isDeleteFailed}) { + if (isDeleteFailed) return 'Wiederholen Löschen der Nachricht'; + return 'Nachricht löschen'; + } + + @override + String get copyMessageLabel => 'Nachricht kopieren'; + + @override + String get editMessageLabel => 'Nachricht bearbeiten'; + + @override + String toggleResendOrResendEditedMessage({required bool isUpdateFailed}) { + if (isUpdateFailed) return 'Bearbeitete Nachricht erneut senden'; + return 'Erneut senden'; + } + + @override + String get photosLabel => 'Fotos'; + + String _getDay(DateTime dateTime) { + final now = DateTime.now(); + final today = DateTime(now.year, now.month, now.day); + final yesterday = DateTime(now.year, now.month, now.day - 1); + + final date = DateTime(dateTime.year, dateTime.month, dateTime.day); + + if (date == today) { + return 'Heute'; + } else if (date == yesterday) { + return 'Gestern'; + } else { + return 'am ${Jiffy(date).MMMd}'; + } + } + + @override + String sentAtText({required DateTime date, required DateTime time}) => + 'Gesendet ${_getDay(date)} am ${Jiffy(time.toLocal()).format('HH:mm')}'; + + @override + String get todayLabel => 'Heute'; + + @override + String get yesterdayLabel => 'Gestern'; + + @override + String get channelIsMutedText => 'Kanal ist stummgeschaltet'; + + @override + String get noTitleText => 'Kein Titel'; + + @override + String get letsStartChattingLabel => 'Lass uns anfangen zu chatten!'; + + @override + String get sendingFirstMessageLabel => + 'Wie wäre es, wenn Sie Ihre erste Nachricht an einen Freund senden würden?'; + + @override + String get startAChatLabel => 'Einen Chat beginnen'; + + @override + String get loadingChannelsError => 'Fehler beim Laden der Kanäle'; + + @override + String get deleteConversationLabel => 'Unterhaltung löschen'; + + @override + String get deleteConversationQuestion => + 'Sind Sie sicher, dass Sie diese Unterhaltung löschen wollen?'; + + @override + String get streamChatLabel => 'Stream Chat'; + + @override + String get searchingForNetworkText => 'Searching for Network'; + + @override + String get offlineLabel => 'Offline...'; + + @override + String get tryAgainLabel => 'Erneut versuchen'; + + @override + String membersCountText(int count) { + if (count == 1) return '1 Mitglied'; + return '$count Mitglieder'; + } + + @override + String watchersCountText(int count) { + if (count == 1) return '1 Online'; + return '$count Online'; + } + + @override + String get viewInfoLabel => 'Infos anzeigen'; + + @override + String get leaveGroupLabel => 'Gruppe verlassen'; + + @override + String get leaveLabel => 'VERLASSEN'; + + @override + String get leaveConversationLabel => 'Unterhaltung verlassen'; + + @override + String get leaveConversationQuestion => + 'Sind Sie sicher, dass Sie diese Unterhaltung verlassen wollen?'; + + @override + String get showInChatLabel => 'Im Chat anzeigen'; + + @override + String get saveImageLabel => 'Bild speichern'; + + @override + String get saveVideoLabel => 'Video speichern'; + + @override + String get uploadErrorLabel => 'UPLOAD-FEHLER'; + + @override + String get giphyLabel => 'Giphy'; + + @override + String get shuffleLabel => 'Mischen'; + + @override + String get sendLabel => 'Senden'; + + @override + String get withText => 'mit'; + + @override + String get inText => 'in'; + + @override + String get youText => 'Du'; + + @override + String galleryPaginationText({ + required int currentPage, + required int totalPages, + }) => + '${currentPage + 1} von $totalPages'; + + @override + String get fileText => 'Datei'; + + @override + String get replyToMessageLabel => 'Nachricht antworten'; + + @override + String attachmentLimitExceedError(int limit) => + 'Dateigröße überschritten, Grenze: $limit'; + + @override + String get slowModeOnLabel => 'Langsam-Modus EIN'; +} From 11b32fb5f957f41e38b0be5bb796a899144c4a73 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 4 May 2022 09:58:43 +0200 Subject: [PATCH 2/7] cleanup --- .../lib/src/stream_chat_localizations_de.dart | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart index b888c530..7faabbe2 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart @@ -1,7 +1,7 @@ part of 'stream_chat_localizations.dart'; /// The translations for German (`de`). -class StreamChatLocalizationsDE extends GlobalStreamChatLocalizations { +class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { /// Create an instance of the translation bundle for German. const StreamChatLocalizationsDe({String localeName = 'de'}) : super(localeName: localeName); @@ -122,7 +122,8 @@ class StreamChatLocalizationsDE extends GlobalStreamChatLocalizations { @override String fileTooLargeError(double limitInMB) => - 'Die Datei ist zu groß zum Hochladen. Die Dateigröße ist begrenzt auf $limitInMB MB.'; + 'Die Datei ist zu groß zum Hochladen. ' + 'Die Dateigröße ist begrenzt auf $limitInMB MB.'; @override String emojiMatchingQueryText(String query) => 'Emoji-Abgleich "$query"'; @@ -263,8 +264,8 @@ class StreamChatLocalizationsDE extends GlobalStreamChatLocalizations { String get letsStartChattingLabel => 'Lass uns anfangen zu chatten!'; @override - String get sendingFirstMessageLabel => - 'Wie wäre es, wenn Sie Ihre erste Nachricht an einen Freund senden würden?'; + String get sendingFirstMessageLabel => 'Wie wäre es, wenn Sie Ihre erste ' + 'Nachricht an einen Freund senden würden?'; @override String get startAChatLabel => 'Einen Chat beginnen'; @@ -368,4 +369,18 @@ class StreamChatLocalizationsDE extends GlobalStreamChatLocalizations { @override String get slowModeOnLabel => 'Langsam-Modus EIN'; + + @override + String get linkDisabledDetails => + 'Das Senden von Links ist in dieser Konversation nicht erlaubt.'; + + @override + String get linkDisabledError => 'Verknüpfungen sind deaktiviert'; + + @override + String get sendMessagePermissionError => + 'Sie sind nicht berechtigt, Nachrichten zu senden'; + + @override + String get viewLibrary => 'Bibliothek ansehen'; } From 1362c30dd09fed0876750b81b371052c25bc8a46 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 4 May 2022 10:00:30 +0200 Subject: [PATCH 3/7] chore(localizations): update changelog and readme --- packages/stream_chat_localizations/CHANGELOG.md | 4 ++++ packages/stream_chat_localizations/README.md | 1 + 2 files changed, 5 insertions(+) diff --git a/packages/stream_chat_localizations/CHANGELOG.md b/packages/stream_chat_localizations/CHANGELOG.md index a23bf1a1..4257cc88 100644 --- a/packages/stream_chat_localizations/CHANGELOG.md +++ b/packages/stream_chat_localizations/CHANGELOG.md @@ -1,3 +1,7 @@ +## Upcoming + +* Added support for [German](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart) locale. + ## 3.0.0 * Added translations for viewLibrary. diff --git a/packages/stream_chat_localizations/README.md b/packages/stream_chat_localizations/README.md index 34680d35..24805d6e 100644 --- a/packages/stream_chat_localizations/README.md +++ b/packages/stream_chat_localizations/README.md @@ -38,6 +38,7 @@ At the moment we support the following languages: - [Japanese](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart) - [Korean](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart) - [Portuguese](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart) +- [German](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart) More languages will be added in the future. Feel free to [contribute](https://github.com/GetStream/stream-chat-flutter/blob/master/CONTRIBUTING.md) to add more languages. From 3e1c7872978738a09e94f6289f84bcf54cf25ba4 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 4 May 2022 12:57:58 +0200 Subject: [PATCH 4/7] fix(ui): fix message widget thread indicator in reverse mode --- .../lib/src/message_widget.dart | 71 ++++++++----------- 1 file changed, 31 insertions(+), 40 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_widget.dart b/packages/stream_chat_flutter/lib/src/message_widget.dart index caf2722e..ae6e652c 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget.dart @@ -909,17 +909,6 @@ class _StreamMessageWidgetState extends State const usernameKey = Key('username'); children.addAll([ - if (showInChannel || showThreadReplyIndicator) ...[ - if (showThreadParticipants) - SizedBox.fromSize( - size: Size((threadParticipants!.length * 8.0) + 8, 16), - child: _buildThreadParticipantsIndicator(threadParticipants), - ), - InkWell( - onTap: widget.onThreadTap != null ? onThreadTap : null, - child: Text(msg, style: widget.messageTheme.repliesStyle), - ), - ], if (showUsername) _buildUsername(usernameKey), if (showTimeStamp) Text( @@ -932,26 +921,41 @@ class _StreamMessageWidgetState extends State final showThreadTail = !(hasUrlAttachments || isGiphy || isOnlyEmoji) && (showThreadReplyIndicator || showInChannel); + final threadIndicatorWidgets = [ + if (showThreadTail) + Container( + margin: EdgeInsets.only( + bottom: context.textScaleFactor * + ((widget.messageTheme.repliesStyle?.fontSize ?? 1) / 2), + ), + child: CustomPaint( + size: const Size(16, 32) * context.textScaleFactor, + painter: _ThreadReplyPainter( + context: context, + color: widget.messageTheme.messageBorderColor, + reverse: widget.reverse, + ), + ), + ), + if (showInChannel || showThreadReplyIndicator) ...[ + if (showThreadParticipants) + SizedBox.fromSize( + size: Size((threadParticipants!.length * 8.0) + 8, 16), + child: _buildThreadParticipantsIndicator(threadParticipants), + ), + InkWell( + onTap: widget.onThreadTap != null ? onThreadTap : null, + child: Text(msg, style: widget.messageTheme.repliesStyle), + ), + ], + ]; + return Row( crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: widget.reverse ? MainAxisAlignment.end : MainAxisAlignment.start, children: [ - if (showThreadTail && !widget.reverse) - Container( - margin: EdgeInsets.only( - bottom: context.textScaleFactor * - ((widget.messageTheme.repliesStyle?.fontSize ?? 1) / 2), - ), - child: CustomPaint( - size: const Size(16, 32) * context.textScaleFactor, - painter: _ThreadReplyPainter( - context: context, - color: widget.messageTheme.messageBorderColor, - reverse: widget.reverse, - ), - ), - ), + if (showThreadTail && !widget.reverse) ...threadIndicatorWidgets, ...children.map( (child) { Widget mappedChild = SizedBox( @@ -965,20 +969,7 @@ class _StreamMessageWidgetState extends State }, ), if (showThreadTail && widget.reverse) - Container( - margin: EdgeInsets.only( - bottom: context.textScaleFactor * - ((widget.messageTheme.repliesStyle?.fontSize ?? 1) / 2), - ), - child: CustomPaint( - size: const Size(16, 32) * context.textScaleFactor, - painter: _ThreadReplyPainter( - context: context, - color: widget.messageTheme.messageBorderColor, - reverse: widget.reverse, - ), - ), - ), + ...threadIndicatorWidgets.reversed, ].insertBetween(const SizedBox(width: 8)), ); } From 44972fdc3f7f66cfad0afa0246197d5d4294d179 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 4 May 2022 12:58:45 +0200 Subject: [PATCH 5/7] chore(ui): update changelog --- packages/stream_chat_flutter/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index dfa88d5f..5adf5c65 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -3,6 +3,7 @@ 🐞 Fixed - Fixed attachment picker ui. +- Fixed message widget thread indicator in reverse mode. ## 4.0.1 From 4944516c137da03cc0a6793211aed6e66c5842ba Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 5 May 2022 09:57:28 +0200 Subject: [PATCH 6/7] fix(localization): fix tests --- .../stream_chat_localizations/test/override_test.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat_localizations/test/override_test.dart b/packages/stream_chat_localizations/test/override_test.dart index a30bb09a..6b775de1 100644 --- a/packages/stream_chat_localizations/test/override_test.dart +++ b/packages/stream_chat_localizations/test/override_test.dart @@ -173,8 +173,8 @@ void main() { launchUrlError: "Impossible de lancer l'url", ), const FooStreamChatLocalizationsDelegate( - supportedLanguage: 'de', - launchUrlError: 'Kann die URL nicht starten', + supportedLanguage: 'uz', + launchUrlError: 'test', ), ], supportedLocales: const [ @@ -182,6 +182,7 @@ void main() { Locale('hi'), Locale('fr'), Locale('de'), + Locale('uz'), ], buildContent: (BuildContext context) => Text( StreamChatLocalizations.of(context)!.launchUrlError, @@ -202,9 +203,9 @@ void main() { await tester.pump(); expect(find.text("Impossible de lancer l'url"), findsOneWidget); - await tester.binding.setLocale('de', 'DE'); + await tester.binding.setLocale('uz', 'UZ'); await tester.pump(); - expect(find.text('Kann die URL nicht starten'), findsOneWidget); + expect(find.text('test'), findsOneWidget); }, ); From fcdd62ffb22433c5c814e50d750a58570a61dbcb Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 5 May 2022 10:12:48 +0200 Subject: [PATCH 7/7] Apply suggestions from code review Co-authored-by: Stefan Blos --- .../lib/src/stream_chat_localizations_de.dart | 47 +++++++++---------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart index 7faabbe2..35b283ec 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_de.dart @@ -7,16 +7,16 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { : super(localeName: localeName); @override - String get launchUrlError => 'Kann die Url nicht geöffnet werden'; + String get launchUrlError => 'Die Url kann nicht geöffnet werden'; @override - String get loadingUsersError => 'Fehler beim Laden von Benutzern'; + String get loadingUsersError => 'Fehler beim Laden von Usern'; @override - String get noUsersLabel => 'Derzeit gibt es keine Benutzer'; + String get noUsersLabel => 'Derzeit gibt es keine User'; @override - String get retryLabel => 'Wiederholen'; + String get retryLabel => 'Erneut versuchen'; @override String get userLastOnlineText => 'Zuletzt online'; @@ -31,17 +31,17 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { if (users.length == 1) { return '${first.name} tippt'; } - return '${first.name} und ${users.length - 1} mehr tippen'; + return '${first.name} und ${users.length - 1} weitere tippen'; } @override - String get threadReplyLabel => 'Thread Antwort'; + String get threadReplyLabel => 'Thread-Antwort'; @override String get onlyVisibleToYouText => 'Nur für dich sichtbar'; @override - String threadReplyCountText(int count) => '$count Thread Antworten'; + String threadReplyCountText(int count) => '$count Thread-Antworten'; @override String attachmentsUploadProgressText({ @@ -79,10 +79,10 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { String get messageDeletedLabel => 'Nachricht gelöscht'; @override - String get messageReactionsLabel => 'Nachricht Reaktionen'; + String get messageReactionsLabel => 'Nachricht-Reaktionen'; @override - String get emptyChatMessagesText => 'Noch keine Unterhaltung hier...'; + String get emptyChatMessagesText => 'Noch keine Nachrichten hier...'; @override String threadSeparatorText(int replyCount) { @@ -97,22 +97,22 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { String get disconnectedLabel => 'Getrennt'; @override - String get reconnectingLabel => 'Wiederherstellung der Verbindung...'; + String get reconnectingLabel => 'Verbindung wird wiederhergestellt...'; @override String get alsoSendAsDirectMessageLabel => 'Auch als Direktnachricht senden'; @override - String get addACommentOrSendLabel => 'Einen Kommentar hinzufügen oder senden'; + String get addACommentOrSendLabel => 'Kommentar hinzufügen oder senden'; @override String get searchGifLabel => 'GIFs suchen'; @override - String get writeAMessageLabel => 'Eine Nachricht schreiben'; + String get writeAMessageLabel => 'Nachricht schreiben'; @override - String get instantCommandsLabel => 'Sofortige Befehle'; + String get instantCommandsLabel => 'Sofort-Befehle'; @override String fileTooLargeAfterCompressionError(double limitInMB) => @@ -129,19 +129,19 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { String emojiMatchingQueryText(String query) => 'Emoji-Abgleich "$query"'; @override - String get addAFileLabel => 'Eine Datei hinzufügen'; + String get addAFileLabel => 'Datei hinzufügen'; @override String get photoFromCameraLabel => 'Foto von der Kamera'; @override - String get uploadAFileLabel => 'Eine Datei hochladen'; + String get uploadAFileLabel => 'Datei hochladen'; @override - String get uploadAPhotoLabel => 'Ein Foto hochladen'; + String get uploadAPhotoLabel => 'Foto hochladen'; @override - String get uploadAVideoLabel => 'Ein Video hochladen'; + String get uploadAVideoLabel => 'Video hochladen'; @override String get videoFromCameraLabel => 'Video von der Kamera'; @@ -164,7 +164,7 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { String get allowGalleryAccessMessage => 'Zugang zu Ihrer Galerie gewähren'; @override - String get flagMessageLabel => 'Markierte-Nachricht'; + String get flagMessageLabel => 'Markierte Nachricht'; @override String get flagMessageQuestion => @@ -209,7 +209,7 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { @override String toggleDeleteRetryDeleteMessageText({required bool isDeleteFailed}) { - if (isDeleteFailed) return 'Wiederholen Löschen der Nachricht'; + if (isDeleteFailed) return 'Löschen der Nachricht wiederholen'; return 'Nachricht löschen'; } @@ -268,7 +268,7 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { 'Nachricht an einen Freund senden würden?'; @override - String get startAChatLabel => 'Einen Chat beginnen'; + String get startAChatLabel => 'Chat beginnen'; @override String get loadingChannelsError => 'Fehler beim Laden der Kanäle'; @@ -300,7 +300,6 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { @override String watchersCountText(int count) { - if (count == 1) return '1 Online'; return '$count Online'; } @@ -361,14 +360,14 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { String get fileText => 'Datei'; @override - String get replyToMessageLabel => 'Nachricht antworten'; + String get replyToMessageLabel => 'Auf Nachricht antworten'; @override String attachmentLimitExceedError(int limit) => 'Dateigröße überschritten, Grenze: $limit'; @override - String get slowModeOnLabel => 'Langsam-Modus EIN'; + String get slowModeOnLabel => 'Langsamer Modus: EIN'; @override String get linkDisabledDetails => @@ -379,7 +378,7 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations { @override String get sendMessagePermissionError => - 'Sie sind nicht berechtigt, Nachrichten zu senden'; + 'Sie sind nicht berechtigt Nachrichten zu senden'; @override String get viewLibrary => 'Bibliothek ansehen';