Merge branch 'develop' of https://github.com/GetStream/stream-chat-flutter into feat/disable_mentions_overlay_message_input
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
🐞 Fixed
|
🐞 Fixed
|
||||||
|
|
||||||
- Fixed attachment picker ui.
|
- Fixed attachment picker ui.
|
||||||
|
- Fixed message widget thread indicator in reverse mode.
|
||||||
|
|
||||||
## 4.0.1
|
## 4.0.1
|
||||||
|
|
||||||
|
|||||||
@@ -909,17 +909,6 @@ class _StreamMessageWidgetState extends State<StreamMessageWidget>
|
|||||||
const usernameKey = Key('username');
|
const usernameKey = Key('username');
|
||||||
|
|
||||||
children.addAll([
|
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 (showUsername) _buildUsername(usernameKey),
|
||||||
if (showTimeStamp)
|
if (showTimeStamp)
|
||||||
Text(
|
Text(
|
||||||
@@ -932,26 +921,41 @@ class _StreamMessageWidgetState extends State<StreamMessageWidget>
|
|||||||
final showThreadTail = !(hasUrlAttachments || isGiphy || isOnlyEmoji) &&
|
final showThreadTail = !(hasUrlAttachments || isGiphy || isOnlyEmoji) &&
|
||||||
(showThreadReplyIndicator || showInChannel);
|
(showThreadReplyIndicator || showInChannel);
|
||||||
|
|
||||||
|
final threadIndicatorWidgets = <Widget>[
|
||||||
|
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(
|
return Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.end,
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
mainAxisAlignment:
|
mainAxisAlignment:
|
||||||
widget.reverse ? MainAxisAlignment.end : MainAxisAlignment.start,
|
widget.reverse ? MainAxisAlignment.end : MainAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
if (showThreadTail && !widget.reverse)
|
if (showThreadTail && !widget.reverse) ...threadIndicatorWidgets,
|
||||||
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,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
...children.map(
|
...children.map(
|
||||||
(child) {
|
(child) {
|
||||||
Widget mappedChild = SizedBox(
|
Widget mappedChild = SizedBox(
|
||||||
@@ -965,20 +969,7 @@ class _StreamMessageWidgetState extends State<StreamMessageWidget>
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
if (showThreadTail && widget.reverse)
|
if (showThreadTail && widget.reverse)
|
||||||
Container(
|
...threadIndicatorWidgets.reversed,
|
||||||
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,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
].insertBetween(const SizedBox(width: 8)),
|
].insertBetween(const SizedBox(width: 8)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
## 3.0.0
|
||||||
|
|
||||||
* Added translations for viewLibrary.
|
* Added translations for viewLibrary.
|
||||||
|
|||||||
@@ -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)
|
- [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)
|
- [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)
|
- [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.
|
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.
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ part 'stream_chat_localizations_hi.dart';
|
|||||||
|
|
||||||
part 'stream_chat_localizations_pt.dart';
|
part 'stream_chat_localizations_pt.dart';
|
||||||
|
|
||||||
|
part 'stream_chat_localizations_de.dart';
|
||||||
|
|
||||||
/// The set of supported languages, as language code strings.
|
/// The set of supported languages, as language code strings.
|
||||||
///
|
///
|
||||||
/// The [GlobalStreamChatLocalizations.delegate] can generate localizations for
|
/// The [GlobalStreamChatLocalizations.delegate] can generate localizations for
|
||||||
@@ -36,6 +38,7 @@ const kStreamChatSupportedLanguages = {
|
|||||||
'ja',
|
'ja',
|
||||||
'ko',
|
'ko',
|
||||||
'pt',
|
'pt',
|
||||||
|
'de',
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Creates a [GlobalStreamChatLocalizations] instance for the given `locale`.
|
/// Creates a [GlobalStreamChatLocalizations] instance for the given `locale`.
|
||||||
@@ -74,6 +77,8 @@ GlobalStreamChatLocalizations? getStreamChatTranslation(Locale locale) {
|
|||||||
return const StreamChatLocalizationsKo();
|
return const StreamChatLocalizationsKo();
|
||||||
case 'pt':
|
case 'pt':
|
||||||
return const StreamChatLocalizationsPt();
|
return const StreamChatLocalizationsPt();
|
||||||
|
case 'de':
|
||||||
|
return const StreamChatLocalizationsDe();
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,385 @@
|
|||||||
|
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 => 'Die Url kann nicht geöffnet werden';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get loadingUsersError => 'Fehler beim Laden von Usern';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get noUsersLabel => 'Derzeit gibt es keine User';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get retryLabel => 'Erneut versuchen';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get userLastOnlineText => 'Zuletzt online';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get userOnlineText => 'Online';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String userTypingText(Iterable<User> users) {
|
||||||
|
if (users.isEmpty) return '';
|
||||||
|
final first = users.first;
|
||||||
|
if (users.length == 1) {
|
||||||
|
return '${first.name} tippt';
|
||||||
|
}
|
||||||
|
return '${first.name} und ${users.length - 1} weitere 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 Nachrichten 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 => 'Verbindung wird wiederhergestellt...';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get alsoSendAsDirectMessageLabel => 'Auch als Direktnachricht senden';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get addACommentOrSendLabel => 'Kommentar hinzufügen oder senden';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get searchGifLabel => 'GIFs suchen';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get writeAMessageLabel => 'Nachricht schreiben';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get instantCommandsLabel => 'Sofort-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 => 'Datei hinzufügen';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get photoFromCameraLabel => 'Foto von der Kamera';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get uploadAFileLabel => 'Datei hochladen';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get uploadAPhotoLabel => 'Foto hochladen';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get uploadAVideoLabel => '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 'Löschen der Nachricht wiederholen';
|
||||||
|
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 => '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) {
|
||||||
|
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 => 'Auf Nachricht antworten';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String attachmentLimitExceedError(int limit) =>
|
||||||
|
'Dateigröße überschritten, Grenze: $limit';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get slowModeOnLabel => 'Langsamer 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';
|
||||||
|
}
|
||||||
@@ -173,8 +173,8 @@ void main() {
|
|||||||
launchUrlError: "Impossible de lancer l'url",
|
launchUrlError: "Impossible de lancer l'url",
|
||||||
),
|
),
|
||||||
const FooStreamChatLocalizationsDelegate(
|
const FooStreamChatLocalizationsDelegate(
|
||||||
supportedLanguage: 'de',
|
supportedLanguage: 'uz',
|
||||||
launchUrlError: 'Kann die URL nicht starten',
|
launchUrlError: 'test',
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
supportedLocales: const <Locale>[
|
supportedLocales: const <Locale>[
|
||||||
@@ -182,6 +182,7 @@ void main() {
|
|||||||
Locale('hi'),
|
Locale('hi'),
|
||||||
Locale('fr'),
|
Locale('fr'),
|
||||||
Locale('de'),
|
Locale('de'),
|
||||||
|
Locale('uz'),
|
||||||
],
|
],
|
||||||
buildContent: (BuildContext context) => Text(
|
buildContent: (BuildContext context) => Text(
|
||||||
StreamChatLocalizations.of(context)!.launchUrlError,
|
StreamChatLocalizations.of(context)!.launchUrlError,
|
||||||
@@ -202,9 +203,9 @@ void main() {
|
|||||||
await tester.pump();
|
await tester.pump();
|
||||||
expect(find.text("Impossible de lancer l'url"), findsOneWidget);
|
expect(find.text("Impossible de lancer l'url"), findsOneWidget);
|
||||||
|
|
||||||
await tester.binding.setLocale('de', 'DE');
|
await tester.binding.setLocale('uz', 'UZ');
|
||||||
await tester.pump();
|
await tester.pump();
|
||||||
expect(find.text('Kann die URL nicht starten'), findsOneWidget);
|
expect(find.text('test'), findsOneWidget);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user