diff --git a/packages/stream_chat_flutter/example/lib/main.dart b/packages/stream_chat_flutter/example/lib/main.dart index f7609f6b..b340ac28 100644 --- a/packages/stream_chat_flutter/example/lib/main.dart +++ b/packages/stream_chat_flutter/example/lib/main.dart @@ -70,7 +70,12 @@ class MyApp extends StatelessWidget { Widget build(BuildContext context) => MaterialApp( theme: ThemeData.light(), darkTheme: ThemeData.dark(), - supportedLocales: const [Locale('en'), Locale('hi')], + supportedLocales: const [ + Locale('en'), + Locale('hi'), + Locale('fr'), + Locale('it'), + ], localizationsDelegates: GlobalStreamChatLocalizations.delegates, builder: (context, widget) => StreamChat( client: client, diff --git a/packages/stream_chat_flutter/lib/src/localization/translations.dart b/packages/stream_chat_flutter/lib/src/localization/translations.dart index 7ce7a507..6a7ac657 100644 --- a/packages/stream_chat_flutter/lib/src/localization/translations.dart +++ b/packages/stream_chat_flutter/lib/src/localization/translations.dart @@ -67,9 +67,9 @@ abstract class Translations { String get instantCommandsLabel; - String get fileTooLargeAfterCompressionError; + String fileTooLargeAfterCompressionError(double limitInMB); - String get fileTooLargeError; + String fileTooLargeError(double limitInMB); String emojiMatchingQueryText(String query); @@ -314,14 +314,14 @@ class DefaultTranslations implements Translations { String get instantCommandsLabel => 'Instant Commands'; @override - String get fileTooLargeAfterCompressionError => + String fileTooLargeAfterCompressionError(double limitInMB) => 'The file is too large to upload. ' - 'The file size limit is 20MB. ' + 'The file size limit is $limitInMB MB. ' 'We tried compressing it, but it was not enough.'; @override - String get fileTooLargeError => - 'The file is too large to upload. The file size limit is 20MB.'; + String fileTooLargeError(double limitInMB) => + 'The file is too large to upload. The file size limit is $limitInMB MB.'; @override String emojiMatchingQueryText(String query) => 'Emoji matching "$query"'; diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 9d9ada07..7843e77e 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -1144,7 +1144,9 @@ class MessageInputState extends State { if (mediaInfo.filesize! > widget.maxAttachmentSize) { _showErrorAlert( - context.translations.fileTooLargeAfterCompressionError, + context.translations.fileTooLargeAfterCompressionError( + widget.maxAttachmentSize / (1024 * 1024), + ), ); return; } @@ -1155,7 +1157,9 @@ class MessageInputState extends State { path: mediaInfo.path, ); } else { - _showErrorAlert(context.translations.fileTooLargeError); + _showErrorAlert(context.translations.fileTooLargeError( + widget.maxAttachmentSize / (1024 * 1024), + )); return; } } @@ -1922,7 +1926,9 @@ class MessageInputState extends State { if (mediaInfo.filesize! > widget.maxAttachmentSize) { _showErrorAlert( - context.translations.fileTooLargeAfterCompressionError, + context.translations.fileTooLargeAfterCompressionError( + widget.maxAttachmentSize / (1024 * 1024), + ), ); return; } @@ -1933,7 +1939,9 @@ class MessageInputState extends State { path: mediaInfo.path, ); } else { - _showErrorAlert(context.translations.fileTooLargeError); + _showErrorAlert(context.translations.fileTooLargeError( + widget.maxAttachmentSize / (1024 * 1024), + )); return; } } 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 82662134..d0b1f6dc 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations.dart @@ -6,7 +6,8 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart' show StreamChatLocalizations, User; part 'stream_chat_localizations_en.dart'; - +part 'stream_chat_localizations_fr.dart'; +part 'stream_chat_localizations_it.dart'; part 'stream_chat_localizations_hi.dart'; /// The set of supported languages, as language code strings. @@ -17,7 +18,12 @@ part 'stream_chat_localizations_hi.dart'; /// See also: /// /// * [getStreamChatTranslation], whose documentation describes these values. -const kStreamChatSupportedLanguages = {'en', 'hi'}; +const kStreamChatSupportedLanguages = { + 'en', + 'hi', + 'fr', + 'it', +}; /// Creates a [GlobalStreamChatLocalizations] instance for the given `locale`. /// @@ -43,6 +49,10 @@ GlobalStreamChatLocalizations? getStreamChatTranslation(Locale locale) { return const StreamChatLocalizationsEn(); case 'hi': return const StreamChatLocalizationsHi(); + case 'fr': + return const StreamChatLocalizationsFr(); + case 'it': + return const StreamChatLocalizationsIt(); } } diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart index 2cd88989..ba515e2f 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart @@ -115,14 +115,14 @@ class StreamChatLocalizationsEn extends GlobalStreamChatLocalizations { String get instantCommandsLabel => 'Instant Commands'; @override - String get fileTooLargeAfterCompressionError => + String fileTooLargeAfterCompressionError(double limitInMB) => 'The file is too large to upload. ' - 'The file size limit is 20MB. ' + 'The file size limit is $limitInMB MB. ' 'We tried compressing it, but it was not enough.'; @override - String get fileTooLargeError => - 'The file is too large to upload. The file size limit is 20MB.'; + String fileTooLargeError(double limitInMB) => + 'The file is too large to upload. The file size limit is $limitInMB MB.'; @override String emojiMatchingQueryText(String query) => 'Emoji matching "$query"'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart new file mode 100644 index 00000000..297fbc1a --- /dev/null +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart @@ -0,0 +1,360 @@ +part of 'stream_chat_localizations.dart'; + +/// The translations for English (`fr`). +class StreamChatLocalizationsFr extends GlobalStreamChatLocalizations { + /// Create an instance of the translation bundle for French. + const StreamChatLocalizationsFr({String localeName = 'fr'}) + : super(localeName: localeName); + + @override + String get launchUrlError => "Impossible de lancer l'url"; + + @override + String get loadingUsersError => 'Erreur de chargement des utilisateurs'; + + @override + String get noUsersLabel => "Il n'y a pas d'utilisateurs actuellement"; + + @override + String get retryLabel => 'Réessayer'; + + @override + String get userLastOnlineText => 'Dernière fois en ligne'; + + @override + String get userOnlineText => 'En ligne'; + + @override + String userTypingText(Iterable users) { + if (users.isEmpty) return ''; + final first = users.first; + if (users.length == 1) { + return "${first.name} est en train d'écrire"; + } + return "${first.name} and ${users.length - 1} sont entrain d'écrire"; + } + + @override + String get threadReplyLabel => 'Réponse au fil de discussion'; + + @override + String get onlyVisibleToYouText => 'Seulement visible par vous'; + + @override + String threadReplyCountText(int count) => + "$count Réponses au fil de discussion"; + + @override + String attachmentsUploadProgressText({ + required int remaining, + required int total, + }) => + 'Uploading $remaining/$total ...'; + + @override + String pinnedByUserText({ + required User pinnedBy, + required User currentUser, + }) { + final pinnedByCurrentUser = currentUser.id == pinnedBy.id; + if (pinnedByCurrentUser) return 'Épinglé par vous'; + return 'Épinglé par ${pinnedBy.name}'; + } + + @override + String get emptyMessagesText => "Il n'y a pas de messages actuellement"; + + @override + String get genericErrorText => 'Il y a eu un problème'; + + @override + String get loadingMessagesError => 'Erreur de chargement des messages'; + + @override + String resultCountText(int count) => '$count résultats'; + + @override + String get messageDeletedText => 'Ce message a été supprimé.'; + + @override + String get messageDeletedLabel => 'Message supprimé'; + + @override + String get messageReactionsText => 'Réactions aux messages'; + + @override + String get emptyChatMessagesText => 'Pas encore de chats ici...'; + + @override + String threadSeparatorText(int replyCount) { + if (replyCount == 1) return '1 Réponse'; + return '$replyCount Replies'; + } + + @override + String get connectedLabel => 'Connecté'; + + @override + String get disconnectedLabel => 'Déconnecté'; + + @override + String get reconnectingLabel => 'Reconnexion...'; + + @override + String get alsoSendAsDirectMessageLabel => + 'Envoyer aussi comme message direct'; + + @override + String get addACommentOrSendLabel => 'Ajouter un commentaire ou envoyer'; + + @override + String get searchGifLabel => 'Recherche de GIFs'; + + @override + String get writeAMessageLabel => 'Écrire un message'; + + @override + String get instantCommandsLabel => 'Commandes instantanées'; + + @override + String fileTooLargeAfterCompressionError(double limitInMB) => + 'Le fichier est trop volumineux pour être téléchargé. ' + 'La taille maximale des fichiers est de $limitInMB Mo. ' + "Nous avons essayé de le compresser, mais ce n'était pas suffisant."; + + @override + String fileTooLargeError(double limitInMB) => + 'Le fichier est trop volumineux pour être téléchargé. La taille limite du fichier est de $limitInMB Mo.'; + + @override + String emojiMatchingQueryText(String query) => + 'Emoji qui correspond à "$query"'; + + @override + String get addAFileLabel => 'Ajouter un fichier'; + + @override + String get photoFromCameraLabel => "Photo de l'appareil photo"; + + @override + String get uploadAFileLabel => 'Transférer un fichier'; + + @override + String get uploadAPhotoLabel => 'Transférer une photo'; + + @override + String get uploadAVideoLabel => 'Transférer une vidéo'; + + @override + String get videoFromCameraLabel => 'Vidéo depuis la camera'; + + @override + String get okLabel => 'OK'; + + @override + String get somethingWentWrongLabel => 'Quelque chose a mal tourné'; + + @override + String get addMoreFilesLabel => "Ajouter d'autres fichiers"; + + @override + String get enablePhotoAndVideoAccessMessage => + "Veuillez autoriser l'accès à vos photos" + '\net vidéos afin de pouvoir les partager avec vos amis.'; + + @override + String get allowGalleryAccessMessage => "Autoriser l'accès à votre galerie"; + + @override + String get flagMessageLabel => 'Signaler un message'; + + @override + String get flagMessageQuestion => + 'Voulez-vous envoyer une copie de ce message à un' + '\nmodérateur pour une enquête plus approfondie ?'; + + @override + String get flagLabel => 'SIGNALER'; + + @override + String get cancelLabel => 'ANNULER'; + + @override + String get flagMessageSuccessfulLabel => 'Message signalé'; + + @override + String get flagMessageSuccessfulText => + 'Ce message a été signalé à un modérateur.'; + + @override + String get deleteLabel => 'SUPPRIMER'; + + @override + String get deleteMessageLabel => 'Supprimer le message'; + + @override + String get deleteMessageQuestion => + 'Êtes-vous sûr de vouloir supprimer définitivement ce\nmessage ?'; + + @override + String get operationCouldNotBeCompletedText => + "L'opération n'a pas pu être terminée."; + + @override + String get replyLabel => 'Répondre'; + + @override + String togglePinUnpinText({required bool pinned}) { + if (pinned) return 'Détacher de la conversation'; + return 'Attacher à la conversation'; + } + + @override + String toggleDeleteRetryDeleteMessageText({required bool isDeleteFailed}) { + if (isDeleteFailed) return 'Retenter de supprimer le message'; + return 'Supprimer le message'; + } + + @override + String get copyMessageLabel => 'Copier le message'; + + @override + String get editMessageLabel => 'Modifier le message'; + + @override + String toggleResendOrResendEditedMessage({required bool isUpdateFailed}) { + if (isUpdateFailed) return 'Renvoyer le message modifié'; + return 'Renvoyer'; + } + + @override + String get photosLabel => 'Photos'; + + String _getDay(DateTime dateTime) { + final now = Jiffy(DateTime.now()); + final date = Jiffy(dateTime); + + if (date.isSame(now, Units.DAY)) { + return "aujourd'hui"; + } else if (now.diff(date, Units.HOUR) < 24) { + return 'hier'; + } else { + return 'le ${date.MMMd}'; + } + } + + @override + String sentAtText({required DateTime date, required DateTime time}) => + 'Envoyé ${_getDay(date)} à ${Jiffy(time.toLocal()).format('HH:mm')}'; + + @override + String get todayLabel => "Aujourd'hui"; + + @override + String get yesterdayLabel => 'Hier'; + + @override + String get channelIsMutedText => 'Le canal est coupé'; + + @override + String get noTitleText => 'Aucun titre'; + + @override + String get letsStartChattingLabel => 'Commençons à discuter !'; + + @override + String get sendingFirstMessageLabel => + "Que diriez-vous d'envoyer votre premier message à un ami ?"; + + @override + String get startAChatLabel => 'Commencer une discussion'; + + @override + String get loadingChannelsError => 'Erreur lors du chargement des canaux'; + + @override + String get deleteConversationLabel => 'Supprimer la conversation'; + + @override + String get deleteConversationQuestion => + 'Vous êtes sûr de vouloir supprimer cette conversation ?'; + + @override + String get streamChatLabel => 'Stream Chat'; + + @override + String get searchingForNetworkLabel => 'Recherche de réseau'; + + @override + String get offlineLabel => 'Hors ligne...'; + + @override + String get tryAgainLabel => 'Essayer à nouveau'; + + @override + String membersCountText(int count) { + if (count == 1) return '1 Membre'; + return '$count Membres'; + } + + @override + String watchersCountText(int count) { + if (count == 1) return '1 En ligne'; + return '$count En ligne'; + } + + @override + String get viewInfoLabel => 'Voir les informations'; + + @override + String get leaveGroupLabel => 'Quitter le Group'; + + @override + String get leaveLabel => 'QUITTER'; + + @override + String get leaveConversationLabel => 'Quitter la conversation'; + + @override + String get leaveConversationQuestion => + 'Etes-vous sûr de vouloir quitter cette conversation ?'; + + @override + String get showInChatLabel => 'Montrer dans le Chat'; + + @override + String get saveImageLabel => "Sauvegarder l'image"; + + @override + String get saveVideoLabel => 'Sauvegarder la vidéo'; + + @override + String get uploadErrorLabel => 'ERREUR DE TRANSFERT'; + + @override + String get giphyLabel => 'Giphy'; + + @override + String get shuffleLabel => 'Mélanger'; + + @override + String get sendLabel => 'Envoyer'; + + @override + String get withText => 'avec'; + + @override + String get inText => 'dans'; + + @override + String get youText => 'Vous'; + + @override + String get ofText => 'de'; + + @override + String get fileText => 'Fichier'; + + @override + String get replyToMessageLabel => 'Répondre au Message'; +} diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart index c4c4a33a..c6e94e32 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart @@ -1,6 +1,6 @@ part of 'stream_chat_localizations.dart'; -/// The translations for English (`hi`). +/// The translations for Hindi (`hi`). class StreamChatLocalizationsHi extends GlobalStreamChatLocalizations { /// Create an instance of the translation bundle for Hindi. const StreamChatLocalizationsHi({String localeName = 'hi'}) @@ -115,14 +115,14 @@ class StreamChatLocalizationsHi extends GlobalStreamChatLocalizations { String get instantCommandsLabel => 'तत्काल आदेश'; @override - String get fileTooLargeAfterCompressionError => + String fileTooLargeAfterCompressionError(double limitInMB) => 'फ़ाइल अपलोड करने के लिए बहुत बड़ी है। ' - 'फ़ाइल आकार सीमा 20MB है। ' + 'फ़ाइल आकार सीमा $limitInMB MB है। ' 'हमने इसे कंप्रेस करने की कोशिश की, लेकिन यह काफी नहीं था।'; @override - String get fileTooLargeError => - 'फ़ाइल अपलोड करने के लिए बहुत बड़ी है। फ़ाइल आकार सीमा 20MB है।'; + String fileTooLargeError(double limitInMB) => + 'फ़ाइल अपलोड करने के लिए बहुत बड़ी है। फ़ाइल आकार सीमा $limitInMB MB है।'; @override String emojiMatchingQueryText(String query) => '"$query" से मिलते हुए इमोजी'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart new file mode 100644 index 00000000..8797de27 --- /dev/null +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart @@ -0,0 +1,358 @@ +part of 'stream_chat_localizations.dart'; + +/// The translations for English (`hi`). +class StreamChatLocalizationsIt extends GlobalStreamChatLocalizations { + /// Create an instance of the translation bundle for Hindi. + const StreamChatLocalizationsIt({String localeName = 'it'}) + : super(localeName: localeName); + + @override + String get launchUrlError => 'Impossibile aprire l\'url'; + + @override + String get loadingUsersError => 'Errore durante il carimento degli utenti'; + + @override + String get noUsersLabel => 'Non c\'é nessun utente al momento'; + + @override + String get retryLabel => 'Riprova'; + + @override + String get userLastOnlineText => 'Ultimo accesso'; + + @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} sta scrivendo'; + } + return '${first.name} e altri ${users.length - 1} stanno scrivendo'; + } + + @override + String get threadReplyLabel => 'Rispondi nel thread'; + + @override + String get onlyVisibleToYouText => 'Visible solo a te'; + + @override + String threadReplyCountText(int count) => '$count risposte al thread'; + + @override + String attachmentsUploadProgressText({ + required int remaining, + required int total, + }) => + 'Caricamento $remaining/$total ...'; + + @override + String pinnedByUserText({ + required User pinnedBy, + required User currentUser, + }) { + final pinnedByCurrentUser = currentUser.id == pinnedBy.id; + if (pinnedByCurrentUser) return 'Messo in evidenza da te'; + return 'Messo in evidenza da ${pinnedBy.name}'; + } + + @override + String get emptyMessagesText => 'Non c\'é nessun messaggio al momento'; + + @override + String get genericErrorText => 'Qualcosa è andato storto'; + + @override + String get loadingMessagesError => + 'Errore durante il caricamento dei messaggi'; + + @override + String resultCountText(int count) => '$count risultati'; + + @override + String get messageDeletedText => 'Questo messaggio è stato eliminato'; + + @override + String get messageDeletedLabel => 'Messaggio cancellato'; + + @override + String get messageReactionsText => 'Reazioni al messaggio'; + + @override + String get emptyChatMessagesText => 'Nessuna conversazione al momento...'; + + @override + String threadSeparatorText(int replyCount) { + if (replyCount == 1) return '1 risposta'; + return '$replyCount risposte'; + } + + @override + String get connectedLabel => 'Connesso'; + + @override + String get disconnectedLabel => 'Disconnesso'; + + @override + String get reconnectingLabel => 'Riconnessione in corso...'; + + @override + String get alsoSendAsDirectMessageLabel => + 'Manda anche come messaggio diretto'; + + @override + String get addACommentOrSendLabel => 'Aggiungi un commento o invia'; + + @override + String get searchGifLabel => 'Cerca una GIF'; + + @override + String get writeAMessageLabel => 'Scrivi un messaggio'; + + @override + String get instantCommandsLabel => 'Commandi istantanei'; + + @override + String fileTooLargeAfterCompressionError(double limitInMB) => + 'Il file è troppo grande per essere caricato. ' + 'Il file eccede il limite di $limitInMB MB. ' + 'Abbiamo provato a comprimerlo, ma non è stato abbastanza.'; + + @override + String fileTooLargeError(double limitInMB) => ''' +Il file è troppo grande per essere caricato. Il limite è di $limitInMB MB.'''; + + @override + String emojiMatchingQueryText(String query) => 'Emoji per "$query"'; + + @override + String get addAFileLabel => 'Aggiungi un file'; + + @override + String get photoFromCameraLabel => 'Immagine dalla fotocamera'; + + @override + String get uploadAFileLabel => 'Carica un file'; + + @override + String get uploadAPhotoLabel => 'Carica una foto'; + + @override + String get uploadAVideoLabel => 'Carica un video'; + + @override + String get videoFromCameraLabel => 'Video dalla fotocamera'; + + @override + String get okLabel => 'Ok'; + + @override + String get somethingWentWrongLabel => 'Qualcosa è andato storto'; + + @override + String get addMoreFilesLabel => 'Aggiungi altri file'; + + @override + String get enablePhotoAndVideoAccessMessage => + 'Per favore attiva l\'accesso alle foto' + '\ne ai video cosí potrai condividerli con i tuoi amici.'; + + @override + String get allowGalleryAccessMessage => 'Permetti l\'accesso alla galleria'; + + @override + String get flagMessageLabel => 'Segnala messaggio'; + + @override + String get flagMessageQuestion => 'Vuoi mandare una copia di questo messaggio' + '\nad un moderatore?'; + + @override + String get flagLabel => 'SEGNALA'; + + @override + String get cancelLabel => 'ANNULLA'; + + @override + String get flagMessageSuccessfulLabel => 'Messaggio segnalato'; + + @override + String get flagMessageSuccessfulText => + 'Questo messaggio è stato segnalato ad un moderatore.'; + + @override + String get deleteLabel => 'CANCELLA'; + + @override + String get deleteMessageLabel => 'Cancella messaggio'; + + @override + String get deleteMessageQuestion => + 'Sei sicuro di voler definitivamente cancellare questo\nmessaggio?'; + + @override + String get operationCouldNotBeCompletedText => + 'Non è stato possibile completare questa operazione.'; + + @override + String get replyLabel => 'Rispondi'; + + @override + String togglePinUnpinText({required bool pinned}) { + if (pinned) return 'Rimuovi dagli elementi in evidenza'; + return 'Metti in evidenza'; + } + + @override + String toggleDeleteRetryDeleteMessageText({required bool isDeleteFailed}) { + if (isDeleteFailed) return 'Riprova a cancellare il messaggio'; + return 'Cancella il messaggio'; + } + + @override + String get copyMessageLabel => 'Copia messaggio'; + + @override + String get editMessageLabel => 'Modifica messaggio'; + + @override + String toggleResendOrResendEditedMessage({required bool isUpdateFailed}) { + if (isUpdateFailed) return 'Riprova modifica messaggio'; + return 'Riprova'; + } + + @override + String get photosLabel => 'Foto'; + + String _getDay(DateTime dateTime) { + final now = Jiffy(DateTime.now()); + final date = Jiffy(dateTime); + + if (date.isSame(now, Units.DAY)) { + return 'oggi'; + } else if (now.diff(date, Units.HOUR) < 24) { + return 'ieri'; + } else { + return 'il ${date.MMMd}'; + } + } + + @override + String sentAtText({required DateTime date, required DateTime time}) => ''' +Inviato il ${_getDay(date)} alle ${Jiffy(time.toLocal()).format('HH:mm')}'''; + + @override + String get todayLabel => 'Oggi'; + + @override + String get yesterdayLabel => 'Ieri'; + + @override + String get channelIsMutedText => 'Il canale è mutato'; + + @override + String get noTitleText => 'Nessun titolo'; + + @override + String get letsStartChattingLabel => 'Inizia una conversazione!'; + + @override + String get sendingFirstMessageLabel => + 'Che ne dici di mandare il tuo primo messaggio ad un amico?'; + + @override + String get startAChatLabel => 'Inizia una conversazione'; + + @override + String get loadingChannelsError => 'Errore durante il caricamento dei canali'; + + @override + String get deleteConversationLabel => 'Elemina conversazione'; + + @override + String get deleteConversationQuestion => + 'Sei sicuro di voler eliminare questa conversazione?'; + + @override + String get streamChatLabel => 'Stream Chat'; + + @override + String get searchingForNetworkLabel => 'Cercando una connessione'; + + @override + String get offlineLabel => 'Offline...'; + + @override + String get tryAgainLabel => 'Riprova'; + + @override + String membersCountText(int count) { + if (count == 1) return '1 membro'; + return '$count membri'; + } + + @override + String watchersCountText(int count) { + if (count == 1) return '1 Online'; + return '$count Online'; + } + + @override + String get viewInfoLabel => 'Vedi info'; + + @override + String get leaveGroupLabel => 'Esci dal gruppo'; + + @override + String get leaveLabel => 'ESCI'; + + @override + String get leaveConversationLabel => 'Esci dalla conversazione'; + + @override + String get leaveConversationQuestion => + 'Sei sicuro di voler lasciare questa conversazione?'; + + @override + String get showInChatLabel => 'Mostra nella chat'; + + @override + String get saveImageLabel => 'Salva immagine'; + + @override + String get saveVideoLabel => 'Salva video'; + + @override + String get uploadErrorLabel => 'ERRORE DURANTE IL CARICAMENTO'; + + @override + String get giphyLabel => 'Giphy'; + + @override + String get shuffleLabel => 'Shuffle'; + + @override + String get sendLabel => 'Invia'; + + @override + String get withText => 'con'; + + @override + String get inText => 'in'; + + @override + String get youText => 'te'; + + @override + String get ofText => 'di'; + + @override + String get fileText => 'file'; + + @override + String get replyToMessageLabel => 'Rispondi al messaggio'; +} diff --git a/packages/stream_chat_localizations/pubspec.yaml b/packages/stream_chat_localizations/pubspec.yaml index b755a6dd..ac999a9c 100644 --- a/packages/stream_chat_localizations/pubspec.yaml +++ b/packages/stream_chat_localizations/pubspec.yaml @@ -12,8 +12,7 @@ dependencies: sdk: flutter flutter_localizations: sdk: flutter - stream_chat_flutter: - path: ../stream_chat_flutter + stream_chat_flutter: ^2.0.0 dev_dependencies: flutter_test: