From 2a61dd0515d71d3798285c30f529ac80ece80d25 Mon Sep 17 00:00:00 2001 From: Markus Koehne Date: Wed, 4 May 2022 02:01:45 +0200 Subject: [PATCH] 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'; +}